Begedeu Posted March 3, 2015 Report Posted March 3, 2015 Sincer sunt incepator in algoritmica va rog sa ma ajutati la o problema .Se introduce un sir de numere de la tastatura pana la intalnirea valorii 0. Sa se afiseze :a)Maximul dintre numerele negativeb)minimul dintre nr negativec)maximul dintre nr pozitive d)minimul dintre nr pozitiveCe am facut eu . Nu mi-a iesit la negative si nu am mai continuat si la celelalte.#include<iostream>#include<conio.h>using namespace std;int main(){ int n,max,min,max1,min1; cout <<"n=";cin>>n; while (n<0){ cout <<"n=";cin>>n;} if (n==0) cout <<"Nu exista nr negative"; else{ max=n; min=n; } while (n != 0){ if (n>max && n<0) max=n; if (n<min && n<0) min=n; cout <<"n=";cin>>n; } cout <<"Maximul este : "<<max<<endl; cout <<"Minimul este : "<<min; getch(); return 0;} Quote
pr00f Posted March 3, 2015 Report Posted March 3, 2015 http://sprunge.us/aBNbCitirea o faci tu, e un simplu while(). Pe scurt, ai doua posibilitati de a rezolva exercitiul actual - prima, de a face verificarile odata cu citirea numerelor, iar a doua, cea folosita de mine, verificarea fiecarui numar prin parcurgerea sirului. Indiferent de metoda, ai iarasi cate doua cazuri; unul cand numerele tale sunt negative (<0), iar al doilea, cand numerele sunt pozitive (>=0 «de citit, sunt cazuri in care zero nu este considerat pozitiv, dar nu cred ca ne influenteaza momentan»). Pe fiecare caz, faci doua verificari, una pentru maxim, una pentru minim.http://a.pomf.se/hwjuah.png Quote
Begedeu Posted March 4, 2015 Author Report Posted March 4, 2015 http://sprunge.us/aBNbCitirea o faci tu, e un simplu while(). Pe scurt, ai doua posibilitati de a rezolva exercitiul actual - prima, de a face verificarile odata cu citirea numerelor, iar a doua, cea folosita de mine, verificarea fiecarui numar prin parcurgerea sirului. Indiferent de metoda, ai iarasi cate doua cazuri; unul cand numerele tale sunt negative (<0), iar al doilea, cand numerele sunt pozitive (>=0 «de citit, sunt cazuri in care zero nu este considerat pozitiv, dar nu cred ca ne influenteaza momentan»). Pe fiecare caz, faci doua verificari, una pentru maxim, una pentru minim.http://a.pomf.se/hwjuah.pngMultumesc , dar totusi e un bug , cum fac sa nu mi-l mai ia pe 0 in considerare ? Am incercat sa iau toate numerele intr-un vector dar mai mare cacat a iesit . Quote
pr00f Posted March 4, 2015 Report Posted March 4, 2015 Daca te folosesti de un sir, parcurgi pana la ultimul element, daca citesti acel zero.Alternativ, verificare odata cu citirea numarului si evitarea folosirii unui sir (moar memory). Quote
Begedeu Posted March 5, 2015 Author Report Posted March 5, 2015 (edited) Multumesc de ajutor !Edit : Redeschid topicul , spuneti-mi va rog dece am eroare la aproape fiecare program care include determinarea minimului si maximului .Deci daca initializez x cu 0 , minimul mi-l ia 0 .Daca nu il initializez , o ia maximul razna. @pr00f Edited March 9, 2015 by Begedeu Quote
pr00f Posted March 9, 2015 Report Posted March 9, 2015 Initializezi x ca fiind zero, apoi minimul (si maximul) ca fiind x, deci min (respectiv max) = 0. Orice numar pozitiv introdus este >=0, minimul ramanand 0. Protip, initializeaza minimul ca o valoare mare, iar maximul ca o valoare mica. Din cate observ, banuiesc ca asta vrei: Quote
Eustatiu Posted March 9, 2015 Report Posted March 9, 2015 Initializezi x ca fiind zero, apoi minimul (si maximul) ca fiind x, deci min (respectiv max) = 0. Orice numar pozitiv introdus este >=0, minimul ramanand 0. Protip, initializeaza minimul ca o valoare mare, iar maximul ca o valoare mica. Din cate observ, banuiesc ca asta vrei:pr00f, ce compilator folosesti? Quote