Примеры решения задач
Задача 4.1. Дан массив структур вида:
Найти названия городов, в которых выпускаются самые дешевые телевизоры.
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <limits.h>
//пропуск символов до конца строки
#define CLR while (getchar()!='\n')
//максимальное число структур
#define Kmax 10
//максимальная длина строки
#define Lmax 81
//пропуск символов до конца строки в файле
#define FCLR while (getc(fin)!='\n')
Struct proizv
{char gorod[Lmax], zavod[Lmax], fam[Lmax];
};
struct tvSet
{
char name[Lmax], color;//цвет обозначается одной буквой, c - цветной
proizv pr;
int price, diag;
};
void input (tvSet *tv, int *k) //ввод массива телевизоров
{ int i;
do
{
printf("enter number of TV ");
scanf("%d", k); //k – указатель на количество структур
}
while (*k<=0 || *k>Kmax);
CLR; /* необходим пропуск символов до конца строки, т.к. дальше функция gets - читается строка */
for (i=0; i<*k; i++)
{
printf("TV # %d\n", i+1);
printf("Name: "); gets(tv[i].name);
printf("Price: "); scanf("%d", &tv[i].price);
printf("Diagonal size: "); scanf("%d", &tv[i].diag);
CLR; //цветной или ч\б обозначается одной буквой (ц или ч)
printf("Image color(c - means color): "); tv[i].color=getchar();
CLR; //пропуск символа ‘\n’
printf("City: "); gets(tv[i].pr.gorod);
printf("Factory: "); gets(tv[i].pr.zavod);
printf("Surname: "); gets(tv[i].pr.fam);
printf("\n");
}
printf("Input is over\n");
getchar();
}
//вывод массива телевизоров
void output (tvSet *tv, int k)
{
int i;
printf("list of TV sets: \n");
for(i=0; i<k; i++)
{
printf("TV # %d\n", i+1);
printf("Name: %s\n", tv[i].name);
printf("Price: %d\n", tv[i].price);
printf("Diagonal size: %d\n", tv[i].diag);
printf("Image color: %c\n", tv[i].color);
printf("City: %s\n", tv[i].pr.gorod);
printf("Factory: %s\n", tv[i].pr.zavod);
printf("Surname: %s\n", tv[i].pr.fam);
printf("Press any key to continue...\n");