Skocz do zawartości
Yellgren

symulator liczenia średnich uczniów C++ count

Promowane odpowiedzi

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 innych 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
  • Lubię to! 1

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych 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
  • Lubię to! 4

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Utwórz konto

Utwórz konto. To darmowe i bardzo proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz już konto? Zaloguj się tutaj.

Zaloguj się teraz


×