|
REEさん、Teaさん、まきじさん
ありがとうございます。
REEさん
>コンマで終わっている
おっしゃる通りです。
修正しました。
Teaさん
>要素番号が入っていないためだと思います。
確かにそうです。
修正しました。
まきじさん
>問題は、ten は構造体に含まれていません。
確かにそうです。
一旦親記事のエラーを取りました。
下記に配列版も同様にかなり効率が悪いソースですが、
完成させました。
#include<stdio.h>
#define KAMOKU 10
struct seiseki {
int ten[KAMOKU + 1];
int max;
int min;
double avg;
};
struct seiseki dataSyutoku(struct seiseki *data2);
int main(void)
{
struct seiseki data[1] = {78, 86, 56, 77, 47, 63, 94, 37, 50, 74, -1, 0, 0, 0.0};
struct seiseki data1;
data1 = dataSyutoku(data);
printf("最高点 = %d\n 最低点 = %d\n 平均点 = %2.1f\n", data1.max, data1.min, data1.avg);
return 0;
}
struct seiseki dataSyutoku(struct seiseki *data2)
{
int i = 0, total = 0;
int work_max, work_min;
while(data2->ten[i] != -1) {
total = (data2->ten[i]) + total;
i++;
}
data2->avg = (double)total /(double)KAMOKU;
work_max = data2->ten[0];
work_min = data2->ten[0];
for(i = 0; i < KAMOKU - 1; i++) {
if(work_max < data2->ten[i + 1]) {
work_max = data2->ten[i + 1];
} else if(work_min > data2->ten[i + 1]){
work_min = data2->ten[i + 1];
}
data2->max = work_max;
data2->min = work_min;
}
printf("data2->max%d data2->min%d\n ", data2->max, data2->min);
return *data2;
}
配列版
これもかなり効率が悪くなってしまいました。
#include<stdio.h>
#define KAMOKU 10
struct seiseki {
int max;
int min;
double avg;
};
struct seiseki dataSyutoku(int *ten1);
int main(void)
{
struct seiseki data1;
int ten[KAMOKU + 1] = {78, 86, 56, 77, 47, 63, 94, 37, 50, 74, -1};
data1 = dataSyutoku(ten);
printf("最高点 = %d\n 最低点 = %d\n 平均点 = %2.1f\n", data1.max, data1.min, data1.avg);
return 0;
}
struct seiseki dataSyutoku(int *ten1)
{
struct seiseki data2;
int work_max, work_min;
int i = 0, total = 0;
while(*ten1 != -1) {
total = *ten1 + total;
ten1++;
i++;
}
data2.avg = (double)total /(double)KAMOKU;
for (i = 10; i > 0; i--) {
ten1--;
work_max = *ten1;
work_min = *ten1;
}
for(i = 0; i < KAMOKU ;i++) {
printf("*(ten1 + i) = %d\n", *(ten1 + i));
if(work_max < *(ten1 + i) ){
work_max = *(ten1 + i);
} else if(work_min > *(ten1 + i)){
work_min = *(ten1 + i);
}
data2.max = work_max;
data2.min = work_min;
}
printf("data2.max%d data2.min%d\n ", data2.max, data2.min);
return data2;
}
|