Informatică, întrebare adresată de Pisicuta1307, 9 ani în urmă

Cerinţa
Se citesc numere de la tastatură până la apariția lui zero. Să se determine cea mai mare valoare citită.

Date de intrare
Programul citește de la tastatură numere întregi. Citirea se încheie la introducerea valorii 0.

Date de ieşire
Programul afișează pe ecran numărul MAX, reprezentând cea mai mare valoare citită.

Restricţii şi precizări
•numerele citite aparțin intervalului (-1.000.000;1.000.000)
•valoarea zero, care încheie citirile, nu se ia în considerare la determinarea maximului
•dacă prima valoare introdusă este zero, se va afișa mesajul NU EXISTA

Exemplu
Intrare
5 6 2 1 0
Ieșire
6
Eu am rezolvat problema astfel:
#include
#include
using namespace std;
int main()
{
long long n,x,i,maxim=INT_MIN;
cin>>n;
while(n!=0)
{
if(n>maxim)
maxim=n;
cin>>n;

}
cout< return 0;
}
Insa imi da 80 de puncte din cauza ca nu am scris partea cu NU EXISTA, dar chiar daca o include nu o ia in considerare, imi puteti spune va rog unde sa include aceasta conditie de la Restricţii şi precizări.





artur99: Unde ai pus verificarea care să afișeze NU EXISTA? Înainte, sau după while?
artur99: #include<iostream>
using namespace std;
int main(){
int n, max, i;
cin>>n;
if(n==0) cout<<"NU EXISTA";
else{
max = n;
while(1){
cin>>n;
if(n==0) break;
if(n>max) max=n;
}
cout<<max;
}

}
Pisicuta1307: eu o pusesem dupa
Pisicuta1307: insa daca il pun dupa cin(#include<iostream>
#include<climits>
using namespace std;
int main()
{
long long n,x,i,maxim=INT_MIN;
cin>>n;
if(n==0)
cout<<"NU EXISTA";
else
while(n!=0)
{
if(n>maxim)
maxim=n;
cin>>n;
}
cout<<maxim<<endl;
return 0;
}
) si introduc 0 la build imi spune NU EXISTA-2147483648
artur99: Înțelegi codul care l-am scris mai sus? :D
Pisicuta1307: Dar ce e gresit la al meu?
artur99: Faptul că nu tratezi cazul în care nu există cum trebuie. La else-ul de la NU EXISTĂ, trebuie să cuprinzi și cout-ul de la cazul în care ar exista, deci să nu se afișeze variabila maxim dacă nu există niciun număr

Răspunsuri la întrebare

Răspuns de artur99
7
#include<iostream>
using namespace std;
int main(){
    int n, max, i;
    cin>>n;
    if(n==0) cout<<"NU EXISTA";
    else{
        max = n;
        while(1){
            cin>>n;
            if(n==0) break;
            if(n>max) max=n;
        }
        cout<<max;
    }
    
}

Pisicuta1307: imi pot spune te rog unde e greseala la rezolvarea mea?
Pisicuta1307: mda, nu mai conteaza, am gasit greseala :D multumesc frumos pentru ajutor :))
artur99: aaah, abea acum am văzut comentariul ăsta, și am scris deja :))) Ok
Alte întrebări interesante