Witam. Ten program pobiera jeden wynik i normalnie go zapisuje, przy pierwszym uzyciu wszystkie inne dane ladnie sie przesuwaja, natomiast przy dodawaniu nastepnych czasow - kolejne pozycje sa zapelniane zerami. Gdzie siedzi blad?
//Napisz program, który pozwoli gromadzić w uporządkowanej tablicy liczb
//informacje o najlepszych „czasach” uzyskiwanych przez sprintera podczas treningu.
//Do gromadzenia tych informacji wykorzystaj pseudo - dynamiczną tablicę
//o stałym rozmiarze 100 elementów wykorzystującą dodatkową
//zmienną pomocniczą zliczającą ilość wprowadzonych wyników.
//Nowy wynik powinien być wprowadzany do tablicy w taki sposób
//aby po jego wprowadzeniu zawartość tablicy była nadal uporządkowana malejąco.
#include<iostream>
#include<cstdio>
using namespace std;
void dodaj(int ilosc, double t[]);
void odczytaj(double t[], int ilosc);
int main()
{
double czasy[100] = { 9.58, 9.95, 10.01, 10.04, 10.24, 10.44 };
int wybor;
static int ilosc = 6;
for (int i = 0;; ++i)
{
cout << "---------------------MENU--------------------" << endl;
cout << "-----------1.Dodaj nowy wynik----------------" << endl;
cout << "-----------2.Pokaz tabele rekordow-----------" << endl;
cout << "-----------3.Wylacz program------------------" << endl;
cin >> wybor;
switch (wybor)
{
case 1: dodaj(ilosc, czasy); ++ilosc; break;
case 2: odczytaj(czasy, ilosc); break;
case 3: exit(1); break;
default: cerr << "W menu nie ma takiej opcji!" << endl;
}
}
return 0;
}
void odczytaj(double t[], static int ilosc)
{
for (int i = 0; i < ilosc; ++i)
{
cout << i+1 << ". " << t[i] << endl;
}
}
void dodaj(static int ilosc, double t[])
{
bool czy_dodano = false;
double x;
int miejsce;
double kopia[100];
cout << "Podaj nowy czas uzyskany w biegu na 100m: ";
cin >> x;
++ilosc;
for (int j = 0; j < ilosc; ++j)
{
if (x < t[j])
{
miejsce = j; break;
}
}
for (int i = 0; i < ilosc; ++i) kopia[i] = t[i];
for (int i = miejsce + 1; i < ilosc - miejsce; ++i)
{
t[i] = kopia[i - 1];
}
t[miejsce] = x;
}