• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Tablica c++, blad przy podaniu wartosci max i min

Object Storage Arubacloud
0 głosów
262 wizyt
pytanie zadane 25 października 2022 w C i C++ przez dayanuch Nowicjusz (120 p.)

Mam program, który przy podaniu 0 kończy wpisywanie liczb do tablicy albo po jej zapełnieniu. Podaje max i min wartosci. Przy podaniu wiecej liczb to program, natomiast gdy podam z 3 liczby i podam 0, wykazuje dziwne wartosci w min i max

#include <iostream>
using namespace std;
const int MAX_N=10;
int main()
{
	int tab[MAX_N];
	int min,max;
	double srednia=0;
	
	for(int i=0;i<10;i++)
	{
		cin>>tab[i];
		if(tab[i]==0 ){
	    break;
			}
	}
	
	min=tab[0];
	for(int i=0;i<10;i++)
	{
		if(min>tab[i])
		min=tab[i];
		
	max=tab[0];	
	}
	for(int i=0;i<MAX_N;i++)
	{
		if(max<tab[i])
		max=tab[i];
	}
	
	cout<<min<<endl;
	cout<<max<<endl;
	
	
}

 

1 odpowiedź

+1 głos
odpowiedź 25 października 2022 przez Whiskey_Taster Pasjonat (15,610 p.)

 Przy podaniu wiecej liczb to program

?

 Przy podaniu wiecej liczb to program, natomiast gdy podam z 3 liczby i podam 0, wykazuje dziwne wartosci w min i max

Nic w tym dziwnego. Na sztywno wymagasz, by tablica przechowywała 10 wartości, więc tyle też ich jest. Sęk w tym, że jeśli ich nie inicjujesz jakimiś wartościami na samym początku, to są one zupełnie losowe. Stąd jak przerwiesz wpisywanie w jakimś momencie, to najzwyczajniej w świecie w pozostałej części tablicy masz losowe wartości. A tu już nigdy nie wiesz, czy na danym miejscu masz 0, milion czy coś ujemnego. Cała magia. 

Ja polecam zamiast babrać się tablicą, to zająć tworem o nazwie vector

komentarz 25 października 2022 przez dayanuch Nowicjusz (120 p.)
Przy podaniu wiecej liczb to program dziala,

Da się wpisując 0 zatrzymać wpisywanie liczb do tablicy z wejścia?
1
komentarz 25 października 2022 przez Whiskey_Taster Pasjonat (15,610 p.)
Pewnie, że się da. Na przykład zapamiętuj indeks miejsca, w które wpisałeś 0. I potem wyświetlaj wszystkie liczby do tego indeksu.
komentarz 25 października 2022 przez dayanuch Nowicjusz (120 p.)
Zainicjować indeks=i, gdy będzie równy ==0, wtedy break?
komentarz 25 października 2022 przez Whiskey_Taster Pasjonat (15,610 p.)
Możesz ten indeks zadeklarować przed pętlą i używać jako licznika w pętli. W ten sposób zawsze otrzymasz poprawny indeks - niezależnie, czy pętla była przerwana (czyli wpisano 0), czy też nie. Gdyby tak po prostu przypisać go tylko wtedy, gdy wpisujesz 0, to ciężko byłoby iterować po tablicy od 0 do indeksu, bo zmienna trzymająca indeks byłaby 'podmieniana' tylko wtedy, gdy wpisano 0.
1
komentarz 26 października 2022 przez Oscar Nałogowiec (29,320 p.)
Trzy pętle są niepotrzebne - od razu w pierwszej pętli po wczytaniu liczby można sprawdzić, czy jest ona większa od dotyszczasowej największej, mniejsza od najmniejszej.

I problem liczenia tych liczba zniknie, tablica też okaże się niepotrzebna, bo w ogóle nie ma potrzeby pamiętania samych liczb, tylko wartości min i max.
komentarz 26 października 2022 przez VBService Ekspert (253,340 p.)

Tu np. można użyć do...while

    int min=2147483647, max=0, number=0;
    
    do {
        cin >> number;
        if (min > number) min = number;
        if (max < number) max = number;
    } while (number != 0);
    
    cout << min << " : " << max;

 

Podobne pytania

0 głosów
1 odpowiedź 1,269 wizyt
pytanie zadane 19 grudnia 2017 w Java przez Ohnne Nowicjusz (180 p.)
0 głosów
0 odpowiedzi 342 wizyt
pytanie zadane 9 września 2017 w C i C++ przez Margot1988_ Nowicjusz (120 p.)
0 głosów
1 odpowiedź 1,592 wizyt
pytanie zadane 29 maja 2018 w JavaScript przez C1chutki Nowicjusz (120 p.)

92,573 zapytań

141,423 odpowiedzi

319,648 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...