Nauka programowania: I was not declared in this scope (???)

0

Hej, nie wiem dlaczego wywala mi błąd o niezadeklarowanej zmiennej:

#include <iostream>
#include <cstdlib>
#include <time.h>
#include <windows.h>

using namespace std;

float oceny[5];

int main()
{
    for (int i=0; i<5; i++);
    {
        cout<<endl<<"Podaj ocene: ";
        cin>>oceny[i];                                           **- w tym miejscu wywala błąd jak w tytule**
    }

    system("pause");
    return 0;
}
4

Twoja pętla efektywnie nie istnieje, kończy się średnikiem.
A z nią deklaracja lokalnej i

ps. GDYBYŚ formatował kod (a nie jest tak), to by walnęło po oczach

0

Super, dzięki za odpowiedź. Widzę błąd. Temat do zamknięcia.

0

Temat niech zostanie dla potomnych.

1

Na podstawie komunikatu błędu wygląda na to, że używasz gcc/MinGw.
Zmień ustawienia kompilatora i dodaj flagi: -Wall -Wextra -pedantic -Werror, to wtedy ten kompilator daje jaśniejsze wyjaśnienie co jest nie tak:

<source>: In function 'int main()':
<source>:11:5: error: this 'for' clause does not guard... [-Werror=misleading-indentation]
   11 |     for (int i=0; i<5; i++);
      |     ^~~
<source>:12:5: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
   12 |     {
      |     ^
<source>:14:20: error: 'i' was not declared in this scope
   14 |         cin>>oceny[i];
      |                    ^
cc1plus: all warnings being treated as errors
Compiler returned: 1

https://godbolt.org/z/hMearo37W

Włącz te flagi, bo te ostrzeżenia wykrywają większość błedów popełnianych przez początkujących.
W niektórych miejscach ostrzeżenia będą nadgorliwe, ale nie powinno to być dla ciebie bolesne.

Bardziej współczesna forma tego kodu (bez używania std::array):

int main()
{
    for (auto& ocena : oceny)
    {
        cout << endl << "Podaj ocene: ";
        cin >> ocena;
    }

    return 0;
}

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