前提・実現したいこと
名前をアルファベット順にソートするプログラムを作りたい。
ここに質問の内容を詳しく書いてください。
C++で名前ソートのプログラムを作成する上で、コードは合ってると思うのですが、何度やってもうまく行かずどこが悪いのか全く見当がつきません。
発生している問題・エラーメッセージ
名前をアルファベット順にソートしたいのですが、表示も並び替えもうまくいきません。
エラーメッセージ
エラーメッセージは特に表示されませんでした。
該当のソースコード
C++ここに言語名を入力
ソースコード
ヘッダー:
#ifndef RECORD_H
#define RECORD_H
#include <iostream>
#include <string>
using namespace std;
class Student
{
private:
char firstname[10];
public:
void setName()
{
cout << "Enter a student's name: ";
cin >> firstname;
}
char* getName() { return firstname; } void displayName() { cout << firstname; }
};
#endif
main.cpp:
#include <iostream>
#include <string>
#include <stdio.h>
#include <string.h>
#include <vector>
#include "Record.h"
using namespace std;
int main()
{
int number = 0;
cout << "enter a number: ";
cin >> number;
Student student[number]; Student holder; for(int i = 0; i < number; i++) { student[i].setName(); } for(int i = 0; i < number - 1; i++) { for(int i = 0; i < number; i++) { if (strcmp(student[i].getName(), student[i+1].getName()) > 0) { holder = student[i]; student[i] = student[i+1]; student[i+1] = holder; } } } for(int i = 0; i < number; i++) { student[i].getName(); } for(int i = 0; i < number; i++) { student[i].displayName(); cout << ", "; } cout << student[1].getName(); return 0;
}
### 試したこと
if (strcmp(student[i].getName(), student[i+1].getName()) > 0) の部分をif(student[i].getName() > student[i+1].getName())で試してみたのですがそれでもうまくいきませんでした。
補足情報(FW/ツールのバージョンなど)
Xcodeを使用(C++11)。表示結果は、こうなりました。
enter a number: 4
Enter a student's name: hiro
Enter a student's name: takashi
Enter a student's name: yuu
Enter a student's name: tama
tama, \336 , hiro, takashi, \336 Program ended with exit code: 0