我正在试图改组一组数组并按照混洗顺序打印它们,但是我得到error: incompatible types when assigning to type 'int' from type 'IRIS'
并且我无法克服它。
我是一名初学程序员(过去一周刚刚学习了一些基础C进行大学考试)。
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#define MAX_SAMPLES 5
#define OUTPUT 3
typedef struct {
double sepal_lenght;
double sepal_width;
double petal_lenght;
double petal_width;
double out[OUTPUT];
}IRIS;
IRIS samples[MAX_SAMPLES] = {
{5.1,2.5,3.0,1.1,{0.0,1.0,0.0}},
{6.7,3.1,5.6,2.4,{1.0,0.0,0.0}},
{6.4,3.1,5.5,1.8,{1.0,0.0,0.0}},
{7.6,3.0,6.6,2.1,{1.0,0.0,0.0}},
{7.7,2.8,6.7,2.0,{1.0,0.0,0.0}},
};
main (){
int i, temp, randomIndex;
srand(time(NULL));
for ( i=1; i < MAX_SAMPLES; i++) {
temp = samples[i];
randomIndex = rand() %MAX_SAMPLES;
samples[i] = samples[randomIndex];
samples[randomIndex] = temp;
}
for ( i=0; i<MAX_SAMPLES; i++) {
printf("%d\n", samples[i]);
}
}
行中出现错误:temp = samples[i];
任何非常有用的帮助!
答案 0 :(得分:2)
在循环前从temp
列表中删除int
,然后更改:
temp = samples[i];
为:
const IRIS temp = samples[i];
您无法将IRIS
类型的值分配给int
。
答案 1 :(得分:1)
您正在声明一个IRIS类型的数组,但在您的for循环中,您使用的是%d,它们仅用于在printf中显示int。 如果要显示结构IRIS中的数据,则必须访问要显示的属性,而不是结构本身。 例如:
printf("%f\n", samples[i].sepal_lenght);
答案 2 :(得分:0)
temp
类型为int
,samples
数组为IRIS
,因此您需要temp
为IRIS
,然后将samples[i]
的所有内容复制到其中。