質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

ソート

複数のデータを、順序性に従って並べ替えること。 データ処理を行う際に頻繁に用いられ、多くのアルゴリズムが存在します。速度、容量、複雑さなどに違いがあり、高速性に特化したものにクイックソートがあります。

Q&A

解決済

1回答

573閲覧

ソート 並び替え 文字列

ritsu.m

総合スコア15

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

ソート

複数のデータを、順序性に従って並べ替えること。 データ処理を行う際に頻繁に用いられ、多くのアルゴリズムが存在します。速度、容量、複雑さなどに違いがあり、高速性に特化したものにクイックソートがあります。

0グッド

1クリップ

投稿2020/01/26 09:55

編集2020/01/26 10:09

成績の平均点に応じて学籍番号、名前を降順に表示させたい

ここに質問の内容を詳しく書いてください。

テキストファイルを読み込みその読み込んだ値を元に平均点を計算、平均点の順位によって、学籍番号、名前、平均点を降順で表示させるプログラムを作りたいと思っています
コンパイル時にエラーメッセージが出ますが調べた結果これはエラーではなく警告だということがわかったので、そのまま実行しましたが、平均点は降順に表示されているものの学籍番号、名前がバラバラに表示されてしまいます。

発生している問題

1,Kongo 75.666664 2,Kirishima 75.000000 3,Myoukou 76.333336 4,Cyokai 80.000000 5,Atago 80.666664 6,Ashigara 76.000000 7,Maya 81.333336 8,Haguro 79.666664 平均点順にソートしました 順位 学籍番号 氏名 平均点 1:7,,81.333336 2:5,Kirishima,80.666664 3:4,Myoukou,80.000000 4:8,Cyokai,79.666664 5:3,Atago,76.333336 6:6,Ashigara,76.000000 7:1,Maya,75.666664 8:2,Haguro,75.000000

ファイルの読み込みはできているのですがソートすると1位の名前が表示されずさらに学籍番号と名前にズレが見られます

###エラーメッセージ

aaa.c:70:21: warning: incompatible pointer types passing 'char [8][128]' to parameter of type 'char (*)[20]' [-Wincompatible-pointer-types] bubblesort(s,NO,name,ga); ^~~~ aaa.c:27:53: note: passing argument to parameter 'str' here void bubblesort(float numbers[],int array_size,char str[][20],int ku[]) ^

該当のソースコード

c言語

1#include<stdio.h> 2#include<stdlib.h> 3#include<string.h> 4#define NO 8 5 6void irekaeno(float *x,float *y){ 7 float temp=*x; 8 *x=*y; 9 *y=temp; 10} 11 12void irekaeno2(int *x,int *y){ 13 int temp=*x; 14 *x=*y; 15 *y=temp; 16} 17 18void irekaena(char *sx,char *sy){ 19 char temp[20]; 20 21 strcpy(temp,sx); 22 strcpy(sx,sy); 23 strcpy(sy,temp); 24} 25 26 27void bubblesort(float numbers[],int array_size,char str[][20],int ku[]) 28{ 29 int i,j,temp; 30 31 for(i=0;i<(array_size-1);i++){ 32 for(j=(array_size-1);j>i;j--){ 33 if(numbers[j-1]<numbers[j]){ 34 irekaeno(&numbers[j-1],&numbers[j]); 35 irekaena(str[j-1],str[j]); 36 irekaeno2(&ku[j-1],&ku[j]); 37 } 38 } 39 } 40} 41 42int main(void){ 43 FILE *fp; 44 int i; 45 char str[20]; 46 float f1; 47 float f2; 48 float f3; 49 float f4; 50 float s[NO]; 51 int bc; 52 char name[NO][128]; 53 int ga[NO]; 54 fp = fopen("uuuo.txt","r"); 55 if(fp == NULL){ 56 printf("ファイルオープン失敗\n"); 57 return -1; 58 } 59 60 for(i=0;i<NO;i++){ 61 fscanf(fp, "%f,%127[^,],%f,%f,%f", &f1, str ,&f2, &f3, &f4); 62 63 s[i]=(f2+f3+f4)/3; 64 strcpy(name[i], str); 65 ga[i]=(f1); 66 printf("%d,%s %f\n",ga[i],name[i],s[i]); 67 68 } 69 70 bubblesort(s,NO,name,ga); 71 puts("平均点順にソートしました\n"); 72 puts("順位 学籍番号 氏名 平均点"); 73 for(i=0;i<NO;i++){ 74 printf("%d:%d,%s,%f\n",i+1,ga[i],name[i],s[i]); 75 } 76 77 78 79 return 0; 80 81 82 83 84}

###テキストファイル
1,Kongo,72,94,61
2,Kirishima,90,65,70
3,Myoukou,93,68,68
4,Cyokai,68,88,84
5,Atago,77,100,65
6,Ashigara,60,86,82
7,Maya,82,92,70
8,Haguro,83,92,64

###期待される出力値
1:7,maya,81.3
2:5,atago,80.6
3:cyokai,80
4:8,haguro,79.6
5:6,ashigara,78.6
6:3,myoukou,76.3
7:1,kongo,75.6
8:2,kirishima,75

補足情報(FW/ツールのバージョンなど)

mac
visual studio code
c言語

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cateye

2020/01/26 10:26

構造体にしないのは何故でしょう?
ritsu.m

2020/01/26 10:27

構造体を用いずに実現するという課題なので構造体は使っていません
guest

回答1

0

ベストアンサー

void bubblesort(float numbers[],int array_size,char str[][20],int ku[])

void bubblesort(float numbers[],int array_size,char str[][128],int ku[])
にしてください。

投稿2020/01/26 15:38

tatsu99

総合スコア5424

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ritsu.m

2020/01/27 11:29

できました! ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問