•stitch
Strain
Karma: -28
Deconectat
Mesaje: 7
|
|
« : Ianuarie 15, 2009, 10:23:14 » |
|
Trebuie sa scriu ce se va afisa in urma secventei: union {char a[15]; char b[10]; char c[25];} x; strcpy(x.a,"0123456789"); strcpy(x.b,"abcde"); cout<<x.a<<" "<<x.b<<endl; //in mod normal, s-ar afisa 0123456789 abcde, dar programul afiseaza abcde abcde strcpy(x.c,"1a2b3c4d5e"); strcpy(x.b,x.a); cout<<x.b<<" "<<x.c<<endl; //s-ar afisa 0123456789 1a2b3c4d5e, dar programul afiseaza 1a2b3c4d5e 1a2b3c4d5e Am intrebat profesorul la scoala, mai intai mi-a spus ca, compilatorul meu are o eroare; dupa ce l-a pus pe calculator, nu a inteles nimic si a spus ca nu stie de ce afiseaza astfel. Mie nu-mi place sa raman cu lucruri nelamurite. AJUTOR! [edit] Puteai folosi tag-ul "code"
|
|
« Ultima modificare: Ianuarie 15, 2009, 14:48:51 de către Sima Cotizo »
|
Memorat
|
|
|
|
•alexandru92
|
|
« Răspunde #1 : Ianuarie 15, 2009, 13:47:06 » |
|
incearca sa folosesti strcut nu union:)
|
|
|
Memorat
|
|
|
|
•stef2n
|
|
« Răspunde #2 : Ianuarie 15, 2009, 13:59:36 » |
|
Cred ca ar trebui sa te documentezi despre union. Spre deosebire de struct, la union toate variabilele se aloca in aceeasi zona de memorie. Asadar toate variabilele sunt suprapuse: b pointeaza la adresa lui a[0], c tot la fel.
|
|
|
Memorat
|
Exista 10 categorii de oameni: cei care inteleg sistemul binar si cei care nu il inteleg.
|
|
|
•stitch
Strain
Karma: -28
Deconectat
Mesaje: 7
|
|
« Răspunde #3 : Ianuarie 15, 2009, 18:38:22 » |
|
Multumesc! Un alt exemplu: char *sir[5]={"abcd","defgh","123","ab123",NULL}, *p=&sir[0][0]; cout<<*sir[0]<<" "<<*sir[0]++<<" "<<(*sir[0])++<<endl; //ar afisa a a b, dar afiseaza b b a cout<<*sir[1]<<" "<<*sir[1]++<<" "<<(*sir[1])++<<endl;// ar afisa d d e, dar afiseaza e e d cout<<*sir[2]<<" "<<*sir[2]++<<" "<<(*sir[2])++<<endl;// ar afisa 1 1 2, dar afiseaza 2 2 1 cout<<sir[1]<<" "<<sir[2][1]<<" "<<*(p+1)<<" "<<*(p+15);// ar afisa defgh 2 b a, dar afiseaza efgh 3 b a [edit] nu mai posta consecutiv, foloseste butonul de "edit"
|
|
« Ultima modificare: Ianuarie 15, 2009, 19:47:06 de către Sima Cotizo »
|
Memorat
|
|
|
|
•alexandru92
|
|
« Răspunde #4 : Ianuarie 17, 2009, 19:03:57 » |
|
Poate ti mai usor daca ai face debug pas cu pas. Atunci vezi cum merg variabilele cum sunt initializate etc. Intri in debug->watches ->add watches si introduci numele variblielor dorite apoi dai CRTL+F9 si apoi F8. Pentru Borland!
|
|
|
Memorat
|
|
|
|
•stitch
Strain
Karma: -28
Deconectat
Mesaje: 7
|
|
« Răspunde #5 : Ianuarie 21, 2009, 21:42:08 » |
|
Am facut deja asta, dar tot nimic.... Nu inteleg de ce afiseaza astfel. Nu stie nimeni? [edit] nu mai posta consecutiv (e a doua oara cand iti zic asta in acelst topic)
|
|
« Ultima modificare: Ianuarie 21, 2009, 22:04:19 de către Sima Cotizo »
|
Memorat
|
|
|
|
•sima_cotizo
|
|
« Răspunde #6 : Ianuarie 21, 2009, 22:05:32 » |
|
Incearca sa faci comenzile de afisare pe linii diferite + debug, poate te prinzi. Si incearca si sa nu mai postezi consecutiv...
|
|
|
Memorat
|
|
|
|
•stef2n
|
|
« Răspunde #7 : Ianuarie 21, 2009, 22:08:34 » |
|
Tu ce vrei sa faci cu ? Incrementezi o valoare temporara? Clarifica-ti si clarifica-ne codul.
|
|
|
Memorat
|
Exista 10 categorii de oameni: cei care inteleg sistemul binar si cei care nu il inteleg.
|
|
|
•stitch
Strain
Karma: -28
Deconectat
Mesaje: 7
|
|
« Răspunde #8 : Ianuarie 23, 2009, 11:15:29 » |
|
char *sir[5]={"abcd","defgh","123","ab123",NULL}, *p=&sir[0][0]; cout<<*sir[0]<<" "<<*sir[0]++<<" "<<(*sir[0])++<<endl; cout<<*sir[1]<<" "<<*sir[1]++<<" "<<(*sir[1])++<<endl; cout<<*sir[2]<<" "<<*sir[2]++<<" "<<(*sir[2])++<<endl; cout<<sir[1]<<" "<<sir[2][1]<<" "<<*(p+1)<<" "<<*(p+15);
Acesta este programul. Trebuie sa spun ce afiseaza. pe calculator afiseaza altceva decat este normal. De ce? Postez consecutiv pentru ca nimeni nu-mi raspunde!
|
|
« Ultima modificare: Ianuarie 23, 2009, 12:23:35 de către Stefan Istrate »
|
Memorat
|
|
|
|
•stef2n
|
|
« Răspunde #9 : Ianuarie 23, 2009, 12:49:28 » |
|
Tu ce vrei sa faci cu ? Incrementezi o valoare temporara? Clarifica-ti si clarifica-ne codul. Referitor la asta, cred ca nu e bine ce am zis. char *sir[5]={"abcd","defgh","123","ab123",NULL}, *p=&sir[0][0]; cout<<*sir[0]<<" "<<*sir[0]++<<" "<<(*sir[0])++<<endl;
Aici afiseaza "b b a" pentru ca standardul C++ nu impune o ordine a evaluarii expresiilor in cadrul aceleiasi instructiuni. In cazul de fata se evalueaza de la coada la cap, dar nu e garantat ca se va comporta la fel pe toate calculatoarele.
|
|
|
Memorat
|
Exista 10 categorii de oameni: cei care inteleg sistemul binar si cei care nu il inteleg.
|
|
|
|