Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.06.2010, 15:08   #1
Bumbuk
 
Регистрация: 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.
Bumbuk вне форума Ответить с цитированием
Старый 24.06.2010, 15:56   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,833
По умолчанию

В Otch, если хотите менять значения параметров, нужно передавать указатель или ссылку.
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функции в си. Вывод двумерного массива из функции. Evgen51 Общие вопросы C/C++ 9 13.05.2010 03:59
функции тотошкин Помощь студентам 7 15.01.2010 22:58
Чем отличается описание функции от определения функции в С++? Go6a Помощь студентам 4 18.07.2009 18:07
Функции С++ ppunisher Помощь студентам 0 22.06.2009 17:55
Функции. Передача массива в качестве параметра функции. Wia Помощь студентам 2 17.03.2009 14:57