Лабораторна робота
Тема:
Структури
Мета роботи: вивчення засобiв мови Сi для обробки структур,
оволодiння прийомами складання алгоритмiв i
програм з застосуванням структур.
Завдання: Створити структуру, яка являє собою журнал викладача, в структурі є список студентів перелік дисциплін і оцінки з трьох лабораторних робіт для кожного з предметів.
Визначити студентів відмінників і також студентів , які немають жодної п’ятірки, але й немають двійок.
Визначити кількість студентів і кількість пропусків.
Короткі теоретичні відомості:
Оголошення:
struct тег
{список елементів структури; }ім'я;
тег – ім'я типу структури.
struct SS
{char S [20]; int k; }p;
Варіант 1:
struct
{char S [20]; int k; }p;
Варіант 2:
struct SS
{char S [20]; int k; };
struct SS p;
Варіант 3:
struct
{char S [20]; int k; }b[2];
Варіант 4:
struct
{char S [20]; int k; }b[2]={
{“Петренко”, 526},
{“Сіренко ”, 625};
};
Звернення до елемента структури:
b[0].S ім'я структури + ім'я елемента через крапку
b[0].k
Ідентифікація змінних:
Змінна | Номер студента |
Номер предмету | Номер роботи | Порядковий номер | Прізвище, ім'я
Ідентифікатор | і | n | m | pn | Pi
Змінна | Студент |
Оцінки | Середній бал | Про-пуски
Математика | Фізика | ОПАМ
Ідентифікатор | st[i] | pr[1][m] | pr[2][m] | pr[3][m] | sb | prop
Програма:
int i,n,m;
/***************************************************************************
* Структура *
****************************************************************************/
struct ju
{
int pn;
char pi[20];
pr[3][3];
}st[5]={
{1,"Цюпа Роман ",{{3,4,4},{4,4,3},{3,3,4}}},
{2,"Олексин Ярослав ",{{2,3,3},{4,2,4},{2,5,5}}},
{3,"Криховський Iван",{{0,0,0},{4,5,3},{0,3,5}}},
{4,"Черевко Микола ",{{5,5,5},{5,5,5},{5,5,5}}},
{5,"Середюк Андрiана",{{0,5,5},{5,5,0},{5,0,5}}}
};
/***************************************************************************
* Головна програма *
****************************************************************************/
main()
{
clrscr();
printf("Nо\tПрiзвище,iмя\t\tМатематика\t Фiзика\t\t ОПАМ");
for(i=0;i<5;i++)
{
printf("\n%i\t%s\t",st[i].pn,st[i].pi);
for(n=0;n<3;n++)
{
for(m=0;m<3;m++)printf(" %i ",st[i].pr[n][m]);
printf("\t");
}
}
yspi6nist();
getch();
}
/***************************************************************************
* Функцiя (успiшнiсть i пропуски) *
****************************************************************************/
yspi6nist()
{
float sb[5],s=0,k=0,t;
int prop=0;
printf("_________________________________________________________\n");
printf("\n| Прiзвище,iм'я |\tСтатус\t\t | Пропуски |\n");
printf("_________________________________________________________\n");
for(i=0;i<5;i++)
{
t=1;
for(n=0;n<3;n++)
{
for(m=0;m<3;m++)
{
s+=st[i].pr[n][m];k++;
if(st[i].pr[n][m]==5)t=0;
if(st[i].pr[n][m]==2)t=0;
if(st[i].pr[n][m]==0)t=0;
if(st[i].pr[n][m]==0)prop++;
t=2*t;
}
}
sb[i]=s/k;s=0;k=0;
if(sb[i]==5)printf("| %s| - вiдмiнник |\t%i\t|\n",st[i].pi,prop);
if(t>0)printf("| %s| - немає 5, але й немає 2|\t%i\t|\n",st[i].pi,prop);
if(prop>0)printf("| %s| - має пропуски |\t%i\t|\n",st[i].pi,prop);
}
printf("_________________________________________________________\n");
return;
}
Результати:
№ Прiзвище,iмя Математика Фiзика ОПАМ
1 Цюпа Роман 3 4 4 4 4 3 3 3 4
2 Олексин Ярослав 2 3 3 4 2 4 2 5 5
3 Криховський Iван 0 0 0 4 5 3 0 3 5
4 Черевко Микола 5 5 5 5 5 5 5 5 5
5 Середюк Андрiана 0 5 5 5 5 0 5 0 5
_________________________________________________________
| Прiзвище,iм'я | Статус | Пропуски |
_________________________________________________________
| Цюпа Роман | - немає 5, але й немає 2 | 0 |
| Криховський Iван | - має пропуски | 4 |
| Черевко Микола | - вiдмiнник | 0 |
| Середюк Андрiана | - має пропуски | 3 |
_________________________________________________________
Висновок: Я вивчив засоби мови Сi для обробки структур,
оволодiв прийомами складання алгоритмiв i
програм з застосуванням структур.