Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Afisare  (Citit de 5939 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
stitch
Strain


Karma: -28
Deconectat Deconectat

Mesaje: 7



Vezi Profilul
« : Ianuarie 15, 2009, 10:23:14 »

 Brick wall
   Trebuie sa scriu ce se va afisa in urma secventei:

Cod:
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.  Brick wall  Brick wall  Brick wall  Fighting 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
Nu mai tace
*****

Karma: -191
Deconectat Deconectat

Mesaje: 496



Vezi Profilul
« Răspunde #1 : Ianuarie 15, 2009, 13:47:06 »

incearca    sa  folosesti  strcut  nu  union:)
Memorat
stef2n
Nu mai tace
*****

Karma: 218
Deconectat Deconectat

Mesaje: 641



Vezi Profilul
« Răspunde #2 : Ianuarie 15, 2009, 13:59:36 »

Cred ca ar trebui sa te documentezi despre union. Smile 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 Deconectat

Mesaje: 7



Vezi Profilul
« Răspunde #3 : Ianuarie 15, 2009, 18:38:22 »

      Multumesc!  Yahoo!

     Un alt exemplu: Confused
Cod:
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
Nu mai tace
*****

Karma: -191
Deconectat Deconectat

Mesaje: 496



Vezi Profilul
« 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 Deconectat

Mesaje: 7



Vezi Profilul
« Răspunde #5 : Ianuarie 21, 2009, 21:42:08 »

         Am facut deja asta, dar tot nimic.... Nu inteleg de ce afiseaza astfel. Surprised
    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
Nu mai tace
*****

Karma: 219
Deconectat Deconectat

Mesaje: 596



Vezi Profilul
« 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
Nu mai tace
*****

Karma: 218
Deconectat Deconectat

Mesaje: 641



Vezi Profilul
« Răspunde #7 : Ianuarie 21, 2009, 22:08:34 »

Tu ce vrei sa faci cu
Cod:
(*sir[0])++
? Incrementezi o valoare temporara? Confused 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 Deconectat

Mesaje: 7



Vezi Profilul
« Răspunde #8 : Ianuarie 23, 2009, 11:15:29 »

Cod:
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! peacefingers
« Ultima modificare: Ianuarie 23, 2009, 12:23:35 de către Stefan Istrate » Memorat
stef2n
Nu mai tace
*****

Karma: 218
Deconectat Deconectat

Mesaje: 641



Vezi Profilul
« Răspunde #9 : Ianuarie 23, 2009, 12:49:28 »

Tu ce vrei sa faci cu
Cod:
(*sir[0])++
? Incrementezi o valoare temporara? Confused Clarifica-ti si clarifica-ne codul.
Referitor la asta, cred ca nu e bine ce am zis.

Cod:
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.
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines