modulo, lvalue

0

Witam, mam problem ponieważ w pierwszej linijce kodu kompilator wywala błąd "left operand must be l-value" Problem się powtarza ponieważ podnobych warunków/pętli w programie jest kilka, domyślam się że przyczyna jest taka sama(jeśli się mylę to oczywiście załącze cały kod). Starałem się samodzielnie zgłębić problem "l-value" jednak większosć problemów z nim związanych na tym, oraz innych forach było przedstawiane na "trudniejszych" czyli nie znanych mi jeszcze zagadnieniach. Dziękuje za pomoc.

if (rokUrodzenia%4==0 || rokUrodzenia % 100 == 0 && rokUrodzenia % 400 ==0 && miesiacUrodzenia ==2 && dzienUrodzenia < 29 || miesiacUrodzenia == 1)
		dwpRoku++;
	for ( i = miesiacUrodzenia; i == 12; i++)
	{
		if (i == 2)
			dniMiesiaca = 28;
		 if (i ==4 || i == 6 || i == 9 || i == 11)
			dniMiesiaca = 30;
		else
			dniMiesiaca = 31;
		dwpRoku = dwpRoku + dniMiesiaca; 
0

Nie widzę jak na razie innego błędu niż to

 for ( i = miesiacUrodzenia; i = 12; i++)

Ale nie wydaje mi się, że jest on powodem komunikatu.
W drugim wyrażeniu w for() masz pojedyńcze '='.

0

Dzięki,zauważyłem to również wrzucając post, ale tak jak wspomniałeś to nie jest przyczyną :)

1

left operand must be l-value
to taka sytuacja.

int i{};
6 = i; 

Poszukaj wcześniej w kodzie. Może komunikat dotyczy wcześniej wykonywanej linii.

0

Wstawiam cały kod

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <windows.h>
	using namespace std;

	int main()
	{
		char imie[15], nazwisko[20], miasto[20], plec[15], imieOjca[15], imieMatki[15], data[30];
		int  wiekOjca, wiekMatki, dnwlPomiedzy=0, i;
		int dwpRoku=0,dwoRoku,dwoMiesiacu, mwpRoku, obecnyDzien, obecnyMiesiac, obecnyRok, rokUrodzenia, miesiacUrodzenia, dzienUrodzenia, dniMiesiaca;

		

		SYSTEMTIME obecnaData;
		GetLocalTime(&obecnaData);
		 obecnyDzien = obecnaData.wDay;
		 obecnyMiesiac = obecnaData.wMonth;
		 obecnyRok = obecnaData.wYear;


	cout << "Podaj imie:";
	cin >> imie;
	cout << "Podaj nazwisko:";
	cin >> nazwisko;
	cout << "Podaj pe†:";
	cin >> plec;
	cout << "Miejsce urodzenia:";
	cin >> miasto;				
	cout << "Rok urodzenia:";
	cin >> rokUrodzenia;
	cout << "Miesiac Urodzenia:";
	cin >> miesiacUrodzenia;
	cout << "Dzien urodzenia:";
	cin >> dzienUrodzenia;
	cout << "Imie ojca:";
	cin >> imieOjca;
	cout << "Wiek ojca:";
	cin >> wiekOjca;
	cout << "Imie matki:";
	cin >> imieMatki;											  
	cout << "Wiek matki:";
	cin >> wiekMatki;
	if (rokUrodzenia%4==0 || rokUrodzenia % 100 == 0 && rokUrodzenia % 400 ==0 && miesiacUrodzenia ==2 && dzienUrodzenia < 29 || miesiacUrodzenia = 1)		 ////błąd "left operand must be l-value"
		dwpRoku++;
	for ( i = miesiacUrodzenia; i == 12; i++)
	{
		 if (i == 2)
			dniMiesiaca = 28;
		 if (i ==4 || i == 6 || i == 9 || i == 11)
			dniMiesiaca = 30;
		else
			dniMiesiaca = 31;
		dwpRoku = dwpRoku + dniMiesiaca;
	}
	for (i = rokUrodzenia + 1; i < obecnyRok; i++)
	{


		if (i % 4 == 0 || i % 100 == 0 && i % 400 == 0)			   //to że w tej lini nie wyskakuje błąd sprawia że mnie dziwi bo przy analogicznej sytuacji wcześniej wyskoczył
			dnwlPomiedzy++;

		dnwlPomiedzy = dnwlPomiedzy + 365;
	}
	for (i = 1; i < obecnyMiesiac; i++)
	{

		if (i == 2)
			dniMiesiaca = 28;
		if (i == 4 || i == 6 || i == 9 || i = 11)				//błąd "left operand must be l-value"
			dniMiesiaca = 30;
		else
			dniMiesiaca = 31;
		dwoRoku = dwoRoku + dniMiesiaca;


	} 
0
miesiacUrodzenia = 1 

pozniej

i = 11 

tutaj masz bledy

0

Po poprawieniu wszystkich błędów się kompiluje, dziękuje bardzo :) Trochę jestem tym zdziwiony bo wydawało mi się że problem jest "poważniejszy".

