| Frank51 a întrebat:

Error C2181: Illegal else without mathing if, cum sa scap de eroarea asta in c++?

15 răspunsuri:
suntserios
| suntserios a răspuns:

Ma îndoiesc ca ai pus; după if la vreun laborator

| Frank51 explică (pentru suntserios):

Https://ibb.co/xg4syD3 imi pare rau sa te dezamagesc.

Ideea e ca profa noastra ne explica foarte vag.

| suntserios a răspuns (pentru Frank51):

Pai nu ma dezamăgești deloc ca nu ai dreptate. E o diferență enorma între ce ai scris tu și ce e în imagine

Una e sa pui; după condiția din if, alta e după instrucțiunile din cadrul if ului


Tu ai făcut asa

IF ( condiție);
afișează ceva;
ELSE
Afișează altceva;


Acolo nu e niciun; după (conditie)

| Frank51 explică (pentru suntserios):

Le-am sters si tot asa apare, nu fac misto chiar nu stiu ce fac gresit.

| suntserios a răspuns (pentru Frank51):

Pune codul corectat sa vedem

| Frank51 explică (pentru suntserios):

L-am pus si mai simplificat... aceeasi eroare si imi zice si expected a statement.
{
int nuci = 9;

printf("Alege cate nuci vrei : \n", nuci);
scanf("%d", &nuci);
printf("\n");

if (nuci == 1)

printf("Vrei doar o nuca?\n");
printf("\n");

else if (nuci >= 2 && nuci

| suntserios a răspuns (pentru Frank51):

Foloseste acoladele

treaba asta nu e valida

if (nuci == 1)
printf("Vrei doar o nuca?\n");
printf("\n");
else


in schimb treaba asta

if (nuci == 1)
{
printf("Vrei doar o nuca?\n");
printf("\n");
}
else


este

| Frank51 explică (pentru suntserios):

ALELUIA merge. M-am chinuit 3 ore. Cred ca e valabil fara acolade daca e doar un else, daca pui mai mult de 2 else trebuie acolade. Mersi foarte mult.

| suntserios a răspuns (pentru Frank51):

NU.

Trebuie acoloade atunci cand ai mai mult de o instructiune care se executa pe ramura if. Lucru valabil la orice altra structura fie ea if, for, while, repeat

| NLS a răspuns:

Probabil ai pe undeva ";" intr-o instructiune if else...
";" intrerupe executarea blocului urmator, deci "else" va fi interpretata ca o instructiune separata, ceea ce naste eroarea primita de tine

| Frank51 explică (pentru NLS):

#include
#include

int main()

{
int nuci = 9;

printf("Alege cate nuci vrei : \n", nuci);
scanf("%d", &nuci);
printf("\n");

if (nuci == 1)

printf("Vrei doar o nuca?\n");
printf("\n");

else if (nuci == 2);
printf("Vrei doar 2 nuci?\n");

else if (nuci > 2 && nuci < 9);
printf("Vrei intre 2 si 9 nuci! \n");

else (nuci >= 10)
printf("Vrei cam multe nuci!\n");

return 0;
}

| suntserios a răspuns (pentru Frank51):

Ala nu e cod valid cpp. Unde ai învățat sa pui; după fiecare if?

| suntserios a răspuns (pentru Frank51):

Și îți mai lipsesc și acolade

| NLS a răspuns (pentru Frank51):

La 1 si 10 pare bine.

sterge; precum ti-am zis, din spatele instructiunilor if
... altfel nu se mai executa else-ul urmator

(la cea cu 2 si la cea cu 9 ai pus cate un; fara rost)

| Frank51 explică (pentru suntserios):

Asa am facut la laborator, dar nu am pus atat de multe else if.