Wyznaczanie minimum do końca pliku

0

Cześć,
Program właściwie działa poprawnie, ale chciałbym prosić o radę w jaki sposób zmodyfikować ten kod w taki sposób aby przy pustym inpucie program nic nie wypisywał. W obecnej chwili program zachowuję się tak jak na zdjęciu.

#include<iostream>

int main()
{
    double liczba, mini;
    int i = 0;

    while(std::cin >> liczba)
    {
        i++;
        if(i == 1)
        {
            mini = liczba;
        }
        else if(liczba < mini)
        {
            mini = liczba;
        }

    }
    std::cout << mini;

}

progra.png

2

Zawsze nadawaj wartość początkową swoim zmiennym (inaczej mają w sobie jakieś "śmieci" i kończy się jak u ciebie). Poza tym jak i = 0, to to nic nie wczytałeś Starczy więc prosty if przed cout-em

1

Ten kod jest nieprawidłowy, bo mini ma nieustaloną wartość początkową (undefined behavior). Działa przez przypadek.
Poprawka może wyglądać tak:

#include<iostream>

int main()
{
    double liczba, mini;

    if (std::cin >> mini) {
       while(std::cin >> liczba)
       {
           mini = std::min(mini, liczba)
       }
       std::cout << mini;
    } else {
       std::cout << "no data\n";
    }
}
1
using namespace std;
int main()
{
    bool first=true;
    double mini=0;
    for(double liczba;cin>>liczba;first=false) if((first)||(mini>liczba)) mini=liczba;
    if(first) cout<<"???"
    else cout<<mini;
    return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1