0

Tutaj masz dodatkowe warny:

$ i686-w64-mingw32-g++-win32 -Wall -pedantic ./prog.cpp 
./prog.cpp: In function ‘int main()’:
./prog.cpp:44:104: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses]
     if (rokUrodzenia%4==0 || rokUrodzenia % 100 == 0 && rokUrodzenia % 400 ==0 && miesiacUrodzenia ==2 && dzienUrodzenia < 29 || miesiacUrodzenia == 1)         ////błąd "left operand must be l-value"
                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
./prog.cpp:60:40: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses]
         if (i % 4 == 0 || i % 100 == 0 && i % 400 == 0)               //to że w tej lini nie wyskakuje błąd sprawia że mnie dziwi bo przy analogicznej sytuacji wcześniej wyskoczył
                           ~~~~~~~~~~~~~^~~~~~~~~~~~~~~
./prog.cpp:9:89: warning: unused variable ‘data’ [-Wunused-variable]
         char imie[15], nazwisko[20], miasto[20], plec[15], imieOjca[15], imieMatki[15], data[30];
                                                                                         ^~~~
./prog.cpp:11:31: warning: unused variable ‘dwoMiesiacu’ [-Wunused-variable]
         int dwpRoku=0,dwoRoku,dwoMiesiacu, mwpRoku, obecnyDzien, obecnyMiesiac, obecnyRok, rokUrodzenia, miesiacUrodzenia, dzienUrodzenia, dniMiesiaca;
                               ^~~~~~~~~~~
./prog.cpp:11:44: warning: unused variable ‘mwpRoku’ [-Wunused-variable]
         int dwpRoku=0,dwoRoku,dwoMiesiacu, mwpRoku, obecnyDzien, obecnyMiesiac, obecnyRok, rokUrodzenia, miesiacUrodzenia, dzienUrodzenia, dniMiesiaca;
                                            ^~~~~~~
./prog.cpp:11:53: warning: variable ‘obecnyDzien’ set but not used [-Wunused-but-set-variable]
         int dwpRoku=0,dwoRoku,dwoMiesiacu, mwpRoku, obecnyDzien, obecnyMiesiac, obecnyRok, rokUrodzenia, miesiacUrodzenia, dzienUrodzenia, dniMiesiaca;
                                                     ^~~~~~~~~~~
$ wine ./a.exe 
Podaj imie:Adolf
Podaj nazwisko:Hitler
Podaj p┬łeÔÇá:M
Miejsce urodzenia:Austria  
Rok urodzenia:1889
Miesiac Urodzenia:4
Dzien urodzenia:20
Imie ojca:Alois
Wiek ojca:179
Imie matki:Klara
Wiek matki:156
 

Warto się zastanowić nad dwoma pierwszymi.

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