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

Najwieksza liczba z wprowadzonycnh

Ostatnio zmodyfikowano 2020-01-03 19:12
Autor Wiadomość
harassment_____
Temat założony przez niniejszego użytkownika
Najwieksza liczba z wprowadzonycnh
» 2020-01-03 14:47:20
Takie wymyslilem sobie zadanie. Czy ten kod wyglada poprawnie? Jak usprawnić go by wyrzucał też najmniejsza liczbe bo dodanie kolejnego if po else bezcelowe.
EDIT: Poprawilem go. Przeszłoby na spoj?

C/C++
#include <iostream>

using namespace std;
int tablica[ 100 ], indeks = 0, max2;
int indeks3 = 0;
int indeks2 = 1;
int m, mi;
int main()

{
    cout << "Ile chcesz wprowadzic liczb: " << endl;
    cin >> indeks;
    cout << " Wprowadz liczby oddzielone spacja: " << endl;
    for( int i = 0; i < indeks; i++ )
         cin >> tablica[ i ];
   
    m = tablica[ 0 ];
    mi = tablica[ 0 ];
    for( int i = 0; i <= indeks; i++ )
   
    {
       
        if( m <= tablica[ indeks2 ] )
       
        {
            m = tablica[ indeks2 ];
            indeks2++;
        }
        if( mi >= tablica[ indeks2 ] )
        {
            mi = tablica[ indeks2 ];
        }
    }
   
    cout << "Najwieksza i najmniejsza liczba jest liczba: " << m, << mi;
   
   
    return 0;
}
P-175924
pekfos
» 2020-01-03 15:20:24
Czy ten kod wyglada poprawnie?
Nie. Próbowałeś go skompilować? Po co w ogóle używasz tablicy? Rozwiązanie problemu wymaga jednorazowego przejścia po danych, a to możesz osiągnąć bez przechowywania wszystkich danych naraz.

Przeszłoby na spoj?
Jak wymyślisz też formalny opis zadania, jaki mógłby weryfikować tester automatyczny, to możemy się wtedy zastanawiać.
P-175925
harassment_____
Temat założony przez niniejszego użytkownika
» 2020-01-03 15:48:49
Okej. Znalazlem blą. Bez tablicy? wiem ze moge wczytac caly wiersz getline(), ale jak  potem porownac elementy ze soba? jak mniemam zapisuja sie w formacie string prawda? I dochodzi tez kwestia pominiecia spacji.
P-175927
pekfos
» 2020-01-03 16:49:14
Już masz pętlę wczytującą liczby. Tablica nie jest tam do niczego potrzebna.
P-175928
harassment_____
Temat założony przez niniejszego użytkownika
» 2020-01-03 18:14:59
Rozumiem o co chodzi ale nie wiem jak to zapisać. Wprowadzam z klawiatury pierwsza cyfrę. Klikam spacje. Wprowadzam druga. I teraz pętla ma sprawdzić czy ta druga jest większa od pierwszej. Jedynym wyjściem jakie widzę to na poczatek pytam o ilość liczb, potem pytam o liczby. Pierwsza wczytuje do zmiennej X. Potem otwieram petfle for i sprawdzam czy x jest mniejsza od kolejnej liczby Y. Jeśli tak X=Y. Dobrze rozumiem? Niestety nie mam jak napisać tego teraz.
P-175935
pekfos
» 2020-01-03 18:36:47
Gdy wczytujesz kolejną liczbę, możesz od razu jej użyć do zaktualizowania minimum i maksiumum. Później ta liczba nie jest do niczego potrzebna, więc nie ma sensu jej trzymać w tablicy. W kontekście SPOJa tablica to tragiczne rozwiązanie, bo tam możesz mieć do czynienia z milionami liczb do przetworzenia, a tablica na te miliony liczb może nie spełnić wymogów pamięciowych.
C/C++
for( int i = 0; i < indeks; i++ )
{
    cin >> liczba;
    // Zaktualizuj min/max w oparciu o `liczba`
}
Zamiast myśleć o wyliczaniu minimum jako porównywaniu pierwszej liczby z drugą, algorytm można uprościć jeśli porównujesz minimum z pierwszą liczbą, potem z drugą i tak dalej. Na początek minimum musi być nie mniejsze niż jakakolwiek możliwa liczba na wejściu. Na SPOJu zwykle jest określony zakres liczb wejściowych, ale w tym wypadku możemy założyć że są to dowolne poprawne liczby typu int:
C/C++
// #include <limits>
int min = std::numeric_limits < int >::max();
int max = std::numeric_limits < int >::min();
P-175938
harassment_____
Temat założony przez niniejszego użytkownika
» 2020-01-03 19:12:19
Dobra rozumiem. Zrobię to jeszcze raz jutro w domu. Dziękuję za pomoc.
P-175943
« 1 »
  Strona 1 z 1