Skocz do zawartości
  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

Yellgren

symulator liczenia średnich uczniów C++ count

Promowane odpowiedzi

Yellgren    3

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
MatYs    252
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
EvilD    80

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.


×