Sortowana tablica czasów

Potrzebujesz pomocy z C, C++, perl, python, itp.
Awatar użytkownika
Dudi879
Beginner
Posty: 106
Rejestracja: 15 września 2013, 10:47

Sortowana tablica czasów

Post autor: Dudi879 »

Witam. Mam problem z jednym zagadnieniem, musze zrobić tablicę 100-elementową, która przypisuje do kolejnych zmiennych czasy sprintera, ale co każde przypisanie wyświetla posortowane czasy. Program mi sie kompiluje, działa, ale nie wyświetla czasów. Co jest nie tak?

Kod: Zaznacz cały

#include "stdafx.h"#include <iostream>
#include <conio.h>


using namespace std;
void wczytaj(float czasy[], char znak, int ilosc);
void sortowanie(float czasy[], int ilosc);
void wypisz(float czasy[], int ilosc);
//*******************************************************************
int main()
{
    int ilosc = 0;
    float czasy[100];
    char znak = 0;
    while (znak != 'T' && znak != 't')
    {
        wczytaj(czasy, znak, ilosc);
        sortowanie(czasy, ilosc);
        wypisz(czasy, ilosc);
        znak = _getch();
        cout << endl;
    }
    return 0;
}
//*******************************************************************
void wczytaj(float czasy[], char znak, int ilosc)
{
    cout << "Podaj kolejny czas w sekundach: ";
    cin >> czasy[ilosc];
    ilosc++;
}
//*******************************************************************
void sortowanie(float czasy[], int ilosc)
{
    for (int i = 1; i<ilosc; i++)
    {
        for (int j = ilosc - 1; j >= 1; j--)
        {
            if (czasy[j]<czasy[j - 1])
            {
                float bufor;
                bufor = czasy[j - 1];
                czasy[j - 1] = czasy[j];
                czasy[j] = bufor;
            }
        }
    }
}
//*******************************************************************
void wypisz(float czasy[], int ilosc)
{
    cout << "================================\n";
    cout << "Czasy od najgorszych (malejaco):\n";
    for (int i = ilosc; i > 0; i--)
    {
        cout << "Czas " << i << ". = " << czasy[i - 1] << endl;
    }
    cout << "================================\n";
    cout << "Czy zakonczyc (T/N)?";
}
GolemSan
Posty: 59
Rejestracja: 03 czerwca 2014, 22:31

Post autor: GolemSan »

Spróbuj zmodyfikować tak:

Kod: Zaznacz cały

 ...
 int wczytaj(float czasy[], char znak, int ilosc);
 ....
 int main()
 {
 ...
     while (znak != 'T' && znak != 't')
     {
         ilosc = wczytaj(czasy, znak, ilosc);
 ....
     }
  return 0;
 }

 int wczytaj(float czasy[], char znak, int ilosc) 
 {
     cout >> czasy[ilosc];
 return(ilosc++);
 }
 ...
Ewentualnie przenieść ilosc++ z funkcji wczytaj do pętli while.
Awatar użytkownika
Dudi879
Beginner
Posty: 106
Rejestracja: 15 września 2013, 10:47

Post autor: Dudi879 »

Wielkie dzięki, chociaż już sam jakoś doszedłem do tego, że funkcja powinna jeszcze zwracać wartość "ilosc" ;)
ODPOWIEDZ