Программирование на языке С

Автор: Пользователь скрыл имя, 20 Ноября 2011 в 18:47, лабораторная работа

Описание работы

Ознакомление с форматом описания структур, со способами инициализации элементов структур, приобретение навыков использования структурных переменных.
В работе представлено решение следующего задания:
Составить программу назначения студентов на стипендию. О каждом студенте хранится следующая информация: фамилия студента, его оценки в сессию (5 оценок), признаки: участия в общественной жизни (0-нет, 1-да), участия в научно-исследовательской работе (0-нет, 1-да). Сведения хранятся в массиве структурных переменных. Программа по требованию выдает следующую информацию:
а) список студентов, назначенных на повышенную (на25%) стипендию за отличную учебу, участие в общественной жизни и научной работе;
б) список студентов, назначенных на повышенную (на 15%) стипендию за хорошую и отличную учебу (не менее двух пятерок), участие в общественной жизни и научной работе;
в)список студентов, назначенных на обычную стипендию, но имеющих не более одной тройки.

Работа содержит 1 файл

лаба пяси7.docx

— 80.11 Кб (Скачать)

Дагестанский  Государственный Технический Университет 
 
 
 
 
 
 

Лабораторная  работа №7

по  дисциплине «ПнаЯСИ» 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Выполнил  студент ФИиУ,

ПОВТиАС, У-943,

 
 

Махачкала 2010 г. 

СТРУКТУРЫ 

Цель  работы: ознакомление с форматом описания структур, со способами инициалицации элементов структур, приобретение навыков использования структурных переменных 

   5.Составить  программу назначения студентов  на стипендию. О каждом студенте  хранится следующая информация: фамилия студента, его оценки  в сессию (5 оценок), признаки: участия  в общественной жизни (0-нет, 1-да), участия в научно-исследовательской  работе (0-нет, 1-да). Сведения хранятся  в массиве структурных переменных. Программа по требованию выдает  следующую информацию:

   а) список  студентов, назначенных на повышенную (на25%) стипендию за отличную учебу, участие в общественной жизни  и научной работе;

   б) список студентов, назначенных на повышенную (на 15%) стипендию за хорошую и  отличную учебу (не менее двух пятерок), участие в общественной жизни  и научной работе;

   в)список студентов, назначенных на обычную стипендию, но имеющих не более одной тройки. 

   #include <iostream.h>

   #include <conio.h>

   #include <stdlib.h> 

   short int i,j,temp;

   struct STUDENTS //Объявление структуры STUDENTS

   {

     char surname[13]; //Фамилия

     int ocenki[5]; //Оценки

     int aktivist; //участия в общественной жизни

     int labarant; //участия в научно-исследовательской работе

   };

   STUDENTS in_students(STUDENTS stud) //Функция заполнения структуры

   {

       cout<<"Фамилия студента:\n";

       cin>>stud.surname; //Заполнения поля Фамилия

       cout<<"Введите оценки студента "<<stud.surname<<" по 5ти предметам: ";

       for (j=0; j<5; j++)

       {

       cin>>stud.ocenki[j]; //Заполнения поля Оценки

       if (stud.ocenki[j]<2 || stud.ocenki[j]>5) //Проверка на правильность ввода оценки

         {

          cout<<"Неверная оценка! Повторите ввод \n";

          j--;

         }

       }

      cout<<stud.surname<<" участвовал в общественной жизни? (1-Да, 0-Нет)\n";

      for (;;) //Заполнение полей Лаборант и Активист, и проверка правильности ввода

      {

      cin>>stud.aktivist; if (stud.aktivist==0 || stud.aktivist==1) break; else

      cout<<"Повторите ввод!!";

      }

      cout<<"а в научной работе?\n";

      for (;;)

      {

      cin>>stud.labarant; if (stud.labarant==0 || stud.labarant==1) break; else

      cout<<"Повторите ввод!!";

      }

      return(stud);

   }

   void serch_for_25(STUDENTS stud)

   //Функция  выявления студентов, полагающимся  повышенная стипендия(25%)

   {

    temp=0;

       for (j=0; j<5; j++) if (stud.ocenki[j]==5) temp++; //Запоминание количества пятерок в temp

       if (temp==5 && stud.aktivist==1 && stud.labarant==1)

        cout<<stud.surname<<"\n"; //Вывод фамилии

   }

   void serch_for_15(STUDENTS stud)

   //Функция  выявления студентов, полагающимся  повышенная стипендия(15%)

   {

     temp=0;

       for (j=0;j<5;j++)

        {

         if (stud.ocenki[j]>3 && stud.ocenki[j]<5) temp++; //Запоминание количества положительных оценок без учета пятерки в temp

        }

      if (temp>=1 && stud.aktivist==1&&stud.labarant==1) //Вывод на экран фамилии студента, активиста, лаборанта с одной и более четверок

          cout<<stud.surname<<"\n";

   }

   void serch_for_normal(STUDENTS stud) //Функция выявления студентов, полагающимся стипендия

   {

       temp=0;

       for (j=0; j<5; j++) if (stud.ocenki[j]==3) temp++; //Запоминания количества удовов в temp

       if (temp==1) //Вывод фамилии с одной тройкой

         cout<<stud.surname<<"\n";

   }

   void main()

   {

      clrscr(); //Очистка экрана

   int max;

   cout<<"Программа назначения студентов на стипендию \n";

   cout<<"Введите количество студентов: ";

   cin>>max;

   STUDENTS *stud=new STUDENTS[max];//Объявление динамического массива структуры STUDENTS

   for (i=0; i<max; i++)

   stud[i]=in_students(stud[i]); //Вызов функции заполнения массива структуры

     clrscr(); //Очистка экрана;

   int readkey;

   cout<<"Вывести фамилии студентов назначенных на:\n" ;

     cout<<"1 - Повышенную стипендию(25%)\n";

     cout<<"2 - Повышенную стипендию(15%)\n";

     cout<<"3 - Обычную стипендию \n";

     cout<<"4 - Выход\n"; // cout<<"Esc - Выход\n";

   do

    {

     readkey=getch();

     switch (readkey)

     { //Организация меню

      case 49 :

      {

       clrscr();

       cout<<"Студентам: \n";

       for (i=0; i<max; i++)

       serch_for_25(stud[i]); cout<<"назначить повышенную стипендию (25%)\n\n";

       cout<<"Жмите энтер"; break;

      }

      case 50:

      {

       clrscr();

       cout<<"Студентам: \n";

       for (i=0; i<max; i++)

       serch_for_15(stud[i]); cout<<"назначить повышенную стипендию (15%)\n\n";

       cout<<"Жмите энтер"; break;

      }

      case 51:

      {

       clrscr();

       cout<<"Студентам: \n";

       for (i=0; i<max; i++)

       serch_for_normal(stud[i]); cout<<"назначить стипендию\n\n";

       cout<<"Жмите энтер"; break;

      }

     case 52 :

     {

      delete(stud); //Освобождение памяти

      exit(0);

     } // case 27:{delete(stud); exit(0);}//вариант выхода по Esc

     default : clrscr();

     cout<<"Вывести фамилии студентов назначенных на:\n" ;

     cout<<"1 - Повышенную стипендию(25%)\n";

     cout<<"2 - Повышенную стипендию(15%)\n";

     cout<<"3 - Обычную стипендию\n";

     cout<<"4 - Выход\n"; //Вывод простенького меню

     } //switch

   }

   while (1); //Бесконечный цикл вызова меню

   }

Информация о работе Программирование на языке С