• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem z określeniem ilości zmiennych w tablicy

Object Storage Arubacloud
0 głosów
1,589 wizyt
pytanie zadane 28 lipca 2015 w C i C++ przez TheTourist11 Nowicjusz (150 p.)
Cześć. Oglądałem 5 odcinek kursu C++ (https://goo.gl/Bkou0O) i w zadaniu z liczeniem średniej pomyślałem, że nie zawsze użytkownik będzie chciał policzyć średnią z 5 ocen. Chciałem więc stworzyć zmienną, dzięki której on będzie decydował o ilości ocen. Niestety, nie działa - tutaj kod -> http://wklej.org/id/1764333/

Błędy, jakie wyskakują to:

line 7: 'cout' does not name a type

line 9: cin' does not name a type

line 11: 'array' bound is not integer constant before ']' token

line 18: 'oceny' was not declared in this scope

Dlaczego nie mogę użyć int ilosc do określenia, ile wartości mieści się we float oceny[]? Przecież jeżeli użytkownik wpisze 5, to wszystko powinno się zgadzać tak jak z oryginalnym kodem w kursie, bo po prostu int ilosc przyjmie wartość 5.

5 odpowiedzi

+2 głosów
odpowiedź 28 lipca 2015 przez niezalogowany
wybrane 28 lipca 2015 przez TheTourist11
 
Najlepsza

Dobra, wszystko po kolei:

  1. line 7: 'cout' does not name a type - nie można wstawiać żadnych komend poza jakąkolwiek funkcję, w tym przypadku main(), czyli że musisz to wstawić do środka (po wszystkim będzie poprawny kod)
  2. line 9: 'cin' does not name a type - dokładnie to samo
  3. line 11: 'array' bound is not integer constant before ']' token - tablica MUSI wiedzieć ile ma mieć elementów przed kompilacją programu, no chyba, że użyjesz do tego wskaźnika i dynamicznego alokowania tablic (odcinek dziesiąty kursu Pana Mirosława), więc ja ci tego nie wytłumaczę, tylko dam dobry kod, a jak chcesz się dowiedzieć, to musisz dojść do dziesiątego odcinka ;)
  4. line 18: 'oceny' was not declared in this scope - no, zła tablica, to po prostu nie działa, bo trzeba najpierw dobrze zadeklarować tablicę, żeby potem z niej korzystać ;)

Tutaj masz przykład kodu:

#include <iostream>
#include <stdio.h>

using namespace std;

int ilosc;
float *oceny;
float suma, srednia;

int main()
{
    cout << "Wpisz, z ilu ocen chcesz uzyskac srednia: ";
    cin >> ilosc;
    oceny=new float[ilosc];

    for(int i=0; i<ilosc; i++)
    {
        cout << endl << "Podaj " << i+1 << " ocene: ";
        cin >> oceny[i];
        suma+=oceny[i];
    }
    srednia=suma/ilosc;
    cout << endl << "Srednia = " << srednia << ".";
    getchar();

    return 0;
}

Jeszcze tylko ci zostało przypomnienie o tym, że nie ma ocen powyżej 6 ;)

Pozdrawiam i mam nadzieję, że już wszystko zrozumiałeś ;)

komentarz 28 lipca 2015 przez Patrycjerz Mędrzec (192,320 p.)

Naprawdę, chwała ci za to, że ci się chciało coś takiego napisać laugh

komentarz 28 lipca 2015 przez niezalogowany
A dziękuję :3 Widzę właśnie, że początkujący, a niektórym aż się nie chce od samego patrzenia, ale przecież to bardzo prosty problem, a zwykle takie tematy to dla mnie proste zdobywanie punktów ;)
komentarz 28 lipca 2015 przez TheTourist11 Nowicjusz (150 p.)
Dzięki bardzo za pomoc! Po poprawieniu działa tak, jak sobie wyobraziłem ;)
komentarz 28 lipca 2015 przez niezalogowany
Nie ma za co, oglądaj dalej kurs ;)
0 głosów
odpowiedź 28 lipca 2015 przez Patrycjerz Mędrzec (192,320 p.)
Wg dobrego smaku nie powinno się umieszczać skróconych linków, bo nie wiadomo, dokąd prowadzą.
0 głosów
odpowiedź 28 lipca 2015 przez Patrycjerz Mędrzec (192,320 p.)

