•Bloodyf
Strain
Karma: -4
Deconectat
Mesaje: 4
|
|
« : Decembrie 19, 2008, 16:59:52 » |
|
Am si eu o problema sunt in clasa a x-a si eu si nu stiu cum sa fac sa mearga un algoritm care ma ajuta plz imi trebuie acu adica pana in ora 6 nu mai stiu ce sa ii fac : Enunt: Se cit 2 siruri de caract de la tast. SA se afiseze cuvintele comune. #include <iostream.h> #include <conio.h> #include <string.h> void main() { clrscr(); //Am incercat sa il fac dar pur si simplu nu gasesc cum. De o zi jumatate stau la el si nu mai am idei cum sa il fac... //... am incercat sa il testez cu watch .. nimic. Imi sare peste cuvinte si nu le compara ... nu mai am nici o idee ... char s1[256],s2[256],s3[]=" .,!?",*p,*o; int i,gasit; cout<<"Introduceti primul text de la tastatura : \n"; cin.get(s1,255); cin.get(); cout<<"\n\nIntroduceti al doilea text de la tastatura : \n"; cin.get(s2,255); cin.get(); cout<<"\n\nCuvintele comune sunt : "; p=strtok(s1,s3); o=strtok(s2,s3); while (p) { if (stricmp(p,o)==0) cout<<p<<"\n"; //o=o+1; //o=strchr(o,NULL)+1; o=strtok(o,s3); o=strtok(NULL,s3); if (!(o)) { // p=p+1; // p=strchr(p,NULL)+1; p=strtok(p,s3); p=strtok(NULL,s3); o=s2; } } getch(); }
vreau si eu sugestii ca sa mearga sau daca nu o metoda noua ...
|
|
« Ultima modificare: Decembrie 19, 2008, 18:53:04 de către Savin Tiberiu »
|
Memorat
|
|
|
|
•Mishu91
|
|
« Răspunde #1 : Decembrie 19, 2008, 17:13:27 » |
|
Incearca sa iti faci un sir cu cuvintele celor doua texte, iar apoi cauti fiecare cuvant al primului text in cel de-al doilea text, si daca exista, il afisezi
|
|
|
Memorat
|
|
|
|
•Bloodyf
Strain
Karma: -4
Deconectat
Mesaje: 4
|
|
« Răspunde #2 : Decembrie 19, 2008, 17:15:41 » |
|
hehe pai daca l-ai baga in C++ ai vedea in watch ca mie imi sare peste cuvinte deci eu le pun acolo dar el nu afiseaza nimic incearca sa vezi cum o sa te roada problema asta .. sau scrie si mie o metoda cum sa fac altfel plz
|
|
|
Memorat
|
|
|
|
•Mishu91
|
|
« Răspunde #3 : Decembrie 19, 2008, 17:18:48 » |
|
Din cate vad tu desparti in cuvinte cele doua siruri in acelasi timp(ceea ce nu este foarte indicat, fiind doarte posibil sa crape). Incearca sa-l desparti pe primul si apoi pe al doilea
|
|
|
Memorat
|
|
|
|
•Bloodyf
Strain
Karma: -4
Deconectat
Mesaje: 4
|
|
« Răspunde #4 : Decembrie 19, 2008, 17:20:33 » |
|
ok si daca eu il despart pe primul si dupa pe al doilea cum fac asta ... ca mi-au pierit toate ideile ... nu inteleg cum as putea sa fac decat cu 2 while dar deja imi bubuie capu ...
|
|
|
Memorat
|
|
|
|
•Mishu91
|
|
« Răspunde #5 : Decembrie 19, 2008, 17:25:57 » |
|
char m1[30][256]; //in acest sir de stringuri vei retine cuvintele din s1 char m2[30][256]; //in acest sir de stringuri vei retine cuvintele din s2 int n1 = 0, n2 = 0; // numaru de cuvinte din cele doua siruri
char *p = strtok(s1, s3); while(p) { strcpy(m1[++n1], p); p = strtok(NULL, s3); }
//Analog si pentru s2 //iar de aici compari fiecare cuvant din m1 cu fiecare cuvant din m2, si daca sunt egale afisezi
|
|
|
Memorat
|
|
|
|
•Bloodyf
Strain
Karma: -4
Deconectat
Mesaje: 4
|
|
« Răspunde #6 : Decembrie 19, 2008, 17:30:21 » |
|
char m1[30][256]; //in acest sir de stringuri vei retine cuvintele din s1 char m2[30][256]; //in acest sir de stringuri vei retine cuvintele din s2 int n1 = 0, n2 = 0; // numaru de cuvinte din cele doua siruri
char *p = strtok(s1, s3); while(p) { strcpy(m1[++n1], p); p = strtok(p, s3); }
//Analog si pentru s2 //iar de aici compari fiecare cuvant din m1 cu fiecare cuvant din m2, si daca sunt egale afisezi
nu am facut vectori bidimensionali de siruri de char asa ca nu prea pot folosi asta ( trb ceva ce am facut .. [editat de moderator] cand postezi cod foloste tagul code
|
|
« Ultima modificare: Decembrie 19, 2008, 18:54:17 de către Savin Tiberiu »
|
Memorat
|
|
|
|
•devilkind
|
|
« Răspunde #7 : Decembrie 19, 2008, 18:57:48 » |
|
Poti sa parcurgi primul text cu doi indici i, j, unde i reprezinta caracterul curent iar j pointeaza catre ultimul spatiu gasit, astfel ti-ai delimitat o secventa de caractere care reprezinta un cuvant. Acuma nu mai trebuie decat ptr fiecare secventa sa vezi daca apare si in al doilea sir, ceea ce poti face usor cu inca 2 foruri.
|
|
|
Memorat
|
|
|
|
•alexandru92
|
|
« Răspunde #8 : Ianuarie 05, 2009, 16:54:15 » |
|
Hm ok doi vector: #include<iostream.h> #include<string.h> #include<conio.h> #define Nmax 101 #define subp ",.;:!?123456789 " char v[Nmax],c[Nmax]; void main() {clrscr(); cout<<"Primul sir:"; cin.get(v,Nmax); cin.get(); cout<<"Al doilea sir:"; cin.get(c,Nmax); char *p=strtok(v,subp); while(p) {if(strstr(c,p)) cout<<p<<endl; p=strtok(NULL,subp); } getche(); }
Sry am uitat sa explic ce am facut Pai citesc cei 2 vectori (v si c) apoi parcurg cu ajutorul functiei strtok fiecare cuvant din vectoru v. Daca acel cuvant se gaseste in vectorul c, verific folosind strstr, atunci il afisez, daca nu continui cautarea Simplu si la obiect [editat de moderator] nu mai posta consecutiv, editeaza-ti mesajele anterioare!
|
|
« Ultima modificare: Ianuarie 05, 2009, 20:08:06 de către alexandru »
|
Memorat
|
|
|
|
|