Je dois lire un fichier .txt et le sortir avec un fichier .txt différent. Je dois utiliser le tri d'insertion afin de les trier en fonction de deux nombres. Je pourrais seulement aller aussi loin, je ne sais pas comment faire le tri d'insertion dans ce programme où j'ai deux nombres à trier.Tri d'insertion C++ à partir d'un fichier txt
Voici mon code:
#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";
}
c'est le fichier texte (numéros dans le support doivent être utilisés, d'abord avec le numéro avant deux points, et d'autre part avec nombre après deux points):
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)
sortie courant:
- ne soyez pas impoli dans le discours (3: 159)
- colère Retiens (3: 134)
- Soyez bien aux autres (4:36)
- Craignez aux parents (17:23)
de sortie prévue:
- Anger (RESTRICTION 3: 134)
- ne soyez pas impoli dans le discours (3: 159)
- Soyez bien aux autres (04:36)
- Craignez aux parents (17:23)
trié en termes de chiffres et le numéro de série reste le même
Allez lire le centre d'aide sur « comment poser une bonne question ». Lisez également [Comment déboguer de petits programmes] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/) par Eric Lippert. Vous avez actuellement une énorme fonction principale. À tout le moins diviser en trois fonctions: lire l'entrée, trier les données, écrire la sortie. Vous pouvez ensuite tester "lire l'entrée" et "écrire la sortie" avant de commencer à tester le tri. –
@MartinBonner J'ai un fichier txt que je dois lire et il nécessite un tri. exemple de données présentes dans mon fichier txt est 1. Ne pas être impoli dans la parole (3: 159) "ces chiffres entre parenthèses" 2. Restreindre la colère (3: 134) 3. Être bon aux autres (4:36) –
@YSC des suggestions? –