ID非公開

2021/10/24 8:30

22回答

c言語の配列のプログラミングについて質問です 今、data1[5] と data2[5]を用意しdata2の要素をdata1に移してから(逆順に並べて)最大値のみを引き出すということをしています

C言語関連 | プログラミング53閲覧xmlns="http://www.w3.org/2000/svg">50

ベストアンサー

0

ID非公開

質問者2021/10/24 10:21

問題を間違えていましたdata1をdata2に移します 最大値が複数あったら一つにまとめたいです 22 80 57 80 50 max : 80 data2[0] : 50 data2[1] : 57 data2[2] : 22 こんな風に

その他の回答(1件)

0

最初っからdata2にもデータを入れておいて、ソートしたらいいんじゃないですか? #include <stdio.h> #include <stdlib.h> #define NUM 5 int comp(const void *a, const void *b){     return *(int*)b - *(int*)a; } int main(void){     int data1[NUM], data2[NUM];     int i, j, max;     scanf("%d", &data1[0]);     data2[0] = data1[0];     for(i = 1; i < NUM; i++){         scanf(" %d", &data1[i]);         data2[i] = data1[i];     }     qsort(data2, NUM, sizeof(int), comp);     max = data2[0];     for(i = 0; i < NUM - 1; i++)         data2[i] = data2[i+1];     printf("data1:");     for(i = 0; i < NUM; i++)         printf("%d ", data1[i]);     printf("\nmax : %d\n", max);     for(i = 0; i < 4; i++)         printf("data2[%d] : %d\n", i, data2[i]);     return 0; } ー 実行結果 ー 22 80 57 60 50 data1:22 80 57 60 50 max : 80 data2[0] : 60 data2[1] : 57 data2[2] : 50 data2[3] : 22