Musze napisać na zajęcia taki program
[spoiler]
ZADANIE
Grupę 100 studentów Informatyki poproszono o ocenę praktyk odbytych w firmie XXX.
Każdy student mógł przyznać ocenę od 0 do 10.
Zadeklarować N –elementową np.100-elementową tablicę student typu int.
1. Wylosować elementy tej tablicy z przedziału <0, 10>.
2. Wypisać wylosowaną tablicę.
3. Obliczyć średnią ocenę, którą dali studenci.
4. Obliczyć medianę (środkowa wartość w posortowanej tablicy, w przypadku parzystej
liczby elementów tablicy jest to średnia dwóch środkowych wartości).
5. Obliczyć ile studentów przyznało każdą z ocen.
W tym celu zadeklarować 11 -to elementową tablicę ocena, i-ty element tej tablicy
zawiera ilość studentów którzy dali tę ocenę.
6. Obliczyć którą ocenę studenci przyznali największą ilość razy. Jeżeli było kilka takich
ocen wypisać wszystkie.
7. Narysować histogram złożony z '*'.
Histogram pokazuje liczebności poszczególnych grup.
Program podzielić na funkcje. Rozmiar tablicy ustalić za pomocą dyrektywy definiującej
[/spoiler]
Poradziłem sobie z pierwszymi 5 podpunktami ale mam problem z 6. Mam wrażenie że jest coś zle z algorytem sortującym ale sam nie wiem.Mój kod wygląda tak:
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <time.h>
#define g 100
using namespace std;
void losuj( int student[], int n );
void wypisz( int student[], int n );
float srednia( int student[], int n );
void podsumowanie( int student[], int ocena[], int n );
void sortowanie( int student[], int n );
int main()
{
int student[ g ];
int ocena[ 11 ] = { 0 };
int tab1[ 11 ] = { 0 };
srand( time( 0 ) );
losuj( student, g );
cout << "Elementy tablicy: " << endl;
wypisz( student, g );
srednia( student, g );
podsumowanie( student, ocena, g );
sortowanie( student, g );
return 0;
}
void losuj( int student[], int n )
{
srand( time( NULL ) );
for( int i = 0; i < n; i++ )
student[ i ] = rand() % 11;
}
void wypisz( int student[], int n )
{
for( int i = 0; i < n; i++ )
cout << " " << student[ i ];
}
float srednia( int student[], int n )
{
int s;
for( int i = 0; i < 100; i++ )
s = s + student[ i ];
cout << endl << "Srednia to: " << s / 100 << endl;
}
void podsumowanie( int student[], int ocena[], int n )
{
int naj = 0;
for( int i = 0; i < 100; i++ )
{ ocena[ student[ i ] ] ++; }
cout << "Podsumowanie: " << endl;
wypisz( ocena, 11 );
cout << endl;
int j = 0;
for( int i = 0; i < 11; i++ )
{ if( ocena[ i ] >= ocena[ j ] ) j = i; }
cout << "Dominanta jest liczba " << student[ j ] << endl;
}
void sortowanie( int student[], int n )
{
for( int i = 0; i < n; i++ )
for( int j = 1; j < n - i; j++ )
if( student[ j - 1 ] > student[ j ] )
swap( student[ j - 1 ], student[ j ] );
int mediana;
mediana =( student[( n - 1 ) / 2 ] + student[ n / 2 ] ) / 2;
cout << endl << "Mediana wynosi: " << mediana;
}