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

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

新規登録して質問してみよう
ただいま回答率
85.48%
ソート

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

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

1225閲覧

C++のソートで、フフフフフと出てしまい困っています。

hoheinabachan

総合スコア6

ソート

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

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

2クリップ

投稿2018/04/29 17:38

C++の、成績を管理するコンソールアプリです。

int down[50], num[50], tmp, p, q;
for (p = 1; p <= n; p++){
down[p] = Student[p].eng;
num[p] = p;
}
for (p = 1; p < n; p++){
for (q = p + 1; q < n + 1; q++){
if (down[p] < down[q]){
tmp = down[p];
down[p] = down[q];
down[q] = tmp;
tmp = num[p];
num[p] = num[q];
num[q] = tmp;
}
}
}
printf("-------成績一覧-------\n");
printf("登録者数%d人\n", n);
printf("英語の成績\n");
for (p = 1; p <= n; p++){
printf("%s %d点\n", Student[num[p]].name, Student[num[p]].eng);
}

Studentは学生の名前とその人の英語の点数が入っている構造体で、nは登録した成績情報の順番を示す大域変数です。

英語の点数を降順でソートしたいのですが、実行するとフフフフフと大量に出てきます。検索したら終端文字が云々ということはわかったのですが、具体的にどう直せばよいのか見当が付きません。初めての質問なので情報が足りないかもしれませんが、よろしくお願いします。

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

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

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

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

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

segavvy

2018/04/29 18:21

仮にn=3だった場合、学生の情報が格納されているのは Student[0]〜Student[2]でしょうか?それともStudent[1]〜Student[3]でしょうか?
guest

回答1

0

自己解決

すみません、自己解決しました。成績情報の入力の際にn++としていたのを忘れていたのが原因でした。

投稿2018/04/29 18:48

hoheinabachan

総合スコア6

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

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

segavvy

2018/04/30 00:05

配列の先頭要素を使わないスタイル(例えばdown[0]やnum[0]などが使われていない)になっていますが、あまり一般的ではありません。特別な事情がなければ先頭要素から使う形がオススメです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問