Jump to content
Vlăduț Sandu

Exercitiu C++: Maximul Unor Numere Naturale

Recommended Posts

Salutare, PC Troubleshooting. Sunt în Code::Blocks să fac o problemă pentru informatică.

 

Proiectul este acesta:

#include <iostream>

using namespace std;

int main()
{int n, max, x;
max=0;
do
{
    cout<<"n=";
    cin>>n;
    x=n;
    if (x>max)
        max=x;
}while (n=!0);
    cout<<max<<" ";
}

Credeți că este corect? Problema este ceva de genul:

 

Se citesc pe rând numere naturale până la întâlnirea valorii 0. Determinați maximul dintre aceste numere. Presupunem că în șir sunt cel puțin două elemente nenule.

 

Share this post


Link to post
Share on other sites

Nu inteleg de ce folosesti x. while (n=!0) ar trebui sa fie while (n!=0) (echivalent cu while(n))

#include <iostream>

using namespace std;

int main()
{
    unsigned n, max = 0;
    do
    {
        cout << "n=";
        cin >> n;
        if (n > max)
            max = n;
    }while (n);

    cout << "Maximul este: " << max;

    return 0;
}

Share this post


Link to post
Share on other sites

inafara ca folosesti mai putine variabile, codu face acelasi lucru, nu? Sau nu observ eu ceva? :)) (inafara de faza ca faci verificarea la sfarsit, ceea ce poate fi o problema daca se citesc numere negative.. caz in care doar varianta lu courage ar merge bine)

Share this post


Link to post
Share on other sites

ceea ce poate fi o problema daca se citesc numere negative

Banuiesc ca datele de intrare sunt corecte (naturale nenule) :-

Share this post


Link to post
Share on other sites

Pai, se putea mult mai simplu :) Foloseai un while cu conditia: cin >> n, iar codul ar fi aratat ceva de genul:

while(cin >> n) {
   maxim = max(n, maxim);
}

cout << maxim << 'n';

// 0, ultima valoarea citita mai exact, nu poate fi maxim, deci nu vor fi probleme la afisare 

Share this post


Link to post
Share on other sites

 

Pai, se putea mult mai simplu :) Foloseai un while cu conditia: cin >> n, iar codul ar fi aratat ceva de genul:

while(cin >> n) {
   maxim = max(n, maxim);
}

cout << maxim << 'n';

// 0, ultima valoarea citita mai exact, nu poate fi maxim, deci nu vor fi probleme la afisare 

 

Citesti la infinit.

 

Schimba

while(cin >> n) {

cu

while(cin >> n and n) {

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×