
предложенных исходных таблиц. При программировании можно использовать структуры, списки,
очереди.
#include
#include
#include
#include
struct kult
{
char * name;
unsigned name_size;
float * data;
unsigned data_size;
};
void insert_name(const char str[], struct kult * K)
{
unsigned i;
K->name_size = strlen(str);
K->name = (char*) malloc(sizeof(char) * K->name_size + 1);
for(i = 0; i < K->name_size; i++)
K->name[i] = str[i];
K->name[i] = '\0';
}
void insert_data(const float db[], struct kult * K)
{
unsigned i;
K->data_size = 5;
K->data = (float*) malloc(sizeof(float) * 5);
for(i = 0; i < K->data_size; i++)
K->data[i] = db[i];
}
void delete(struct kult * K)
{
if(K->data == (float*) NULL)
exit(1);
free(K->data);
K->data = (float*) NULL;
if(K->name == (char*) NULL)
exit(1);
free(K->name);
K->name = (char*) NULL;
}
#define n 6
#define m 5
int main()
{
setlocale(LC_ALL, "Rus");
struct kult K[n];
unsigned x,y,z;
float need;
unsigned min;
const float for_data[n][m] =
{
{1913,1928,1940,1945,1953},
{8.1,7.9,8.6,7.9,7.8},
{168,132,146,159,7.8},
{10.8,8.1,10.8,15.3,1.3},
{3.3,2.4,1.7,1.3,1.3},
{91,132,97,72,87}
};
insert_name("Культуры",&K[0]);
insert_data(for_data[0],&K[0]);
insert_name("Зерновые",&K[1]);
insert_data(for_data[1],&K[1]);
insert_name("Сахарная свёкла",&K[2]);
insert_data(for_data[2],&K[2]);
insert_name("Хлопок-сырец",&K[3]);
insert_data(for_data[3],&K[3]);
insert_name("Льноволокно",&K[4]);
insert_data(for_data[4],&K[4]);
insert_name("Зерновые",&K[5]);
insert_data(for_data[5],&K[5]);
/* а */
min = 0;
for(x = 1; x < n; x++)
if(K[x].data[2] < K[min].data[2])
min = x;
printf("Урожайность культуры %s в %.0f году была минимальна и составляла %.1f ц/Га\r\n", K[min].name, K[0].data[2], K[min].data[2]);
/* б */
need = 20;
printf("\r\n\tУрожайность следующих культур в %.1f году была меньше %.0f ц/Га:\r\n",K[0].data[4],need);
for(x = 0; x < n; x++)
{
if(K[x].data[3] < need)
printf("%s\r\n",K[x].name);
}
printf("\r\n");
for(x = 0; x < n; x++)
delete(&K[x]);
return 0;
}
#undef m
#undef n