Мне нужно прочитать файл .txt и вывести его с помощью другого файла .txt. Я должен использовать сортировку вставками, чтобы отсортировать их по двум числам. Я мог только зайти так далеко, я не знаю, как выполнить сортировку вставками в этой программе, где у меня есть два числа для сортировки.
Вот мой код:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main(void)
{
int serialno[100], suratno[100], ayatno[100];
string order;
string str;
char ch;
int i = 0;
int j, temp;
ifstream fin;
fin.open("text.txt");
if(!fin)
{
cout << "Cannot open file \'text.txt\'! Quitting.\n";
exit(0);
}
while(fin)
{
fin.get(ch); //gets .
getline(fin, order, '('); //allegedly it removes the delimiter char from stream too
fin >> suratno;
fin.get(ch); //gets :
fin >> ayatno;
fin.get(ch); //gets )
fin.get(ch); //gets \n
cout << serialno << "." << order << "("<<suratno<<":<<ayatno<<")\n";
}
fin.close();
//sort algorithm
for (int i = 0; i < length; i++){
j = i;
while (j > 0 && suratno [j] < suratno [j-1]){
temp = suratno [j];
suratno [j] = suratno [j-1];
suratno [j-1] = temp;
j--;
cout << serialno << endl;
}
}
}
ofstream fout;
fout.open("newtext.txt");
if(!fout)
{
cout << "Cannot open output file\'orderedquranorders.txt\'!Quitting.\n";
exit(0);
}
i = 0;
//write sorted list to output file
fout.close();
cout << i << " orders successfully sorted and written.\n";
}
это текстовый файл (следует использовать числа в квадратных скобках, сначала с номером перед двоеточием, а затем с номером после двоеточия):
1. Do not be rude in speech (3:159)
2. Restrain Anger (3:134)
3. Be good to others (4:36)
4. Do not be arrogant (7:13)
5. Forgive others for their mistakes (7:199)
6. Speak to people mildly (20:44)
7. Lower your voice (31:19)
8. Do not ridicule others (49:11)
9. Be dutiful to parents(17:23)
текущий выход:
- Не будь груб в речи (3:159)
- Сдерживать гнев (3:134)
- Будьте добры к другим (4:36)
- Будьте послушны родителям (17:23)
ожидаемый результат:
- Сдерживать гнев (3:134)
- Не будь груб в речи (3:159)
- Будьте добры к другим (4:36)
- Будьте послушны родителям (17:23)
сортируется как по номерам, так и по серийным номерам. no остается прежним
for (int i = 0; i < length; i++){
вы никогда не определяетеlength
. Этот простой код не работает. Вам также не хватает двойной кавычки. - person Cinder Biscuits   schedule 29.11.2016