Witam,
Mam problem z dwoma zsynchronizowanymi wektorami. Program zaczyna się sypać od momentu
Wprowadz swoje oceny posrednie i ocene z egzaminu koncowego.
Treść zadania z książki: napisz program, który będzie przetwarzał oceny więcej niż jednego studenta. Program powinien
przechowywać dwa synchronizowane kontenery vector: pierwszy powinien zawierać nazwiska studentów, drugi
powinien przechowywać oceny końcowe, wyliczane na podstawie wprowadzanych danych. Można wstępnie założyć
niezmienną liczbę ocen z zadań domowych.
Kod:
#include "stdafx.h"
#include <algorithm>
#include <iomanip>
#include <ios>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
cout << "Podaj imiona studentow" << endl;
string imie;
vector<string>imieStudenta;
while (cin >> imie)
imieStudenta.push_back(imie);
// sprawdz czy studen podal jakies imiona
typedef vector<string>::size_type rozmWektora;
rozmWektora rozmiar = imieStudenta.size();
if (rozmiar == 0)
{
cout << endl << "Musisz wprowadzic imiona" << endl;
return 1;
}
//zapytaj o oceny z kolokwiow i ocene z egaminu koncowego
cout << "Wprowadz swoje oceny posrednie i ocene z egzaminu koncowego" << endl;
double midterm, final;
cin >> midterm >> final;
// zapytaj o oceny z zadan domych
cout << "Wprowadz wszystkie posiadane oceny z zadan domowych, "
"liste ocen zakoncz znakiem konca pliku: " << endl;
double x;
vector<double> homework(20);
// niezmiennik
// homework zawiera wszystkie odczytane do tej pory oceny
while (cin >> x)
homework.push_back(x);
typedef vector<double>::size_type vec_sz;
vec_sz size = homework.size();
if (size == 0)
{
cout << endl << "Musisz wprowadzic oceny" << endl;
return 1;
}
// posortuj oceny
sort(homework.begin(), homework.end());
// oblicz mediane ocen zadan domowych
vec_sz mid = size /2;
double median;
median = size % 2 == 0 ? (homework[mid] + homework[mid] - 1) / 2
: homework[mid];
// oblicz i wyprowadz ocene koncowa studenta
streamsize prec = cout.precision();
cout << 0.2 * midterm + 0.4 * final * 0.4 * median
<< setprecision(prec) << endl;
system("pause");
return 0;
}