Earl Foz Ответов: 2

Как вывести результат моей программы в блокнот?


Я сделал программу, которая запрашивает 20 имен и оценок.
Затем программа автоматически расположит его в алфавитном порядке.
Теперь я попытался вывести результат в файл". txt". Но файл .txt не упорядочил имена в блокноте
Я хочу знать, что я сделал не так и как я могу исправить свою программу, чтобы вывести 20 результатов в алфавитном порядке

Что я уже пробовал:

#include <iostream>
#include <string>
#include <fstream>

using namespace std;

int main()
{
 ofstream outputFile;
 outputFile.open("earlfoz.txt")
 string name[20];
 int grade[20];
 int index[20];
 int i, j;

 for(i=0;i<20;i++)
 {
  cout << "Please enter name: ";
  cin >> name[i];
  outputFile << name[i] << endl;
  cout << "Please enter grade: ";
  cin >> grade[i];
  outputFile << grade[i] << endl;
  
 }

 for(i=0;i<20;i++)
 {
  index[i]=i;
 }

 for(i=0;i<20;i++)
 {
  for(j=i+1;j<20;j++)
  {
   int temp;
   
   if(name[index[i]] > name[index[j]])
   {
    temp = index[i];
    index[i] = index[j];
    index[j] = temp;
   }
  }
 }
 cout << endl;

 for(i=0;i<20;i++)
 { 
  cout << name[index[i]] << "        "
   << grade[index[i]] << endl;
 }

 cin.ignore();
 cin.get();

 outputFile.close();
 cout << "Done!\n";
 
}

Garth J Lancaster

есть ли причина, по которой вы используете свой собственный механизм сортировки ? если это так, я бы предложил пройти через вашу программу с отладчиком, чтобы убедиться, что он делает то, что вы хотите, а не то, что вы "думаете", что компьютер должен делать.

Кроме того, всегда есть qsort https://www.tutorialspoint.com/c_standard_library/c_function_qsort.htm или http://www.anyexample.com/programming/c/qsort__sorting_array_of_strings__integers_and_structs.xml

2 Ответов

Рейтинг:
1

Patrice T

Цитата:
Я хочу знать, что я сделал не так и как я могу исправить свою программу, чтобы вывести 20 результатов в алфавитном порядке

Давайте предположим, что вы получаете отсортированный список на экране, но файл содержит список в том виде, в каком он был введен.
Перечитайте свой код и обратите внимание на то, что вы делаете с ним. outputFile, колокол должен начать звонить.

Когда вы не понимаете, что делает ваш код или почему он делает то, что делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволяет вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения, это невероятный инструмент обучения.

Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010-YouTube[^]

Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.


Рейтинг:
0

Peter Leow

Во-первых, добавьте к этому точку с запятой:

outputFile.open("earlfoz.txt");

Затем закомментируйте выходной файл в
for(i=0;i<20;i++)
{
 cout << "Please enter name: ";
 cin >> name[i];
 //outputFile << name[i] << endl;
 cout << "Please enter grade: ";
 cin >> grade[i];
 //outputFile << grade[i] << endl;
}
затем выведите сортированный результат строка за строкой в файл
for(i=0;i<20;i++)
{
  outputFile << name[index[i]] << "        "
  << grade[index[i]] << endl;
}