TEST101 Posted June 11, 2014 Report Posted June 11, 2014 Imi poate scrie cineva un cod in C/C++ care sa citeasca niste numere de la tastatura si apoi sa spuna cate din numerele citite sunt consecutive ?Nu am scris nimic fiindca nu am nici o idee cum sa fac chestia asta...Multumesc ! Quote
SticKyWoX Posted June 11, 2014 Report Posted June 11, 2014 Consecutive de genul:1. Introduci: 1, 2, 3, 5, 6, 7, 4 -> iti afiseaza 32. Introduci: 1, 2, 3, 5, 6, 7, 4 -> iti afiseaza 7Care din cele 2? Quote
H3xoR Posted June 11, 2014 Report Posted June 11, 2014 (edited) Dac? vrei s?-?i afi?eze num?rul de numere consecutive f?r? întrerupere, ai urm?toarea func?ie:int Numarul_De_Numere_Consecutive_Fara_Intrerupere(int v[], int n){ for (int i = 0; i < n - 1; i++) if (v[i] + 1 != v[i + 1]) return i + 1; return n;}?i se folose?te a?a:#include <iostream>using namespace std;int Numarul_De_Numere_Consecutive_Fara_Intrerupere(int v[], int n){ for (int i = 0; i < n - 1; i++) if (v[i] + 1 != v[i + 1]) return i + 1; return n;}int main(){ int v[100], n; cout << "n = ", cin >> n; for (int i = 0; i < n; i++) cout << "v[" << i << "] = ", cin >> v[i]; [B]cout << Numarul_De_Numere_Consecutive_Fara_Intrerupere(v, n) << endl;[/B] system("PAUSE"); return 0;} Edited June 11, 2014 by H3xoR Quote
TEST101 Posted June 11, 2014 Author Report Posted June 11, 2014 @SticKyWoX Am uitat sa precizez, imi cer scuze.Si anume ca:1. Numerele nu e neaparat sa fie ordonate crescator sau descrescator, pot fi si aleator (adesea).2. Daca ii dai: 1,2,3, 23, 24, 25 iti va afisa 3. Daca sunt 3 consecutive si altele 4 consecutive: 1,2,3,4, 23,24,25 iti va afisa 4. Afiseaza numarul cel mai mare de numere consecutive.3. La 1,2,3,4,5,6,7 va afisa 7 dar si la 1, 2, 3, 5, 6, 7, 4 iti va afisa tot 7. Numerele nu sunt neaparat in ordine crescatoare sau descrescatoare.Multumesc mult si scuze ca am uitat de asta (asa mi se mai intampla, presupun ca ce stiam eu stiti deja si voi si am omis sa va mai spun, scuze). Quote
H3xoR Posted June 11, 2014 Report Posted June 11, 2014 (edited) @SticKyWoX Am uitat sa precizez, imi cer scuze.Si anume ca:1. Numerele nu e neaparat sa fie ordonate crescator sau descrescator, pot fi si aleator (adesea).2. Daca ii dai: 1,2,3, 23, 24, 25 iti va afisa 3. Daca sunt 3 consecutive si altele 4 consecutive: 1,2,3,4, 23,24,25 iti va afisa 4. Afiseaza numarul cel mai mare de numere consecutive.3. La 1,2,3,4,5,6,7 va afisa 7 dar si la 1, 2, 3, 5, 6, 7, 4 iti va afisa tot 7. Numerele nu sunt neaparat in ordine crescatoare sau descrescatoare.Multumesc mult si scuze ca am uitat de asta (asa mi se mai intampla, presupun ca ce stiam eu stiti deja si voi si am omis sa va mai spun, scuze).int Numarul_Maxim_De_Numere_Consecutive(int v[], int n){ //Sortam vectorul crescator bool verificat; do { verificat = true; for (int i = 0; i < n - 1; i++) if (v[i] > v[i + 1]) { int aux = v[i]; v[i] = v[i + 1]; v[i + 1] = aux; verificat = false; } } while (!verificat); //Cautam cel mai mare sir consecutiv int max = 1, k = 1; for (int i = 0; i < n - 1; i++) if (v[i] + 1 == v[i + 1]) k++; else { if (max < k) max = k; k = 1; } if (max < k) max = k; return max;}Nu e cea mai optim? variant? dar m?car este una func?ional? .Baft?. Edited June 11, 2014 by H3xoR 1 Quote
bcman Posted June 11, 2014 Report Posted June 11, 2014 (edited) #include <iostream>using namespace std;int main(){ unsigned n, nr=1, rez=0; int a[50]; cin>>n; //nr de numere cin>>a[0]; for (unsigned i=1;i<n;i++) { cin>>a[i]; if (a[i]==a[i-1]+1) nr++; else nr=0; if (nr>rez) rez=nr; } cout << rez; return 0;} Edited June 13, 2014 by bcman 1 Quote
H3xoR Posted June 11, 2014 Report Posted June 11, 2014 #include <iostream>using namespace std;int main(){ unsigned n, nr=0, rez=0; int a[50]; cin>>n; //nr de numere cin>>a[0]; for (unsigned i=1;i<n;i++) { cin>>a[i]; if (a[i]==a[i-1]+1) nr++; else nr=0; if (nr>rez) rez=nr; } cout << rez; return 0;}Codul t?u e gre?it, nu respect? cerin?a lui. Quote
bcman Posted June 11, 2014 Report Posted June 11, 2014 (edited) Ce anume nu respect?? Edited June 13, 2014 by bcman Quote
H3xoR Posted June 11, 2014 Report Posted June 11, 2014 Ce anume nu respec??1) 1, 2, 3, 24, 25, 26 => programul t?u afi?eaz? 2, trebuie 32) 1, 2, 3, 4, 23, 24, 25 => programul t?u afi?eaz? 3, trebuie 43) 1, 2, 3, 5, 6, 7, 4 => programul t?u afi?eaz? 2, trebuie 7S? spunem c? primele dou? cazuri pot fi rezolvate ad?ugând un +1 la rezultat, dar la cerin?a a 3-a.. nu prea se poate rezolva f?r? o sortare pentru c? respectivul ?ir e posibil s? nu fie ordonat ?i omi?i multe elemente care ar putea fi consecutive, dup? cum spune el în cerin??.Sper s? nu o iei în nume de r?u, doar am scris s? ?tie b?iatul c? nu e potrivit codul t?u în totalitate cu cerin?a lui. Poate are nevoie s?-?i scoat? media sau ceva ?i decât s? ri?te.. mai bine s? mearg? la sigur.Înc? o dat? scuze dac? te-am ofensat, nu a fost asta inten?ia. Quote
TEST101 Posted June 11, 2014 Author Report Posted June 11, 2014 Multumesc mult pentru ajutor tuturor ! Quote
bcman Posted June 13, 2014 Report Posted June 13, 2014 1) 1, 2, 3, 24, 25, 26 => programul t?u afi?eaz? 2, trebuie 32) 1, 2, 3, 4, 23, 24, 25 => programul t?u afi?eaz? 3, trebuie 43) 1, 2, 3, 5, 6, 7, 4 => programul t?u afi?eaz? 2, trebuie 7S? spunem c? primele dou? cazuri pot fi rezolvate ad?ugând un +1 la rezultat, dar la cerin?a a 3-a.. nu prea se poate rezolva f?r? o sortare pentru c? respectivul ?ir e posibil s? nu fie ordonat ?i omi?i multe elemente care ar putea fi consecutive, dup? cum spune el în cerin??.Sper s? nu o iei în nume de r?u, doar am scris s? ?tie b?iatul c? nu e potrivit codul t?u în totalitate cu cerin?a lui. Poate are nevoie s?-?i scoat? media sau ceva ?i decât s? ri?te.. mai bine s? mearg? la sigur.Înc? o dat? scuze dac? te-am ofensat, nu a fost asta inten?ia.Acum m-am uitat m-ai atent. Ai dreptate când spui c? nu returneaz? bine, nu ai dreptate cu motivul. Programul e bun, singura gre?eal? e c? am început cu nr de la 0, nu de la 1 cum ar fi trebuit. Pentru c? dac? introduceam 1 ?i 2, programul meu afi?a doar 1, neluând în calcul ?i primul num?r. Exemplul 3 dat de tine e gre?it, nu trebuie s? afi?eze 7, ci 3. Iar programul meu afi?a 2 (exact cum am spus mai sus). Am modificat acuma ?i am început cu nr de la 1 ?i acum e bine.Stai lini?tit, nu sunt ofensat de critic?, dac? aceasta e f?cut? cu inten?ii bune. Quote
djxpaul Posted June 13, 2014 Report Posted June 13, 2014 #include <iostream>#include <fstream>using namespace std;int main(){ ifstream fin("numere.in"); unsigned long n, nr; int count = 1; fin>>n; nr = n; while( fin>>n ) { if( n-1 == nr ) count++; nr = n; } if( count == 1 ) cout<<"Nu exista numere consecutive!"; else cout<<"Exista "<<count<<" numere consecutive!"; return 0;}Ceva mai eficient. Te rog sa-l testezi Quote
H3xoR Posted June 13, 2014 Report Posted June 13, 2014 (edited) Acum m-am uitat m-ai atent. Ai dreptate când spui c? nu returneaz? bine, nu ai dreptate cu motivul. Programul e bun, singura gre?eal? e c? am început cu nr de la 0, nu de la 1 cum ar fi trebuit. Pentru c? dac? introduceam 1 ?i 2, programul meu afi?a doar 1, neluând în calcul ?i primul num?r. Exemplul 3 dat de tine e gre?it, nu trebuie s? afi?eze 7, ci 3. Iar programul meu afi?a 2 (exact cum am spus mai sus). Am modificat acuma ?i am început cu nr de la 1 ?i acum e bine.Stai lini?tit, nu sunt ofensat de critic?, dac? aceasta e f?cut? cu inten?ii bune.Scuze c? iar intervin s? te corectez dar, nu ai dreptate.. b?iatul a spus foarte clar în cerin??:@SticKyWoX Am uitat sa precizez, imi cer scuze.Si anume ca:1. Numerele nu e neaparat sa fie ordonate crescator sau descrescator, pot fi si aleator (adesea).2. Daca ii dai: 1,2,3, 23, 24, 25 iti va afisa 3. Daca sunt 3 consecutive si altele 4 consecutive: 1,2,3,4, 23,24,25 iti va afisa 4. Afiseaza numarul cel mai mare de numere consecutive.3. La 1,2,3,4,5,6,7 va afisa 7 dar si la 1, 2, 3, 5, 6, 7, 4 iti va afisa tot 7. Numerele nu sunt neaparat in ordine crescatoare sau descrescatoare.Multumesc mult si scuze ca am uitat de asta (asa mi se mai intampla, presupun ca ce stiam eu stiti deja si voi si am omis sa va mai spun, scuze).Programul trebuie s? afi?eze 7 la cerin?a 3) pentru c? ?irul con?ine numere care sunt strict cresc?toare doar c? nu se afl? în ordine, lucru care este specificat în cerin?? ca fiind posibil.Nu pricep de ce nu cite?ti mai cu aten?ie ce a scris b?iatul ?i exemplele date de el, la program.. în loc s? m? contrazici pe mine, de parc? sunt eu vinovat c? nu ai în?eles ce trebuie s? fac? programul.#include <iostream>#include <fstream>using namespace std;int main(){ ifstream fin("numere.in"); unsigned long n, nr; int count = 1; fin>>n; nr = n; while( fin>>n ) { if( n-1 == nr ) count++; nr = n; } if( count == 1 ) cout<<"Nu exista numere consecutive!"; else cout<<"Exista "<<count<<" numere consecutive!"; return 0;}Ceva mai eficient. Te rog sa-l testezi La fel ca la bcman, nu func?ioneaz? pentru ultimul punct (cerin?a a 3-a). Î?i afi?eaz? 5 în loc de 7. Edited June 13, 2014 by H3xoR Quote
bcman Posted June 13, 2014 Report Posted June 13, 2014 @H3xoRNuma-ncet c? te aprinzi. Eu m-am luat dup? cerin?a din postul ini?ial, nu am v?zut cel de-al doilea post. Quote
TEST101 Posted June 14, 2014 Author Report Posted June 14, 2014 int Numarul_Maxim_De_Numere_Consecutive(int v[], int n){ //Sortam vectorul crescator bool verificat; do { verificat = true; for (int i = 0; i < n - 1; i++) if (v[i] > v[i + 1]) { int aux = v[i]; v[i] = v[i + 1]; v[i + 1] = aux; verificat = false; } } while (!verificat); //Cautam cel mai mare sir consecutiv int max = 1, k = 1; for (int i = 0; i < n - 1; i++) if (v[i] + 1 == v[i + 1]) k++; else { if (max < k) max = k; k = 1; } if (max < k) max = k; return max;}Nu e cea mai optim? variant? dar m?car este una func?ional? .Baft?. @H3xoRAm bagat in codul meu algoritmul tau si vad ca nu e asa cum ar trebui:Dupa cum vezi in imagine i-am dat doua consecutive (1 si 2) despartite de altele 3 consecutive (34,35,36) si trebuia sa afiseze 3. Quote
H3xoR Posted June 14, 2014 Report Posted June 14, 2014 @H3xoRAm bagat in codul meu algoritmul tau si vad ca nu e asa cum ar trebui:Dupa cum vezi in imagine i-am dat doua consecutive (1 si 2) despartite de altele 3 consecutive (34,35,36) si trebuia sa afiseze 3.Mie-mi afi?eaz? 3 la exemplul dat de tine.. uite-te:Posteaz? codul programului s? putem rezolva problema. Quote
TEST101 Posted June 14, 2014 Author Report Posted June 14, 2014 Nu mai e nevoie ca i-am dat de capat.Multumesc mult pentru ajutor ! Quote