Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Największa i najmniejsza liczba z podanych

Ostatnio zmodyfikowano 2016-02-29 19:59
Autor Wiadomość
skibixd
Temat założony przez niniejszego użytkownika
Największa i najmniejsza liczba z podanych
» 2016-02-29 09:51:50
Witam,
mam do napisania program, na któego wejściu użytkownik podaje liczby (po spacji), a na wyjściu program zwraca najmniejszą i największą liczbę.
Mam pomysł aby to na tablicy, najpierw podajemy liczbę, która staje się wymiarem tablicy, ale jak to zrobić bez tablicy?
P-145400
carlosmay
» 2016-02-29 10:03:43
ale jak to zrobić bez tablicy?
Operator
>>
 wczytuje dane domyślnie pomijając znaki odstępu.
Można w pętli pobierać kolejne liczby do zmiennej tymczasowej.
Następnie instrukcją warunkową sprawdzać maksimum i minimum.

C/C++
while( std::cin >> zmienna )
{
    std::cout << zmienna << ' '; // wypisuj dane poki można odczytać ze strumienia
}
Wejście:
1 2 3 4 5
.
Wyjście:
1 2 3 4 5
.
P-145401
skibixd
Temat założony przez niniejszego użytkownika
» 2016-02-29 10:16:36
Mógłbyś napisać taki programik? Albo chociaż część, by mógłbym sobie to przeanalizować? Bardzo proszę...
P-145402
carlosmay
» 2016-02-29 10:23:20
chociaż część, by mógłbym sobie to przeanalizować
Już jest najważniejsza część.
W pętli zamiast wypisać trzeba porównać pobraną wartość i zaktualizować
zmienne maks i min (jeśli potrzeba).
P-145403
skibixd
Temat założony przez niniejszego użytkownika
» 2016-02-29 10:42:05
C/C++
#include <iostream>

using namespace std;

int main()
{
    int mini = 0, maks = 0, liczba;
   
    while( cin >> liczba )
    {
        if( liczba > maks )
             maks = liczba;
       
        else( liczba < mini )
             mini = liczba;
       
    }
   
    cout << maks << endl;
    cout << mini << endl;
   
    return 0;
}
Co zrobiłem nie tak? :(

Edit:
C/C++
#include <iostream>

using namespace std;

int main()
{
    int min, max, liczba;
   
    while( cin >> liczba )
    {
        if( liczba > max )
             max = liczba;
       
        if( liczba < min )
             min = liczba;
       
    }
   
    cout << max << endl;
    cout << min << endl;
    return 0;
}

Ok, powiedzmy, że działa, ale dopiero po wpisaniu jakiegoś innego znaku pokazuje min i max.
Rozumiem, że nie mam warunku wyjścia z pętli?
Co zrobić aby wciśnięcie ENTER powodowało wyjście z pętli?
P-145404
mateczek
» 2016-02-29 11:03:51
co jest nie tak ??
 kilka rzeczy
1 inicjalizacja zmiennej min, max wartością zero nie jest dobrym pomysłem !!!
 bo z takiego ciągu: {1 4 3} max=4 a min=0.
 z takiego ciągu -4 -6 -1;   max=0 a min -6

2
C/C++
else if( liczba < mini )
     mini = liczba;


3 program  while( cin >> liczba )  jest poprawny i jak najbardziej nadaje się na serwisy testujące jak SPOJ. Jednak normalnie strumień Ci będzie permanentnie czekał na dane wejściowe, i będzie to wyglądało jakby się zawiesił
  ctrl+D kończy oczekiwanie i wypluje wynik
C/C++
#include <iostream>
#include <string>
#include <sstream>

using namespace std;

int main()
{
    string s;
    stringstream ss;
    getline( cin, s ); // pobranie całej linjiki tekstu
    ss << s; // przekazanie pobranej linijki do strumienia
    int min, max;
    ss >> min; //zainicjalizowanie zmiennej min pierwszą cyfrą z ciągu
    max = min; //zaninicjalizowanie zmiennej max pierwszą cyfrą z ciągu
    int liczba;
    while( ss >> liczba ) // dalej po twojemu
    {
        if( liczba > max )
             max = liczba;
       
        else if( liczba < min )
             min = liczba;
       
    }
   
    cout << max << endl;
    cout << min << endl;
   
    return 0;
}
P-145405
carlosmay
» 2016-02-29 11:30:48
Co zrobić aby wciśnięcie ENTER powodowało wyjście z pętli?
Jednak normalnie strumień Ci będzie permanentnie czekał na dane wejściowe, i będzie to wyglądało jakby się zawiesił
Wystarczy dodać warunek kończący, np. dodać licznik wpisanych liczb lub dla dodatnich wpisać ujemną lub poprostu wpisać po znak (nie liczbę).

Co do inicjalizacji wystarczy pobrać pierwszą i nią zainicjalizować maks i min
(czy to przed pętlą, czy w pętli - to już kwestia wyboru).
P-145406
skibixd
Temat założony przez niniejszego użytkownika
» 2016-02-29 12:20:41
mateczek, dziękuję Ci. Wszystko było ok, program nie zaliczał poprawności mojego kodu bo min i max miały być w jednym wierszu.
P-145411
« 1 » 2
  Strona 1 z 2 Następna strona