Tytuł zadania: Kalkulator średniej ocen ucznia
Treść zadania egzaminacyjnego
Wykonaj aplikację konsolową w języku C#, która umożliwia użytkownikowi (uczniowi) wpisanie ocen z wybranych przedmiotów. Program powinien:
- Poprosić użytkownika o imię i nazwisko.
- Poprosić o podanie liczby przedmiotów.
- Dla każdego przedmiotu:
- Poprosić o nazwę przedmiotu.
- Poprosić o liczbę ocen.
- Poprosić o podanie ocen (od 1 do 6) – wszystkie zapisane do listy.
- Obliczyć i wyświetlić:
- Średnią ocen z każdego przedmiotu.
- Ogólną średnią ze wszystkich ocen.
- Wyświetlić podsumowanie w formie raportu (imię i nazwisko ucznia, przedmioty i ich średnie, ogólna średnia).
Przykładowy przebieg programu (interakcja)
Podaj swoje imię i nazwisko: Anna Kowalska
Ile przedmiotów chcesz wprowadzić? 2
Podaj nazwę przedmiotu 1: Matematyka
Ile ocen z Matematyki? 3
Podaj ocenę 1: 4
Podaj ocenę 2: 5
Podaj ocenę 3: 3
Podaj nazwę przedmiotu 2: Informatyka
Ile ocen z Informatyki? 2
Podaj ocenę 1: 6
Podaj ocenę 2: 5
==== RAPORT ====
Uczeń: Anna Kowalska
Matematyka – średnia: 4,00
Informatyka – średnia: 5,50
Średnia ogólna: 4,75
Wskazówki do rozwiązania
- Użyj klas i listy:
- Klasa Przedmiot z polami: Nazwa, Oceny, Srednia.
- W klasie głównej Main lista List<Przedmiot> do przechowywania danych.
- Obsługa danych wejściowych:
- Użyj Console.ReadLine() do pobierania danych od użytkownika.
- Konwertuj dane na liczby za pomocą int.Parse() lub double.Parse().
- Obliczanie średnich:
- Średnia = suma ocen / liczba ocen – np. używając List.Average().
- Wyświetlanie raportu:
- Użyj Console.WriteLine() z formatowaniem tekstu do czytelnej prezentacji wyników.
Warianty rozbudowy (dla chętnych):
- Dodanie zapisu raportu do pliku tekstowego (File.WriteAllText).
- Walidacja danych wejściowych (czy ocena mieści się w zakresie 1–6).
- Sortowanie przedmiotów wg średniej.
Rozwiązanie
Tu podaj rozwiązanie
using System;
using System.Collections.Generic;
class Przedmiot
{
public string Nazwa { get; set; }
public List<int> Oceny { get; set; }
public double ObliczSrednia()
{
if (Oceny.Count == 0) return 0;
return (double)Oceny.Sum() / Oceny.Count;
}
}
class Program
{
static void Main()
{
Console.WriteLine("Podaj swoje imię i nazwisko:");
string imieINazwisko = Console.ReadLine();
Console.WriteLine("Ile przedmiotów chcesz wprowadzić?");
int liczbaPrzedmiotow = int.Parse(Console.ReadLine());
List<Przedmiot> przedmioty = new List<Przedmiot>();
for (int i = 0; i < liczbaPrzedmiotow; i++)
{
Console.WriteLine($"\nPodaj nazwę przedmiotu {i + 1}:");
string nazwa = Console.ReadLine();
Console.WriteLine($"Ile ocen z {nazwa}?");
int liczbaOcen = int.Parse(Console.ReadLine());
List<int> oceny = new List<int>();
for (int j = 0; j < liczbaOcen; j++)
{
Console.Write($"Podaj ocenę {j + 1}: ");
int ocena = int.Parse(Console.ReadLine());
if (ocena >= 1 && ocena <= 6)
{
oceny.Add(ocena);
}
else
{
Console.WriteLine("Błąd: Ocena musi być od 1 do 6.");
j--;
}
}
przedmioty.Add(new Przedmiot { Nazwa = nazwa, Oceny = oceny });
}
// Obliczanie średniej ogólnej (arytmetycznej)
double suma = 0;
int licznik = 0;
foreach (var p in przedmioty)
{
foreach (var o in p.Oceny)
{
suma += o;
licznik++;
}
}
double sredniaOgolna = licznik > 0 ? suma / licznik : 0;
// Wyświetlenie raportu
Console.WriteLine("\n==== RAPORT ====");
Console.WriteLine($"Uczeń: {imieINazwisko}\n");
foreach (var p in przedmioty)
{
Console.WriteLine($"{p.Nazwa} – średnia: {p.ObliczSrednia():0.00}");
}
Console.WriteLine($"\nŚrednia ogólna: {sredniaOgolna:0.00}");
Console.WriteLine("=================");
}
}