Przy deklaracji ilości elementów zmiennej tablicowej powinno się używać wartości stałej, w tym przypadku const int ilosc. Także wszelakie instrukcje powinny być w funkcji main.

0 głosów
odpowiedź 28 lipca 2015 przez Boshi VIP (100,240 p.)
Nie nie będzie się zgadzać, bo używasz tablicy statycznej gdzie kompilator musi znać ilość elementów przy kompilacji.. użyj  tablicy dynamicznej.

Oceny nie są zadeklarowane ponieważ nie przepuścił ci deklaracji tablicy
komentarz 28 lipca 2015 przez Patrycjerz Mędrzec (192,320 p.)

To jest laik, może nie gmatwaj mu głowy zmiennymi dynamicznymi wink Przecież można to zrobić inaczej.

komentarz 28 lipca 2015 przez Boshi VIP (100,240 p.)
Można, ale pyta czego nie działa, więc tłumaczę.
0 głosów
odpowiedź 28 lipca 2015 przez Dorion300 Szeryf (90,250 p.)
edycja 28 lipca 2015 przez Dorion300

Cout i cin muszą być w funkcji...

NIe można ot tak wykonywać operacje poza funkcją main.... TO NIE JEST PYTHON!

 

#include <iostream>

using namespace std;

int ilosc;

float suma, srednia;

int main()
{
    cout<<"Wpisz, z ilu ocen chcesz uzyskac srednia: ";

    cin>>ilosc;
    float *oceny = new float[ilosc];
    for(int i=0; i<ilosc; i++)
    {
        cout<<endl<<"Podaj "<<i+1<<" ocene: ";
        cin>>oceny[i];
        suma += oceny[i];
    }
    srednia = suma / ilosc;
    cout<<endl<<"Srednia = "<<srednia;

    delete [] oceny;
    return 0;
}

 

komentarz 28 lipca 2015 przez Patrycjerz Mędrzec (192,320 p.)
Przecież było wspominane, że ilość elementów tablicy deklaruje się stałą...
komentarz 28 lipca 2015 przez Dorion300 Szeryf (90,250 p.)
Tu akurat zależy od kompilatora...

Ale proszę, poprawiłem...
komentarz 28 lipca 2015 przez Patrycjerz Mędrzec (192,320 p.)

Rzeczywiście, to zależy od kompilatora. U mnie też by to przeszło, ale warto uczyć początkujących dobrych nawyków. Odpłaci im się to w większych projektach wink

komentarz 28 lipca 2015 przez niezalogowany

To nie jest Python!

Oj tak, żaden język nie jest jak Python :D

komentarz 28 lipca 2015 przez Patrycjerz Mędrzec (192,320 p.)

Z wyjątkiem samego Pythona laugh

komentarz 28 lipca 2015 przez niezalogowany

A no tak :3 Toż to jest bardzo... Ekhem, NIETYPOWY język ;) Sam się go uczę :3 Ale i tak C++ to heart4ever ;D

Podobne pytania

+2 głosów
0 odpowiedzi 272 wizyt
pytanie zadane 22 sierpnia 2018 w C# przez Seba22 Nowicjusz (240 p.)
+4 głosów
2 odpowiedzi 490 wizyt
0 głosów
5 odpowiedzi 355 wizyt
pytanie zadane 21 marca 2016 w HTML i CSS przez Daniel Kamiński Nowicjusz (160 p.)

92,540 zapytań

141,382 odpowiedzi

319,481 komentarzy

61,928 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...