Podstawy C++ : "expression must be a modifiable lvalue"

0

Witam.

Na początek chcę zaznaczyć, iż programistą jestem stricte początkującym, więc proszę o wyrozumiałość :)

Tworzę program losujący liczbę, a następnie sprawdzający, czy liczba wytypowana, przez użytkownika jest mniejsza, większa lub równa wylosowanej.

W moim kodzie programu występuje problem, nie wiem dlaczego ten problem występuje, dlatego też prosiłbym o wytłumaczenie, skąd się wziął i dlaczego.

Linijka z błędem:

user image

Kod programu:

#include <cstdlib>
#include <ctime>
#include <iostream>
#include <conio.h>
using namespace std;

int main()
{
	srand(time (NULL));
	int los = ( rand() % 1000 ) + 1;

	int typ;
	int proba = 0;
	cout << los; // na potrzeby pracy nad programem
	cout << "=WITAMY W GRZE!=" << endl;
	cout << endl;
	cout << "Odgadnij liczbe od 1 do 1000 ";

		do
		{
			proba++;
			cout << endl;
			cout << "Twoj typ: ";
			cin >> typ;
			bool ok = cin.good();

			if (ok = 1)
			{
			
			if ( typ > los && typ >= 1 && typ <= 1000)
			
				cout << "Za duzo" << endl;
			
			if ( typ < los && typ >= 1 && typ <= 1000)
			
				cout << "Za malo" << endl;
			
			if ( typ < 1 || typ > 1000 || ok = 0 )
			
			cout << "Nieprawidlowa wartosc" << endl;
			
			}
			
			cin.clear();
			cin.sync();
		}while ( typ != los );

		cout << "Brawo!" << endl;
		cout << "Liczba prob: " << proba;
		getch();
		return 0;

		
}
1

ok = 1 popraw na ok == 1
ok = 0 popraw na ok == 0
To nie jest porównanie, tylko przypisanie, w wyniku czego ok w ifie będzie zawsze spełnione.
A najlepiej, jeśli możliwa jest tylko wartośc 1 i 0, użyj true i false, będzie o niebo czytelniej.

0

@Proxima

Dzięki wielkie za pomoc! Oczy mi już z orbit wychodziły w poszukiwaniu braku średnika czy innej "drobnostki".
Na pewno będę od tej pory poświęcał większą uwagę operatorom porównania :)

Jeszcze raz dzięki :)

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