Регистрация: 18.06.2010
Сообщений: 7
|
Функции в С++
Код:
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define nmb 20
typedef struct {
char name_stud[30] ;
float it_ball[nmb];
int progul [nmb];
}CLASS;
typedef struct { char name_sbj[20];
int nmb_less;
}SBJ;
void Otch(int nmb_1,int nmb_2,CLASS clas[],int otl, int hor, int tr, int dv, int n_a);
void vivod(int otl,int hor,int tr,int dv,int n_a);
void main()
{
CLASS clas[nmb];
SBJ sbj[nmb];
int i,j,k,m,nmb_stud,nmb_sbj,mark[30],progul[30],nmb_ball,otl,hor,tr,dv,n_a,otl_pr,hor_pr,tr_pr,dv_pr,n_a_pr;
float c,sum,sb[nmb];
clrscr();
otl=0;
hor=0;
tr=0;
dv=0;
n_a=0;
puts("Vvedite kolishestvo uchenikov v klasse:");
scanf("%i",&nmb_stud);
puts("Vvedite kolichestvo izuchaemih predmetov:");
scanf("%i",&nmb_sbj);
clrscr();
printf("Formirovanie klassnogo jurnala dlia %i ucenikov\n",nmb_stud);
for (i=0;i<nmb_stud;i++)
{ puts("Vvedite Imia familiu uchenika:");
printf ("%2d.",i+1);
fflush (stdin);
gets(clas[i].name_stud); }
clrscr();
for (j=0;j<nmb_sbj;j++)
{ puts("Zapolnenie izushaemih predmetov:");
printf ("%2d.",j+1);
fflush (stdin);
gets(sbj[j].name_sbj);
}
clrscr();
puts("Zapolnenie klassnogo jurnala:");
for (k=0;k<nmb_sbj;k++)
{ printf("Predmet %s. Vvodim dannie\n",sbj[k].name_sbj);
printf("Kolishestvo urokov v semestre:");
scanf("%i",&sbj[k].nmb_less);
clrscr();
}
puts("Zapolnenie klassnogo jurnala.Dannie uchinikov:");
for(i=0;i<nmb_stud;i++)
{
printf("\nUchinik %s:",clas[i].name_stud);
for (j=0;j<nmb_sbj;j++)
{ printf("\nPredmet %s. Vvodim dannie\n",sbj[j].name_sbj);
nmb_ball=0;
for(k=0;k<sbj[j].nmb_less;k++)
{
printf("Urok %i\n",k+1);
puts("Otsutstvie uchenika na uroke( 1 - otsutstvie; 0 - prisutstvie):");
scanf("%i",&progul[k]);
if (progul[k]==0)
{ puts("Vvedite ocenku,polushennuu na uroke:(esli net - vvedite 0)");
scanf("%i",&mark[k]);
if(mark[k]!=0)
nmb_ball++;
}
}
if (nmb_ball==0)
{ printf("Net ocenok!\n");
clas[i].it_ball[j]=0;
printf("Itogovii ball %5.2f", clas[i].it_ball[j]);
}
else
{ sum=0;
for(m=0;m<sbj[j].nmb_less;m++)
sum+=mark[m];
clas[i].it_ball[j]=sum/nmb_ball;
printf("\nItogovii ball %5.2f", clas[i].it_ball[j]);
}
for(m=0;m<sbj[j].nmb_less;m++)
clas[i].progul[j]+=progul[m];
printf("\nKolishestvo progulov %i\n",clas[i].progul[j]);
}
}
Otch(nmb_stud,nmb_sbj,clas,otl,hor,tr,dv,n_a);
vivod(otl,hor,tr,dv,n_a);
getch();
clrscr();
}
void Otch(int nmb_1,int nmb_2,CLASS clas[],int otl, int hor, int tr, int dv, int n_a)
{ int i,j;
float sb[nmb],sum;
for(i=0;i<nmb_1;i++)
{ sum=0;
for(j=0;j<nmb_2;j++)
sum+=clas[i].it_ball[j];
sb[i]=sum/nmb_2;
}
for (i=0;i<nmb_1;i++)
{ if(sb[i]==5)
otl++;
if ((sb[i])>=4 && (sb[i])<5 )
hor++;
if ((sb[i])>=3 && (sb[i])<4 )
tr++;
if ((sb[i])>=2 && (sb[i])<3 )
dv++;
if (sb[i]<2 )
n_a++;}
}
void vivod(int otl,int hor,int tr,int dv,int n_a)
{ printf("Podvedenie itogov.");
printf("V classe:");
printf("\n1.otlishnikov %i",otl);
printf("\n2.horoshistov %i",hor);
printf("\n3.troechnikov %i",tr);
printf("\n4.dvoechnikov %i",dv);
printf("\n5.neattestovano %i chelovek",n_a);
}
Данные otl,hor,tr, и т.д не перенаправляются в функцию Vivod().
Как поправить?
Последний раз редактировалось Bumbuk; 24.06.2010 в 15:10.
|