Obserwujący 0
Yellgren

symulator liczenia średnich uczniów C++ count

4 posty w tym temacie

Witam, tworze sobie symulator liczenia średnich uczniów, a że jestem nie zbyt ogarnięty to mam taki problem:

Dałem na początku:

 

 cout << "Wprowadz liczbe uczniow:" << endl;
    cin >> uczniowie;

i teraz bym chcial zeby wydrukowalo 

 

cout << "wprowadz srednia ucznia o numerze 1:" <<endl;

tyle razy ile jest uczniow

Udostępnij tego posta


Odnośnik do posta
Udostępnij na stronach

Umieść to co pobrałeś w pętli for, która ma górną granicę taką jaką podałeś.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na stronach
double srednia[10];
for (int i=1; i<=uczniowie; i++) {
	cout << "Wprowadz srednia ucznia o numerze " << i << ": ";
    cin >> srednia[i-1];
}

Nie wiem czy nie pomyliłem czegoś. Musisz utworzyć tablicę, bo inaczej średniej nie zapiszesz. Chyba, że w węzłach. Sprawdź czy działa.

 

PS. Możesz sprawdzić czy działa wyświetlając wyniki tak:

for (int j=0; j<uczniowie; j++) {
   cout << srednia[j] << endl;                        
}

 

Edytowane przez MatYs
1 osoba lubi to

Udostępnij tego posta


Odnośnik do posta
Udostępnij na stronach

Odnośnie postu wyżej. 

 

Kolega deklaruje tablice 10 elementową  ( double srednia[10]; ), teoretycznie wszystko jest ok, ale problem pojawi się, gdy wprowadzimy liczbę uczniów większą niż 10, wtedy program się wysypie. 

Intuicyjnie do głowy przychodzi pomysł by zadeklarować to w ten sposób: double srednia[uczniowie]; Ale taka praktyka jest nie dozwolona! (Z tego co pamiętam to DEV C++ umożliwiał takie coś ;), ale to jest poważny błąd!).

Można by też zadeklarować większą tablice np.: 50 elementową, ale wtedy, gdy wprowadzimy tylko 10 uczniów to kolejne 40 miejsc tablicy i tak zapcha nam pamięć RAM (Są to bardzo małe wielkości, ale jednak trzeba myśleć o optymalizacji ;)).

 

Ja proponuję zastosować wektory, nie musimy się wtedy martwić o wielkość naszej tablicy, a ogranicza nasz wtedy zmienna uczniowie, która w programie niżej może pomieścić do 65 535 uczniów. (Zakładam wstępnie, że nie planujesz wprowadzać większej ilości, jeżeli tak to wystarczy zmienić na int, long lub long long).

 

A kod powinien wyglądać tak: 

 

#include <iostream>
#include <vector>                   // Deklaruje dodatkową bibliotekę, która jest potrzebna do użycia wektora.
using namespace std;
int main()
{
    unsigned short uczniowie = 0;   // Deklaruję zmienną typu unsigned, czyli dodatnia (nie będziemy wprowadzać ujemnej liczby uczniów).
                                    // Dodatkowo typ short, nie potrzebujemy więcej chyba, że planujesz wprowadzać więcej niż 65tyś uczniów.
                                    // Zeruje zmianną ( dobry nawyk )
    vector < float > srednia;       // Deklaruję wektor, typu float jest on mniejszy od double, a przy średniej nie potrzebujemy mieć tak wielkiej precyzji jak w double.
    float wartoscSredniej = 0;      // Tworze zmienną pomocniczą, która posłuży mi do przenoszenia wprowadzonych danych do wektora.
    cout << "Wprowadz liczbe uczniow: " << endl;
    cin >> uczniowie;
    for (int i = 0; i < uczniowie; i++) {
        cout << "Wprowadz srednia ucznia o numerze " << i+1 << ": ";
        cin >> wartoscSredniej;
        srednia.push_back( wartoscSredniej );       // Zapisuje wprowdzona wartosc do kolejnego miejsca w wektorze
    }
    for (int i = 0; i < srednia.size(); i++) {      // srednia.size() - Pobieram rozmiar wektora. W tym wypadku powinno być to samo (srednia.size() = uczniowie).
        cout << "Srednia ucznia o nr " << i+1 << " to: " << srednia[i] << endl;      // Wyświetlam jak ze zwykłej tablicy.
    }
    return 0;
}

Zrealizowałem tylko wprowadzanie i wyświetlanie :)  Wprowadzanie poszczególnych ocen pozostawiam tobie.

 

Myślę, że w przyszłości można program rozwinąć o menu, zapis i odczyt danych z pliku, wyrzucenie kodu do funkcji, zewnętrznych plików itd. 

Jeżeli popełniłem jakiś błąd to niech ktoś da znać ;).

Jak coś jest nie jasne to służę pomocą.

Edytowane przez EvilD
3 osoby lubią to

Udostępnij tego posta


Odnośnik do posta
Udostępnij na stronach

Napisano przed chwilą

iCash.pl

Żeby dodać komentarz, musisz założyć konto lub zalogować się

Tylko zarejestrowani użytkownicy mogą dodawać komentarze

Rejestracja

Załóż nowe konto. To bardzo proste!


Zaloguj się

Posiadasz już konto? Zaloguj się tutaj.


Zaloguj się teraz
Obserwujący 0