Записать данные из массивов 5 почти одинаковых структур в один двухмерный массив - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Пытаюсь записать данные из массивов 5 почти что одинаковых структур в один двухмерный массив,но при компиляции выдаёт ошибку error C2108: subscript is not of integral type вот часть кодa:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
 
struct POPULATION
{
int alleles[4];
int fitness;
float likelihood;
};
 
int main()
{
int i = 0;
struct POPULATION *first = (struct POPULATION*)malloc(sizeof(struct POPULATION));
struct POPULATION *second = (struct POPULATION*)malloc(sizeof(struct POPULATION));
struct POPULATION *third = (struct POPULATION*)malloc(sizeof(struct POPULATION));
struct POPULATION *fourth = (struct POPULATION*)malloc(sizeof(struct POPULATION));
struct POPULATION *fifth = (struct POPULATION*)malloc(sizeof(struct POPULATION));
 
for(i = 0;i < 4;i++)
first->alleles[i] = rand()%30 + 1;
for(i = 0;i < 4;i++)
second->alleles[i] = rand()%30 + 1;
for(i = 0;i < 4;i++)
third->alleles[i] = rand()%30 + 1;
for(i = 0;i < 4;i++)
fourth->alleles[i] = rand()%30 + 1;
for(i = 0;i < 4;i++)
fifth->alleles[i] = rand()%30 + 1;
 
int pop[5][4];
for(i = 0;i < 4;i++)
pop[0][i] = first->alleles[i];
for(i = 0;i < 4;i++)
pop[1][i] = second->alleles[i];
for(i = 0;i < 4;i++)
pop[2][i] = third->alleles[i];
for(i = 0;i < 4;i++)
pop[3][i] = fourth->alleles[i];
for(i = 0;i < 4;i++)
pop[4][i] = fifth->alleles[i];
 
for(int s=0;s<5;s++)
{
for(i=0;i<4;i++)
{
printf("%d",pop[s][i]);
}
printf("\n");
}
return 0;
}

Решение задачи: «Записать данные из массивов 5 почти одинаковых структур в один двухмерный массив»

textual
Листинг программы
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
 
struct POPULATION
{
int alleles[4];
int fitness;
float likelihood;
};
 
int main()
{
int i, s, pop[5][4];
struct POPULATION *first, *second, *third, *fourth, *fifth;
first = malloc(sizeof(struct POPULATION));
second = malloc(sizeof(struct POPULATION));
third = malloc(sizeof(struct POPULATION));
fourth = malloc(sizeof(struct POPULATION));
fifth = malloc(sizeof(struct POPULATION));
 
for(i = 0;i < 4;i++)
first->alleles[i] = rand()%30 + 1;
for(i = 0;i < 4;i++)
second->alleles[i] = rand()%30 + 1;
for(i = 0;i < 4;i++)
third->alleles[i] = rand()%30 + 1;
for(i = 0;i < 4;i++)
fourth->alleles[i] = rand()%30 + 1;
for(i = 0;i < 4;i++)
fifth->alleles[i] = rand()%30 + 1;
 
for(i = 0;i < 4;i++)
pop[0][i] = first->alleles[i];
for(i = 0;i < 4;i++)
pop[1][i] = second->alleles[i];
for(i = 0;i < 4;i++)
pop[2][i] = third->alleles[i];
for(i = 0;i < 4;i++)
pop[3][i] = fourth->alleles[i];
for(i = 0;i < 4;i++)
pop[4][i] = fifth->alleles[i];
 
for(s=0;s<5;s++)
{
for(i=0;i<4;i++)
{
printf("%d",pop[s][i]);
}
printf("\n");
}
return 0;
}

Объяснение кода листинга программы

В этом коде объявлены пять почти одинаковых структур, каждая из которых содержит массив из четырех элементов и три переменные. Массив заполняется случайными числами от 1 до 30. Затем элементы массива записываются в двумерный массив. Наконец, элементы двумерного массива выводятся на экран.

Оцени полезность:

13   голосов , оценка 4.308 из 5
Похожие ответы