КПиЯП ч1 контрольная работа №1 вар 1
.docКонтрольная работа №1
Работа со структурами
Вариант 1
Задание:
1. Дана ведомость абитуриентов. В каждой строке записана фамилия абитуриента, его постоянное место жительства, средний балл аттестата.
Распечатать в алфавитном порядке список абитуриентов, проживающих в Минске и определить их количество.
Код программы:
#include <stdio.h>
#include <string.h>
void main()
{
//Переменные, используемые в функции main
int i, j, n, imin;
char *min, c, *a, *b, *s, *d, *city;
struct Stud
{
char name [30];
char place [30];
float ball;
}mas[100], mas1[100], mas2[100]; //Структура в которую объединены данные студентов
//Вводим количество студентов в списке
printf("Vvedite kolichestvo studentov");
scanf("%c", &n);
//Начинаем заполнять массив данными студентов
for (i=n-1; i>=0; i--)
{
//Вводим для каждого студента фамилию, город и средни балл
printf("Familia");
scanf("%s", &a);
strcpy (mas[i].name, a);
printf("Gorod");
scanf("%s", &b);
strcpy (mas[i].place, b);
printf("Sredniy ball");
scanf("%s", &mas[i].ball);
}
//Определяем студентов которые проживают в Минске
for (i=n-1; i>=0; i--)
{
strcpy (s, mas[i].place);
city = "Минск";
if (strcmp(s, city) == 0)
{
mas1[i]=mas[i]; //Присваеваем элементу второго массива структур элемент первого массива с информацией о студенте проживающем в Минске
}
}
//Производим расстановку записей о студентах, которые проживают в Минске, в алфавитном порядке
for (i=0; i < n-1; i++)
{
imin = i; //Принимаем за наименьший первый из рассматриваемых элементов
// Поиск номера минимального элемента из неупорядоченных
for (j = i + 1; j < n; j++)
{
strcpy (d, mas1[j].name);
d = d[0];
if (strcmp(d, min) < 0)
{
min=mas1[j].name[0]; //Если условие выполняется присваиваем
imin = j;
}
}
// обмен элементов массива структур:
mas2[i] = mas1[i];
mas1[i] = mas1[imin];
mas1[imin] = mas2[i];
}
}