Programiranje u C++-u - pitanja i odgovori izdvojena tema

poruka: 7.285
|
čitano: 1.713.868
|
moderatori: Lazarus Long, XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
17 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
rustweaver kaže...
Ad4pt3r kaže...

Jel mi možete preporučiti neku temu za seminar iz programiranja. Radili smo uglavnom gradivo do funkcija i datoteka, pa ako ima netko samo ideju za neku temu u tom rangu težine ( npr. nešto ko neki adresar sa mogučnošču pretraživanja i ažuriranja )

Pa eto, sam si si dao odgovor. Nemam pojma što se uopće još može izvesti sa tim znanjem bez da dodatno zagriješ stolicu i naučiš još toga...

  A uzeo bih tu temu da već nije zauzeta ( to sam primjer dao ). Pa mora postojati nešto slično. Samo prijedlog trebam.

We are nothing but the stones to pave the way...
13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
rustweaver kaže...

 

Mogao bih ti sada pokazati stvari koje GCC dozvoljava preko svojih ekstenzija, koje uopće nisu normalne i neće se moći kompajlirati ni sa jednim kompajlerom osim GCC-a...

evo nekih

 

Ako u kodu moraš podržati nekoliko compilera, to na kraju u praksi izgleda otprilike ovako (primjeri su iz stvarnog koda, radi se Keil-ovom USB CDC stacku za jednu implementaciju ARM Cortex-M3):

 

#if defined   (  __CC_ARM  )
#pragma diag_suppress 111,1441
#endif

#if defined   (  __GNUC__  )
#define __packed __attribute__((__packed__))
#endif

 

...i onda krene rokačina...

 

