Автор: Пользователь скрыл имя, 20 Ноября 2011 в 18:47, лабораторная работа
Ознакомление с форматом описания структур, со способами инициализации элементов структур, приобретение навыков использования структурных переменных.
В работе представлено решение следующего задания:
Составить программу назначения студентов на стипендию. О каждом студенте хранится следующая информация: фамилия студента, его оценки в сессию (5 оценок), признаки: участия в общественной жизни (0-нет, 1-да), участия в научно-исследовательской работе (0-нет, 1-да). Сведения хранятся в массиве структурных переменных. Программа по требованию выдает следующую информацию:
а) список студентов, назначенных на повышенную (на25%) стипендию за отличную учебу, участие в общественной жизни и научной работе;
б) список студентов, назначенных на повышенную (на 15%) стипендию за хорошую и отличную учебу (не менее двух пятерок), участие в общественной жизни и научной работе;
в)список студентов, назначенных на обычную стипендию, но имеющих не более одной тройки.
Дагестанский
Государственный Технический
Лабораторная работа №7
по
дисциплине «ПнаЯСИ»
Выполнил студент ФИиУ,
ПОВТиАС, У-943,
Махачкала
2010 г.
СТРУКТУРЫ
Цель
работы: ознакомление с форматом описания
структур, со способами инициалицации
элементов структур, приобретение навыков
использования структурных переменных
5.Составить
программу назначения
а) список студентов, назначенных на повышенную (на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)
//Функция
выявления студентов,
{
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)
//Функция
выявления студентов,
{
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.
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<<"
}
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); //Бесконечный цикл вызова меню
}