C/C++

Программирование на Си

Разработать программу, выводящую итоговые показатели или выборку данных из
предложенных исходных таблиц. При программировании можно использовать структуры, списки,
очереди.
Mr. Mustafinov
Mr. Mustafinov
139
Так пойдёт или нужна ещё структура под числа вместо const float for_data[6][5] ? :
 #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
ЯВ
Ян Вэйдун
88 736
Лучший ответ
Mr. Mustafinov да, нужна ещё структура под числа