#if defined (  __IAR_SYSTEMS_ICC__  )
inline uint32_t USB_ReqGetStatus (void) {
#else 
__inline uint32_t USB_ReqGetStatus (void) {
#endif

 

...nadalje za skoro svaku funkciju ide barem ovakav #if, jer uvijek jedan proizvođač mora biti različit. :)

 

 

Deklariranje "packed" strukture izgleda naročito zanimljivo ako tri ili više compilera u igri...

 

// Union functional descriptors with one slave interface
// (usbcdc11.pdf, 5.2.3.8)
#if defined     (  __CC_ARM  )
typedef __packed struct _CDC_UNION_1SLAVE_DESCRIPTOR{
#elif defined (  __GNUC__  )
typedef struct __packed  _CDC_UNION_1SLAVE_DESCRIPTOR{
#elif defined   (  __IAR_SYSTEMS_ICC__  )
#pragma pack(1)
typedef struct _CDC_UNION_1SLAVE_DESCRIPTOR {
#endif
  CDC_UNION_DESCRIPTOR sUnion;              // Union functional descriptor
  uint8_t                 bSlaveInterfaces[1]; // Slave interface 0
} CDC_UNION_1SLAVE_DESCRIPTOR;

 

 

Svi compileri i linkeri s kojima sam do sada radio su pomalo nestandardni i nekompatibilni s bilo kojim drugim, jedino je pitanje gdje će te to dohvatiti, na uobičajenim "Hello world" stvarima, ili kod ovakvih gdje se radi nešto sa hardwareom.

15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Ad4pt3r kaže...

A uzeo bih tu temu da već nije zauzeta ( to sam primjer dao ). Pa mora postojati nešto slično. Samo prijedlog trebam.

Koliko velik taj program treba biti? Napravi program koji kriptira tekstualne datoteke xor enkripcijom.

 

Nema baš puno izbora za program bez GUI-ja koji bi koristio samo jedan ograničeni dio programskog jezika i to još bez nekakvih naprednijih algoritama.

Oscar-Mike-Golf Whiskey-Tango-Foxtrot
17 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
rustweaver kaže...
Ad4pt3r kaže...

A uzeo bih tu temu da već nije zauzeta ( to sam primjer dao ). Pa mora postojati nešto slično. Samo prijedlog trebam.

Koliko velik taj program treba biti? Napravi program koji kriptira tekstualne datoteke xor enkripcijom.

 

Nema baš puno izbora za program bez GUI-ja koji bi koristio samo jedan ograničeni dio programskog jezika i to još bez nekakvih naprednijih algoritama.

  Trebalo bi biti nekih 100-njak linija koda. Hvala na prijedlogu. A znam malo je ograničeno područje, ali to je tek uvod u programiranje pa se kod seminara moramo držati onoga što smo na kolegiju učili.

We are nothing but the stones to pave the way...
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Djuro von Prekoplotovich kaže...

Ako u kodu moraš podržati nekoliko compilera, to na kraju u praksi izgleda otprilike ovako (primjeri su iz stvarnog koda, radi se Keil-ovom USB CDC stacku za jednu implementaciju ARM Cortex-M3):


Svi compileri i linkeri s kojima sam do sada radio su pomalo nestandardni i nekompatibilni s bilo kojim drugim, jedino je pitanje gdje će te to dohvatiti, na uobičajenim "Hello world" stvarima, ili kod ovakvih gdje se radi nešto sa hardwareom.

Hehe. Da vidiš kad krene divota sa makroima za različite verzije GCC-a na jednoj te istoj platformi. Ne znaš bi li se smijao ili plakao.

 

Oscar-Mike-Golf Whiskey-Tango-Foxtrot
Poruka je uređivana zadnji put pon 11.6.2012 20:57 (rustweaver).
13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Ad4pt3r kaže...

  Trebalo bi biti nekih 100-njak linija koda. Hvala na prijedlogu. A znam malo je ograničeno područje, ali to je tek uvod u programiranje pa se kod seminara moramo držati onoga što smo na kolegiju učili.

Nemoj spominjati linije kôda, one ne predstavljaju ništa.

A kao što ti je rustweaver rekao, nemaš puno izbora.

A šta fali nekom Bookmark Manageru?

17 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
royalhero kaže...
Ad4pt3r kaže...

  Trebalo bi biti nekih 100-njak linija koda. Hvala na prijedlogu. A znam malo je ograničeno područje, ali to je tek uvod u programiranje pa se kod seminara moramo držati onoga što smo na kolegiju učili.

Nemoj spominjati linije kôda, one ne predstavljaju ništa.

A kao što ti je rustweaver rekao, nemaš puno izbora.

A šta fali nekom Bookmark Manageru?

  Pa ništa. Ali problem je kaj je ta tema već zauzeta, pa ne smijem to više. Morati ću onda XOR ako ništa drugo nema.

We are nothing but the stones to pave the way...
13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Ad4pt3r kaže...

  Pa ništa. Ali problem je kaj je ta tema već zauzeta, pa ne smijem to više. Morati ću onda XOR ako ništa drugo nema.

Ok!, pa pozabavi se onda sa tim XOR-om, sretno!

17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Ad4pt3r kaže...

Pa ništa. Ali problem je kaj je ta tema već zauzeta, pa ne smijem to više. Morati ću onda XOR ako ništa drugo nema.

Samo imaj na umu da s tim ne mozes prevelike kljuceve za kriptiranje koristiti vec neke krace.

C provides a programmer with more than enough rope to hang himself. C++ provides a firing squad, blindfold and last cigarette.
Poruka je uređivana zadnji put pon 11.6.2012 21:35 (1domagoj1).
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
Ad4pt3r kaže...

ali to je tek uvod u programiranje pa se kod seminara moramo držati onoga što smo na kolegiju učili.

Iskreno, mislim da ti nitko neće zamjerati ako napraviš program kompliciraniji od onoga što ste do sada učili. Pod uvjetom da je znanje doista tvoje, a ne da ti je neko nakucao nešto što kasnije nećeš znati kako radi.

 

Evo još jedan prijedlog. Konzolni program za konverziju teksta kodiranog u različitim kodnim stranicama u UTF-8 (na C temi je netko pisao puno ograničeniju i nemodularnu verziju). I još dodaš mogućnost pretvaranja CR LF sekvenca (krajevi linija na windows način) u LF sekvence i obratno.

Oscar-Mike-Golf Whiskey-Tango-Foxtrot
17 godina
offline
Programiranje u C++-u - pitanja i odgovori

Hvala na prijedlozima, budem proučil teme.

We are nothing but the stones to pave the way...
 
0 0 hvala 0
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
1domagoj1 kaže...

Samo imaj na umu da s tim ne mozes prevelike stringove kriptirati vec neke krace.

Misliš zbog sigurnosti? Ma daj, znam gro igara koje svoje data fajlove kriptiraju xor enkripcijom i jednim jedinim ključem. Jest da "velikim hakerima" to ne predstavlja veliku prepreku, ali dovoljna je da one znatiželjnije drži podalje.

 

A sada ako bi imao ključ koji je dulji od podatka koji se kriptira i koji se koristi samo jednom, onda stvari postaju zanimljive.

Oscar-Mike-Golf Whiskey-Tango-Foxtrot
17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
rustweaver kaže...

Misliš zbog sigurnosti? Ma daj, znam gro igara koje svoje data fajlove kriptiraju xor enkripcijom i jednim jedinim ključem. Jest da "velikim hakerima" to ne predstavlja veliku prepreku, ali dovoljna je da one znatiželjnije drži podalje.

 

A sada ako bi imao ključ koji je dulji od podatka koji se kriptira i koji se koristi samo jednom, onda stvari postaju zanimljive.

Ma i ja ga bubnem, sad sam videl tek. Ma mislio sam na kljuceve, jer bi doslo do komplikacija ako je podatak slican kljucu s kojim se sifrira.

C provides a programmer with more than enough rope to hang himself. C++ provides a firing squad, blindfold and last cigarette.
15 godina
neaktivan
offline
Programiranje u C++-u - pitanja i odgovori

#include <iostream>
#include <string>

using namespace std;

int main()
{   int gdje,i,brojac;
    string prviString="kokodako",drugiString="ko";

    while(1){
        if(gdje==string::npos)
            break;
        gdje=prviString.find(drugiString,0);
        brojac++;
        prviString.erase(gdje,drugiString.size());

    }
    for(i=0;i<brojac;i++)
        prviString+=drugiString;

    cout << prviString;

    return 0;
}

 

Zadatak: Napišite program koji učitava dva stringa A i b te svaku pojavu drugog stringa kao podstringa u prvom stringu premješta na kraj prvog stringa.

* npr. ako je A="kokodako" i b="ko", onda po izlasku iz programa treba vrijediti A="dakokoko".

 Može pomoć ?

edit: riješio brojac nisam inicijalizirao na 0 i ovaj if ide iza gdje=prviString.find(drugiString,0);

Poruka je uređivana zadnji put uto 12.6.2012 17:09 (bandito).
 
0 0 hvala 0
13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Eh previše koristiš ugrađene funkcije za string...

15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
royalhero kaže...

Eh previše koristiš ugrađene funkcije za string...

Imaš neko bolje rješenje?

17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
royalhero kaže...

Eh previše koristiš ugrađene funkcije za string...

Zasto bi to bilo lose? Pa ako vec ima ponudeno, zasto ne iskoristiti? Bolje nego da ide izmisljati toplu vodu i petljati s poljima.

 

Reuse i reusability!

C provides a programmer with more than enough rope to hang himself. C++ provides a firing squad, blindfold and last cigarette.
15 godina
offline
Re: Programiranje u C++-u - pitanja i odgovori
1domagoj1 kaže...

Zasto bi to bilo lose? Pa ako vec ima ponudeno, zasto ne iskoristiti? Bolje nego da ide izmisljati toplu vodu i petljati s poljima.

 

Reuse i reusability!

No mislim da su neke ugradene klase i objekti(string, cin i cout) ipak za neke stvari prespori. Zato ako bas pise algoritme za natjecanja onda smatram da bi bilo bolje koristiti char* umjesto string jer mu se tu mjeri svaka milisekunda.

Twitter- @capttawish Linux/GNU live forever.
17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
captain_soap_McTawish kaže...

No mislim da su neke ugradene klase i objekti(string, cin i cout) ipak za neke stvari prespori. Zato ako bas pise algoritme za natjecanja onda smatram da bi bilo bolje koristiti char* umjesto string jer mu se tu mjeri svaka milisekunda.

To je druga stvar, i to je istina. Mjerili smo recimo razliku u brzini izvrsavanja na zadatku Mravci (tako nesto) sa cin i cout objektima te printf i scanf funkcijama, cin i cout nisu ni prolazili vremensku, dok je s printf i scanf letjelo.

C provides a programmer with more than enough rope to hang himself. C++ provides a firing squad, blindfold and last cigarette.
13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
1domagoj1 kaže...

Zasto bi to bilo lose? Pa ako vec ima ponudeno, zasto ne iskoristiti? Bolje nego da ide izmisljati toplu vodu i petljati s poljima.

 

Reuse i reusability!

Pa zato što svatko može koristiti te metode, a da ne zna šta one u biti rade. To je lako, ali ako uči programiranje / natječe se, bolje bi bilo da taj kôd i razumije, ovako nema smisla.
Mislim da znaš šta ti hoću reći.

17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
royalhero kaže...

Pa zato što svatko može koristiti te metode, a da ne zna šta one u biti rade. To je lako, ali ako uči programiranje / natječe se, bolje bi bilo da taj kôd i razumije, ovako nema smisla.
Mislim da znaš šta ti hoću reći.

Kako ne bih znao sto radi? Evo recimo find(). Prima dva iteratora i vrijednost za usporedbu. Vraca iterator tamo gdje matcha. To mi je dovoljno da znam sto ta funkcija radi i kako ju koristiti, a kako ona interno radi, nije me niti briga, jer je upravo to i poanta OOP-a.

 

A posto je sam taj kod napisao (bar se nadam) onda ga valjda i razumije. Druga je stvar, kao sto je vec i captain_soap_McTawish rekao, ako radi to za natjecanje, onda bi ga zbog sporosti nekih objekata/funkcija to moglo kostati vremenske i tu treba malo zasukati rukave.

 

Ali u suprotnom slucaju ne vidim nikakve prepreke zasto ne bi koristio te funkcije, pa sastavni su dio STL-a i nikako se ne slazem da nema smisla i da ih ne bi trebao koristiti (osim naravno, ako je natjecanje u pitanju).

C provides a programmer with more than enough rope to hang himself. C++ provides a firing squad, blindfold and last cigarette.
13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

A dobro, ja sam išao na to da taj gore nauči kako se pronalazi neki član jednog niza u drugom, ali dobro, ako mu ne smeta što ne razumije šta je ispod haube, neka ih koristi.
Zanemari... {#}

Poruka je uređivana zadnji put uto 12.6.2012 20:40 (royalhero).
17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
royalhero kaže...

A dobro, ja sam išao na to da taj gore nauči kako se pronalazi neki član jednog niza u drugom, ali dobro, ako mu ne smeta što ne razumije šta je ispod haube, neka ih koristi.
Zanemari... {#}

Ne, pa sve ok, svatko ima svoje misljenje, pa tome i sluzi forum, da raspravljamo. Nije tvoje razmisljanje krivo da se razumijemo, ali eto ja smatram da nije lose koristiti i gotove funkcije iz STL-a, dapace. ;)

C provides a programmer with more than enough rope to hang himself. C++ provides a firing squad, blindfold and last cigarette.
15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
CovjekToplomjer kaže...

Zna li netko npr. kako bih mogao napravit neku igricu u c++ a sad da ne bude ono banalna(par-nepar) a niti prekompleksna a u opet donekle zabavna i zanimljiva niti ne mora biti originalna,

u biti samo trazim pocetnu ideju da se imam s čim zabavljati.

 

Npr. palo mi je napamet teris sloziti samo moze li mi netko rec objektivno jeli to prekompleksno za nekoga tko se  ozbiljnije bavi c++ tek par mjeseci.

 

Kao što su ti već predložili, SDL ti je dobar za početak.
Probaj napravit nešto poput ovoga ako nađem kod mogu ti poslat.
btw evo ti i moj projekt za natjecanje napravljen samo s SDL-om  (ovo nije zadnja verzija tako da ima dosta bugova)

13 godina
protjeran
offline
Programiranje u C++-u - pitanja i odgovori

Imam trinaest godina, i poceo sam uciti c++ po knjizi "Sams teaches you C++ in 21 days 5th Edition". Knjiga je odlicna, i preporucio bih je svakome tko zeli nauciti C++, sve je dobro objašjneno, ali nije ni prejednostavna. Za sad sam procitao 180 strana, pa sam danas isao isprobati nauceno. Napravio sam jednostavan program za preracunavanje Kelvina u Celzijus i obrnuto, i za preracunavanje Farenheita u Celzijus i obrnuto. Zelio bih cuti vase misljenje o programu. 

 

EDIT: Ispricavam se za neuredan kod. {#}

 

 

 

 

#include <iostream>

#include <vector>

#include <string> 

#include "fDek.h" //Header file

 

using namespace std; 

 

double celzijusKelvin ( double celzijus ) 

 

{

return celzijus + 273;

}

 

double kelvinCelzijus ( double kelvin ) 

 

{

return kelvin - 273;

}

 

double farenheitCelzijus ( double farenheit )

 

{

return ( farenheit - 32 ) * 5/9; 

}

 

double celzijusFarenheit ( double celzijus ) 

 

{

 

return celzijus * 9/5 + 32; 

 

}

 

int main() 

 

{

 

double brojSelektor, celzijus, kelvin, rezultatK, rezultatC, rezultatF, rezultatCf, farenheit;   

 

cout << "Kelvin - Celzijus kalkulator v1.0." << endl << endl; 

 

cout << "Odaberi opciju:" << endl << endl; 

 

cout << "1 - Celzijus - Kelvin" << endl << endl;  

cout << "2 - Kelvin - Celzijus" << endl << endl;  

cout << "3 - Fahreneit - Celzijus" << endl << endl;  

cout << "4 - Celzijus - Fahreneit " << endl << endl;  

 

cout << "Opcija: "; 

 

cin >> brojSelektor; 

 

cout << endl; 

 

if ( brojSelektor == 1 )

 

{

 

cout << "Preracunavanje Celzijusa u Kelvine." << endl;

 

cout << "Upisi Celzijus: "; 

 

cin >> celzijus; 

 

cout << endl;   

 

 

 

rezultatK = celzijusKelvin ( celzijus );

 

cout << "Temperatura u Kelvinima je: " << rezultatK << "K" << endl;

 

}

 

else if ( brojSelektor == 2 )  

 

{

cout << "Preracunavanje Kelvina u Celzijuse." << endl;

 

cout << "Upisi Kelvine: "; 

 

cin >> kelvin; 

 

cout << endl;  

 

 

rezultatC = kelvinCelzijus ( kelvin ); 

 

cout << "Temperatura u Celzijusima je: " << rezultatC << "C" << endl;

 

 

}

 

else if ( brojSelektor == 3 )

 

{

cout << "Preracunavanje Farenheita u Celzijuse." << endl;

 

cout << "Upisi Farenheite: "; 

 

cin >> farenheit; 

 

cout << endl;  

 

 

rezultatF = farenheitCelzijus ( farenheit ); 

 

cout << "Temperatura u Celzijusima je: " << rezultatF << "C" << endl;

 

 

}

 

else if ( brojSelektor == 4 )

 

{

cout << "Preracunavanje Celzijusa u Farenheite." << endl;

 

cout << "Upisi Celzijuse: "; 

 

cin >> celzijus; 

 

cout << endl;  

 

 

rezultatCf = celzijusFarenheit ( celzijus ); 

 

cout << "Temperatura u Farenheitima je: " << rezultatCf << "F" << endl;

 

 

}

 

else 

 

{

 

cout << "Pogresan unos, pokusajte ponovo pokrenuti program!" << endl << endl; 

 

}

 

 

system ( "pause" ); 

 

}

 

Poruka je uređivana zadnji put sri 13.6.2012 11:51 (YoursTruly).
 
0 0 hvala 0
13 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori

Nakraju funkcije main vrati nulu.

return 0;

 

Nije valjda da to fali u knjizi?

15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
YoursTruly kaže...
EDIT: Ispricavam se za neuredan kod.

 

Mali trik na ovom forumu: kopiraj kod, u forumskom editoru u praznoj liniji prebaci stil na kod stil i zalijepi kod.

Oscar-Mike-Golf Whiskey-Tango-Foxtrot
13 godina
protjeran
offline
Re: Programiranje u C++-u - pitanja i odgovori
royalhero kaže...

Nakraju funkcije main vrati nulu.

return 0;

 

Nije valjda da to fali u knjizi?

Radim u Visual Studio 11 Beti. Ako stavim "return 0;", prozor komande linije mi se samo otvori i nakon 1 sekundu zatvori, a ako stavim system ("pause"), sve radi normalno.

 

P.S. Ovo mi se samo događa sa Visual Studiom, npr. u Code Blocksu mi sve radi normalno.

15 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
YoursTruly kaže...

Radim u Visual Studio 11 Beti. Ako stavim "return 0;", prozor komande linije mi se samo otvori i nakon 1 sekundu zatvori, a ako stavim system ("pause"), sve radi normalno.

 

P.S. Ovo mi se samo događa sa Visual Studiom, npr. u Code Blocksu mi sve radi normalno.

Visual Studio isto ima mogućnost pauziranja programa po izlasku tako da ne moraš koristiti system("pause"). Što se tvog problema tiče, return 0; bi trebao staviti na posljednju liniju u funkciji. Ono što ti royalhero pokušava reći jest da ti kraj funkcije treba ovako nekako izgledati:

 

    ...
    system("pause");
    return 0;
}

 

Kada pokrećeš program u Visual Studiu probaj sa Ctrl + F5, tada ti neće trebati system("pause");

Oscar-Mike-Golf Whiskey-Tango-Foxtrot
17 godina
neaktivan
offline
Re: Programiranje u C++-u - pitanja i odgovori
YoursTruly kaže...

Radim u Visual Studio 11 Beti. Ako stavim "return 0;", prozor komande linije mi se samo otvori i nakon 1 sekundu zatvori, a ako stavim system ("pause"), sve radi normalno.

 

P.S. Ovo mi se samo događa sa Visual Studiom, npr. u Code Blocksu mi sve radi normalno.

Po standardu svaka funkcija mora vratiti onaj tip kojeg je tipa, osim void funkcije, ona ne vraca nista. Posto je main() tipa int, tj. integer, mora vratiti integer, tj. nulu. Takoder po standardu main mora biti tipa int, standard ne dozvoljava niti jedan drugi tip (tako da je void main() pogresno!).

C provides a programmer with more than enough rope to hang himself. C++ provides a firing squad, blindfold and last cigarette.
E-mail:
Lozinka:
 
vrh stranice