#include<iostream.h> // biblioteka <iostream.h>
# define MAX 50 // definirame promenliva MAX na 50 simvola
struct uchenik // struct,za vyvejdane na danni na uchenika
{
char ime[MAX]; // tip char, masiv s promenliva ime, na uchenika s definirano 50 simvola
char addr[MAX]; // adres s masiv 50 simvola
short klas; // tip short, klas
float sr_uspeh; // tip float za sreden uspeh, 7 simvola zad desetichnata zapetaq
};
int menu(); // tip integer, za vyvejdane na menu
void input(uchenik masiv[],int index); // menu za vkarvane na informaciq
void output(uchenik masiv[],int index); // menu za izkarvane na informaciq
int main()
{
int operacia; // tip integer, za izbirane na operacia na menuto
uchenik masiv[10]; //promenliva, za masiv
float sum_uspeh=0.0f; // sredniq uspeh na vsichki uchenici zaedno
int broj=0; //promenliva, koqto pomaga za izvejdane i smqtane
int IBS=0;//IBS=Index of Best Student (izvejdane na nai-dobrite uchenici)
for(;;)
{
operacia=menu(); // promenlivata operacia stava na menu()
switch(operacia) //vryzka za operaciata menu
{
case 1: // vyvejdane na danni za uchenik
{
input(masiv,broj);
if(masiv[broj].sr_uspeh>masiv[IBS].sr_uspeh)
IBS=broj;
sum_uspeh+=masiv[broj].sr_uspeh;
broj++;
}break;
case 2: //pri 2-ka v dadenoto menu shte vi izvede vyvedenite danni za uchenika
{
cout<<"\nVyvedeni danni:\n";
for(int i=0;i<broj;i++)
output(masiv,i);
}break;
case 3: //pri 3-ka v dadenoto menu shte izvede sredniq uspeh na uchenicite
{
cout<<"\nSr uspeh na vs uchenici e:\t"<<sum_uspeh/broj<<"\n\n";
}break;
case 4: // izvejdane na uchenici,koito sa s uspeh po-malyk ot sredniq uspeh
{
cout<<"\nUchenici sys sr.uspeh pod srednia sa:\n";
for(int j=0;j<broj;j++)
{
if(masiv[j].sr_uspeh<sum_uspeh/broj)
output(masiv,j);
}
}break;
case 5: //pri 5-ca ot klav se izvejdane na uchenik, s nai-visok uspeh
{
cout<<"\nUchenikyt sys naj-dobyr uspeh e:\n";
output(masiv,IBS);
}break;
case 6: // pri natiskane na 6-ca ot klav se izliza ot programata
{
return 0; //izhod ot programata
}
}
}//for
}
int menu() // obosnovqvane na funkciqta menu.
{
int izbor; // vyvejdane na promenliva za izbor ot chislata 1 do 6 za syotvetnite menuta
do // da vyrshi tezi deistviq
{
cout<<"MENU \n\n"; // menu vyzmojnost za izbirane na syotvetnata zadacha
cout<<"1.Vyvejdane na danni za u4enik\n";
cout<<"2.Izvejdane na vyvedenite danni \n";
cout<<"3.Izvejdane na sr.uspeh \n";
cout<<"4.Uchenici s uspeh pod srednia \n";
cout<<"5.Uchenik s naj-visok uspeh \n";
cout<<"6.EXIT \n";
cout<<"Molia izberete operacia: ";
cin>>izbor;
fflush(stdin); //izbirane na case funkciqta za menu 1-2-3-4-5-6
if(izbor>6||izbor<1) cout<<"\n\t-=NEKOREKTEN IZBOR=-\n Opitajte otnovo\n";
else break;
}while(true); //uslovie while(dokato uslovieto e vqrno )
return izbor; // minavane kym dadeniqt izbor
}
void input(uchenik masiv[],int index)
{
if(index>=MAX) //ako se previshi limita to nqma poveche vyvejdane ;)
{
cout<<"\n\t\t-=DOSTIGNAT LIMIT NA VYVEDENITE DANNI=-\n";
return;
}
cout<<"Ime:\t\t"; // izvejdane na ime - \t - edna tabulaciq napred (demek svobodno mqsto)
cin.getline(masiv[index].ime,MAX); // izpolzvanite masiv[index], ime , max
cout<<"Adres:\t\t"; // syshtoto .. nadolu pak
cin.getline(masiv[index].addr,MAX);
cout<<"Klas:\t\t";
cin>>masiv[index].klas;
cout<<"Sr.Uspeh:\t";
cin>>masiv[index].sr_uspeh;
}
void output(uchenik masiv[],int index) //za izvejdane na danni
{
cout<<"Ime:\t\t"<<masiv[index].ime<<"\n";
cout<<"Adres:\t\t"<<masiv[index].addr<<"\n";
cout<<"Klas:\t\t"<<masiv[index].klas<<"\n";
cout<<"Sr.uspeh:\t"<<masiv[index].sr_uspeh<<"\n\n";
}