Wczytywanie smieci
Napisane: czwartek, 7 czerwca 2012, 21:35
Część ponownie chciałbym prosić o wytłumaczenie co robię źle chodzi mi o to że wczytuje tablice do funkcji poprzez wskaźnik i potem chce przejść całą strukturę dopóki nie znajdę jej końca czyli pieewszego pustego rekordu robiąc to dostaje informacje z tablicy ale po nich śmieci funkcja dalej wypisuje proszę o podpowiedź co robię źle. Mój kod:
Code: Zaznacz cały
#include <iostream>
using namespace std;
struct Student
{
char Imie[30];
char Nazwisko[30];
int numerIndeksu ;
int liczba_punktow;
} s={NULL,NULL,0,0};
void Wczytaj(Student &s );
void PokazWyniki(Student *s);
void Najlepszy(Student *s);
void Najslabszy(Student *s);
void SredniWynik(Student *s);
int main()
{
Student s[4] ={"pierwszy" ,"pierwszy 1" , 19099 , 21192 ,"pierwszy" ,"drugi 2" , 29099 , 292,"pierwszy" ,"trzeci 3" , 9099 , 2922,"pierwszy" ,"czwarty 4" , 92199 , 2192};
// for(int i=0;i<sizeof(s)/sizeof(Student);i++)
// {
// cout << "\t\t\tDODAWANIE Studenta" ;
// cout << "\n================================================================================"<<endl;
// cout << "Student Nr :"<< i <<endl;
// Wczytaj(s[i]);
// }
PokazWyniki(s);
Najlepszy(s);
Najslabszy(s);
SredniWynik(s);
}
void Wczytaj(Student &s )
{
cout <<endl;
cout << "Podaj Imie: ";
cin >> s.Imie;
cout << "Podaj Nazwisko: ";
cin >> s.Nazwisko;
cout << "Podaj Numer indexu: ";
cin >> s.numerIndeksu;
cout << "Podaj liczbę zdobytych punktów ";
cin>> s.liczba_punktow;
cout << "\nDziekuje dane studenta zostaly dodane \n\n";
cout << "\n================================================================================"<<endl;
}
void PokazWyniki(Student *s)
{
cout << "\t\t\tWYPISYWANIE WYNIKOW" ;
cout << "\n********************************************************************************"<<endl;
int i=0;
while(s->numerIndeksu !=NULL)
{
cout << i+1 << ") "<< s->Nazwisko <<" \""<<s->Imie <<"\" "<< s->numerIndeksu <<" " << s->liczba_punktow<<endl;
i++;
s++;
}
}
void Najlepszy(Student *s)
{
int najwiecej=s->liczba_punktow;
Student adres;
for (int i=0 ; i <50; i++)
{
if(najwiecej < s->liczba_punktow and s->liczba_punktow !=NULL)
{
najwiecej=s->liczba_punktow;
adres=*s;
}
s++;
}
cout << "\n********************************************************************************"<<endl;
cout << "\t\t\tNajwięcej punktow zdobyl : " ;
cout << "\n================================================================================"<<endl;
cout << "Student: "<< adres.Nazwisko << adres.Imie << "liczba zdobytych punktow: " << adres.liczba_punktow ;
cout << "\n================================================================================"<<endl;
}
void Najslabszy(Student *s)
{
int najmniej=s->liczba_punktow;
Student adres;
for (int i=0 ; i <4; i++)
{
if(najmniej > s->liczba_punktow and s->liczba_punktow !=NULL)
{
najmniej= s->liczba_punktow;
adres=*s;
}
s++;
}
cout << "\n********************************************************************************"<<endl;
cout << "\t\t\tNajmniej punktow zdobyl : " ;
cout << "\n================================================================================"<<endl;
cout << "Student: "<< adres.Nazwisko << adres.Imie << "liczba zdobytych punktow: " << adres.liczba_punktow ;
cout << "\n================================================================================"<<endl;
}
void SredniWynik(Student *s)
{
int ile=0;
double suma_punktow=0;
double srednia=0;
while(s->liczba_punktow !=NULL)
{
suma_punktow=s->liczba_punktow+suma_punktow;
ile++;
s++;
}
cout <<"Srednia ocena z tego egzaminu: "<<suma_punktow/ile;
}