Лабораторные / Лр №9. Структуры / Примеры решения Лр №9.Структуры
.odtЗадание 1.
//Декларация, ввод, вывод структур.
//1. Описать структуру с именем STUDENT, содержащую следующие поля:
//• фамилия и инициалы;
//• номер группы;
//• успеваемость (массив из пяти элементов).
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
struct student
{
char fio[30];
int ng;
int kurs[5];
};
int main()
{
void scanstu(student &stud);
void printstu(student &stud);
student stu, fest[10];
int i,n,nmax;
float max;
printf("Vvesti k-vo studentov \n");
scanf("%i",&n);
for(i=0;i<n;i++)
{
scanstu(stu);
fest[i]=stu;
}
for(i=0;i<n;i++)
{
stu= fest[i];
printstu(stu);}
system("pause");
return 0;
}
void scanstu(student &stud)
{
printf("\n Vvedite studenta\n");
printf("\n Vvecti FIO ");
scanf("%s",stud.fio);
printf("\n Vvesti N G ");
scanf("%i",&stud.ng);
printf("\n Vvesti 5 ozenok ");
for (int i=0;i<5;i++) scanf("%i",&stud.kurs[i]);
}
void printstu(student &stud)
{
printf(" FIO nomer gruppy Ozenki\n");
printf("%s %i %i %i %i %i %i \n",stud.fio, stud.ng,stud.kurs[0],stud.kurs[1],stud.kurs[2],stud.kurs[3],stud.kurs[4]);
}
Задание 2.
//Написать программу, выполняющую:
//• ввод с клавиатуры данных в массив, состоящий из десяти структур типа
//STUDENT; записи должны быть упорядочены по возрастанию номера группы;
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
struct student
{
char fio[30];
int ng;
int kurs[5];
};
int main()
{
void scanstu(student &stud);
void printstu(student &stud);
void sortirovka(student fes[],int n);
student stu, fest[10];
int i,n,nmax;
float max;
printf("Vvesti k-vo studentov \n");
scanf("%i",&n);
for(i=0;i<n;i++)
{
scanstu(stu);
fest[i]=stu;
}
for(i=0;i<n;i++)
{
stu= fest[i];
printstu(stu);}
sortirovka(fest,n);
for(i=0;i<n;i++)
{
stu= fest[i];
printstu(stu);}
system("pause");
return 0;
}
void scanstu(student &stud)
{
printf("\n Vvedite studenta\n");
printf("\n Vvecti FIO ");
scanf("%s",stud.fio);
printf("\n Vvesti N G ");
scanf("%i",&stud.ng);
printf("\n Vvesti 5 ozenok ");
for (int i=0;i<5;i++) scanf("%i",&stud.kurs[i]);
}
void printstu(student &stud)
{
printf(" FIO nomer gruppy Ozenki\n");
printf("%s %i %i %i %i %i %i\n",stud.fio, stud.ng,stud.kurs[0],stud.kurs[1],stud.kurs[2],stud.kurs[3],stud.kurs[4]);
}
void sortirovka(student fes[],int n)
{
student stu;
int i,j;
for (i=0;i<n-1;i++)
for(j=0;j<n-1;j++)
if (fes[j].ng>fes[j+1].ng)
{stu=fes[j];
fes[j]=fes[j+1];
fes[j+1]=stu;
}
}
-
Написать программу, выполняющую следующие действия:
• ввод с клавиатуры данных в массив, состоящий из десяти структур типа
STUDENT; записи должны быть упорядочены по возрастанию номера
группы;
• вывод на дисплей фамилий и номеров групп для всех студентов, включенных
в массив, если средний балл студента больше 4,0;
• если таких студентов пет, вывести соответствующее сообщение.
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
struct student
{
char fio[30];
int ng;
int kurs[5];
};
int main()
{
void scanstu(student &stud);
void printstu(student &stud);
void sortirovka(student fes[],int n);
float sbal(student &stud);
student stu, fest[10];
int i,n,nmax;
float sball;
printf("Vvesti k-vo studentov \n");
scanf("%i",&n);
for(i=0;i<n;i++)
{
scanstu(stu);
fest[i]=stu;
}
for(i=0;i<n;i++)
{
stu= fest[i];
printstu(stu);}
sortirovka(fest,n);
for(i=0;i<n;i++)
{
stu= fest[i];
printstu(stu);}
int j=0;
for (i=0; i<n; i++){
stu=fest[i];
sball= sbal(stu);
if(sball>4.0){ printstu(stu);j++;}
}
if(j=0)printf("Net studentov imeythih CB > 4\n");
system("pause");
return 0;
}
void scanstu(student &stud)
{
printf("\n Vvedite studenta\n");
printf("\n Vvecti FIO ");
scanf("%s",stud.fio);
printf("\n Vvesti N G ");
scanf("%i",&stud.ng);
printf("\n Vvesti 5 ozenok ");
for (int i=0;i<5;i++) scanf("%i",&stud.kurs[i]);
}
void printstu(student &stud)
{
printf(" FIO nomer gruppy Ozenki\n");
printf("%s %i %i %i %i %i %i\n",stud.fio, stud.ng,stud.kurs[0],stud.kurs[1],stud.kurs[2],stud.kurs[3],stud.kurs[4]);
}
void sortirovka(student fes[],int n)
{
student stu;
int i,j;
for (i=0;i<n-1;i++)
for(j=0;j<n-1;j++)
if (fes[j].ng>fes[j+1].ng)
{stu=fes[j];
fes[j]=fes[j+1];
fes[j+1]=stu;
}
}
float sbal(student &stud)
{float sb=0;
for (int i=0;i<5;i++)
sb+=stud.kurs[i];
return (sb/5);
}