Porównywanie wartości wektora

0

Hejka,próbowałem napisać program który wpisuje 2 liczby do wektora a następnie sprawdza która jest większa.Pętla sie przerywa gdy wpisze sie znak '|'.Problem polega na tym że działa tylko do momentu przerwania bo po tym pokazuje błąd pamięci.Kod:

int main()
{
	vector <double> liczby;
	double liczby1;


	while (cin >> liczby1)
	
		liczby.push_back(liczby1);
		while (liczby1 == '|')
			break;
		for (int i = 0; i < liczby.size(); ++i)
		{
			if (liczby[i] > liczby[i + 1])
			{
				cout << "Wieksza liczba to" << liczby[i];
				cout << "Mniejsza liczba to" << liczby[i + 1];
			}
			else
			{
				cout << "Wieksza liczba to" << liczby[i + 1];
				cout << "Mniejsza liczba to" << liczby[i];
			}
 		}
		return 0;
}
0

while (liczby1 == '|') - to jest bez sensu, liczby1 to zmienna typu double, jak ty chcesz ją ze znakiem porównywać? (btw, bezsensowna nazwa zmiennej)

0

Hejka,próbowałem napisać program który wpisuje 2 liczby do wektora a następnie sprawdza która jest większa.Pętla sie przerywa gdy wpisze sie znak '|'.Problem polega na tym że działa tylko do momentu przerwania bo po tym pokazuje błąd pamięci.Kod:

        for (int i = 0; i < liczby.size(); ++i)
        {
            if (liczby[i] > liczby[i + 1])

wychodzisz poza zakres, dla i = liczby.size() - 1 nie istnieje liczby[i+1]

0

@kq:
"to jest bez sensu"
też tak myślałem ale zadziałało,więc myślałem że ok.
Chodzi mi o sprawdzenie wartości po indeksie wektora.
Czyli jeśli i jest na początku 0 a wpisze 2 liczby to indeksy wynoszą 0 i 1.

0
pkrzysiek napisał(a):

@kq:

"to jest bez sensu"
też tak myślałem ale zadziałało,więc myślałem że ok.

while (liczby1 == '|') // rozpocznij pętle jeżeli liczby1 == 124.00
            break; // natychmiast skończ pętle
0

@pkrzysiek: Fprmatowanie kodu sugeruje co innego niż sam kod.
Po while(cin >> liczby1) nie masz klamer, więc pętla wykonuje tylko i wyłącznie linijkę będącą bezpośrednio za nią, czyli liczby.push_back(liczby1).

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