Код

/* Программа 9.1  на языке С++  */
#include "stdafx.h"
#include "stdio.h"
#include "conio.h"
#include "string.h"
#include "iostream"
#define  MAX   30
	// тип записи файла
struct STUDENT
{  char   fio[20];     // фамилии и.о.
   char   oc[7];       // 5 оценок + '\n' + '\0'
};
	// тип элемента таблицы
struct EL_TAB
{  char   fio[20];     // фамилия и.о.
   int    oc[5];       // оценки
   float  srball;      // средний балл
};
	// прототипы функций
void PechTab (EL_TAB * tab, int n);
void Pech2 (EL_TAB * tab, int n);

	/*----------------------------*/
 	/*  главная функция  */
	/*----------------------------*/
void main()
{    setlocale(LC_ALL,"Russian"); 
	 FILE  *f;	        // указатель на входной файл
     STUDENT   tz;	    // текущая запись файла
     EL_TAB   tab[MAX];	// таблица
     int    n;	        // длина таблицы
     int    i;
     float  s;	        // сумма оценок

     if ((f = fopen("st.txt","r")) == NULL)
     {  puts ("Файл st.txt не найден");
       return;
     }

	// создание таблицы
     n = 0;
     while (fgets((char *)&tz, sizeof(struct STUDENT), f) != NULL)
      {  
		for (i=0,s=0; i<5; i++)
          {  
		     int ocenka = tz.oc[i]-'0';
	         tab[n].oc[i] = ocenka;
	         s += ocenka;
          }
        tz.fio[19]='\0';
        strcpy_s(tab[n].fio,tz.fio);
        tab[n++].srball = s/5;
      }
     fclose(f);
     char nom;	        // номер пункта меню
     do
     {  
        puts ("------------------------------------------------------");
        puts ("   Выберите номер пункта меню:");
        puts ("1 - средние баллы студентов");
        puts ("2 - студентов, имеющих не больше одной двойки");
		puts ("3 - выход");
        puts ("------------------------------------------------------");
        nom = getche();
        switch (nom)
        {  case '1': PechTab(tab,n); break;
           case '2': Pech2(tab,n); break;
		   case '3': break;
	       default: puts ("\nНужно ввести номер  от 1 до 3");
        }
        if (nom != '3')
        {  puts("\nДля продолжения нажмите любую клавишу");
	  _getch();
        }
     }
     while (nom != '3');
 }

    /*-----------------------------------------------------------------*/
    /*  Печать среднего балла каждого студента */
    /*-----------------------------------------------------------------*/
void PechTab (EL_TAB * tab, int n)
{   int j;
    puts ("\nФамилия и.о.   Ср.балл");
    puts ("-----------------------");
    for (j=0; j<n; j++)
    {
       printf("%s  %.1f\n", tab[j].fio, tab[j].srball);
    }
}


    /*-----------------------------------------------------------------*/
    /*  Найти студентов, имеющих не больше одной двойки; */
    /*-----------------------------------------------------------------*/

void Pech2 (EL_TAB *tab, int n)
{
int j,i,k=0;
puts ("\n Фамилия И.О.");
puts ("-------------");
for  (j=0; j<n; j++)
  {
    for (i=0; i<5; i++)
	  {     
		if (tab[j].oc[i] == 2) k++;
      }
	if ( k <= 1 ) printf("\n %s \n", tab[j].fio);
  }
}
Теги:
include, PechTab, break, Pech2, таблицы , студентов, ocenka, номер, struct, srball, пункта, STUDENT, printf, float, больше, двойки, while, файла , выход, баллы, Выберите, strcpy, Фамилия, fclose, Найти, меню , getche, nФамилия, нажмите, балла, клавишу, getch, среднего, Печать, продолжения
Добавлено: 22 Мая 2015 14:13:40 Добавил: Фанис Салахутдинов Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...