Zdravím lidi,
Dostali jsme za úkol ročníkovou práci v jazyku C. Bohužel než sem postřehl že to píší v C++, měl jsem půlku programu hotovou. Ale co, snad mě to paní učitelka odpustí. Ale k věci.
Program zlouží jakási klasifikace studentů. Vložení jmen studentů, jaké má student předměty a známky. A spoustu dalších funkcí. Bohužel jsem se sekl u jedné věci. A to, že se mě ještě nepodařilo vypočítat průměr žáka. Pro jistotu zde uvádím celý zdrojový kód. Děkuji všem kdo odpoví.
#include <iostream>
#include <stdlib.h>
using namespace std;
// Definice funkcí
int nabidka();
int prumerStudenta(int pocetZnamek, int soucetZnamek);
// Globálni proměnné
int moznost;
int main()
{
const int pocetStudentu = 2;
int pocetPredmetu, zobrazitUdaje = 0, pocetZnamek, soucet = 0, hledanaZnamka, hledanyPredmet, chybnaZnamka;
char student[pocetStudentu][30];
char predmet[pocetPredmetu][4];
int znamky[pocetStudentu][pocetPredmetu];
// Proměnná chybnaZnamka: Pokud uživatel zadá známku mimo interval 1-5, bude hodnota N-tého prvku přemazána
for(;;) {
int volba = nabidka(); // Funkci nabídka uložíme do proměnné volba
switch(volba) {
case 1:
// Vybrána první možnost "Zadat udaje pro klasifikaci"
// Aby mohl uživatel použít po načtení všech dat funkci "Vypsat údaje", musí proměnná nabývat hodnotu 1
zobrazitUdaje = 1;
cout << "\na - Zadejte prijmeni 2 studentu.\n";
cout << "-----------------------------------------\n";
// Načtení studentů
for( int i=0; i < pocetStudentu; i++ ) {
cout << "Zadejte prijmeni " << i+1 << ". studenta: ";
cin >> student[i];
}
cout << "\nb - Zadejte POCET PREDMETU. Predmet napiste zktratkou Pr.: MAT, CJL...\n";
cout << "-----------------------------------------\n";
cout << "Pocet predmetu: ";
cin >> pocetPredmetu;
cout << "\n";
// Načtení předmětů
for( int i = 0; i < pocetPredmetu; i++) {
cout << "Nazev " << i+1 << " predmetu: ";
cin >> predmet[i];
}
cout << "\n";
// Načtení známek
for( int i = 0; i < pocetStudentu; i++) {
cout << "\n[" << student[i] << "]\n";
for( int j = 0; j < pocetPredmetu; j++) {
cout << predmet[j] << ": ";
cin >> znamky[i][j];
if(znamky[i][j] > 5 ) {
cout << "\aSpatne zadana znamka\n";
znamky[i][j] = chybnaZnamka;
}
soucet += znamky[i][j];
pocetZnamek++;
}
}
cout << "\n\n";
break;
case 2:
// Vybrána druhá možnost "Vypsat udaje"
if(zobrazitUdaje==0) { // Nebyli vyplněny příjmení studentů, známky a předměty
cout << "\n\aNeni co vypsat. Musite nejdrive zadat udaje!!\n\n";
} else { // Byli načteni studenti, předměty, známky
cout << "\n2 - Vypis studentu a znamek: \n";
cout << "-----------------------------------------\n";
for (int i = 0; i < pocetStudentu; i++) {
cout << "\n" << i+1 << "| " << student[i] << "\n";
for (int j = 0; j < pocetPredmetu; j++) {
cout << predmet[j] << " : ";
cout << znamky[i][j] << "";
if(znamky[i][j] == 0) { // Pokud se nějaká známka rovná nule, oznámi to
cout << " - Pravdepodobne spatne zadana znamka. Z intervalu 1-5";
}
cout << "\n";
}
}
}
break;
case 3:
// Vybrána třetí možnost "Výpočet průměru známek u každého studenta"
if(zobrazitUdaje==0) {
cout << "\n\aNelze vypocitat prumer. Musite nejdrive zadat udaje!!\n\n";
} else {
cout << "\n3 - Vypocet prumeru znamek u kazdeho studenta: \n";
cout << "-----------------------------------------\n";
for( int i = 0; i < pocetStudentu; i++) {
cout << "\n" << student[i] << " ma prumer: ";
for (int j = 0; j < pocetPredmetu; j++) {
cout << prumerStudenta(pocetZnamek, soucet);
}
}
}
cout << "\n";
break;
case 4:
// Vybrána čtvrtá možnost "Výpis studentu podle hledané známky"
if(zobrazitUdaje==0) {
cout << "\n\aNelze hledat. Musite nejdrive zadat udaje!!\n\n";
} else {
cout << "\n4 - Vypis studentu podle hledane znamky: \n";
cout << "-----------------------------------------\n";
cout << "Zadejte znamku podle ktere chcete hledat: ";
cin >> hledanaZnamka; // Vstup hledané známky
for(int i = 0; i < pocetStudentu; i++) {
cout << "\n" << student[i] << ":\n";
for (int j = 0; j < pocetPredmetu; j++) {
if(znamky[i][j]==hledanaZnamka) {
cout << "Predmet " << predmet[j] << "=" << hledanaZnamka << "\n";
}
}
}
}
cout << "\n";
break;
case 5:
// Vybrána pátá možnost "Výpis všech známek z určitého předmětu"
if(zobrazitUdaje==0) {
cout << "\n\aNelze hledat. Musite nejdrive zadat udaje!!\n\n";
} else {
cout << "\n5 - Vypis vsech znamek z urciteho predmetu: \n";
cout << "-----------------------------------------\n";
for (int i = 0; i < pocetPredmetu; i++) {
cout << "Predmet " << predmet[i] << ": ";
for (int j = 0; j < pocetStudentu; j++) {
cout << "" << znamky[j][i] << ",";
}
cout << "\n";
}
}
cout << "\n";
break;
case 0:
// Ukončení programu
return 0;
break;
default:
// Pokud byla zvolena jiná volba než která je dostupná, vypíše to
cout << "\aVolba neexistuje!! Zkuste to znovu.\n";
break;
}
}
system("PAUSE");
return 0;
}
// Funkce
int nabidka() {
// Nabídka programu KLASIFIKACE
cout << "\t\t\t********** NABIDKA **********\n\n";
cout << "\t\t\t 1) Zadat udaje pro klasifikaci\n";
cout << "\t\t\t 2) Vypsat udaje\n";
cout << "\t\t\t 3) Vypocet prumeru znamek u kazdeho studenta\n";
cout << "\t\t\t 4) Vypis studentu podle hledane znamky\n";
cout << "\t\t\t 5) Vypis vsech znamek z urciteho predmetu\n";
cout << "\t\t\t 0 Ukoncit program\n";
cout << "\t\t\t Vase volba: ";
cin >> moznost;
return moznost;
}
int prumerStudenta(int pocetZnamek, int soucetZnamek) {
int prumer;
prumer = soucetZnamek / pocetZnamek; // Spočítá průměr průměru
return prumer;
}
Editoval midin: Příště dávej linky do tagu code.