Я пытаюсь свернуть голову вокруг этой проблемы в течение недели, но я не могу найти что-либо в сети, и я отказался от попытки ее решить самостоятельно.Указание на конкретный элемент в массиве символов
Мое задание - написать программу, которая будет читать имена из файла и принимать новые записи от пользователя, а затем сортировать данные и записывать их в файл. Единственное, что касается этого, заключается в том, что я должен сортировать их в функции и использовать указатели для этого. Этот код также должен быть написан на C++, используя массивы символов.
Код, который у меня есть сейчас, выглядит следующим образом. Это рабочая версия, единственная проблема заключается в том, что я не использую ни указатели, ни функцию для сортировки имен.
#include<iostream>
#include<cstdlib>
#include<fstream>
#include<cstring>
bool sorted;
using namespace std;
int main()
{
int i = 0;
int numNames = 0;
ifstream ifs;
ifs.open("namn.txt");
char c[20][20];
if(ifs.is_open())
{
while(!ifs.eof())
{
ifs >> c[i];
i++;
}
}
cout<<"How many names do you want to enter?"<<endl;
cin>>numNames;
for(int l = i-1; l<numNames+i-1; l++)
{
system("cls");
cout<<"Enter a name: ";
cin>>c[l];
}
while(sorted == false)
{
for(int j = 0; j<numNames+i-1; j++)
{
for(int k = j; k<numNames+i-1; k++)
{
if(c[j][0] > c[k][0])
{
char snorre[20];
strcpy(snorre,c[j]);
strcpy(c[j],c[k]);
strcpy(c[k],snorre);
}
else if(c[j][0] == c[k][0])
{
if(c[j][1] > c[k][1])
{
char snorre[20];
strcpy(snorre,c[j]);
strcpy(c[j],c[k]);
strcpy(c[k],snorre);
}
}
}
}
cout<<endl<<endl<<endl;
ofstream ofs;
ofs.open("namn.txt");
for(int o = 0; o<numNames+i-1; o++)
{
cout<<c[o]<<" ";
ofs<<c[o]<<endl;
}
ofs.close();
system("pause");
sorted = true;
}
}
Так что, надеюсь, кто-то может помочь мне с этой проблемой, спасибо заранее! :)
http://stackoverflow.com/questions/5605125/why-is-iostreameof-inside-a-loop-condition-considered- соната ng –
Я думаю, что ваш вид не будет работать, если строки имеют первые 2 символа одинаковыми (и некоторые другие случаи) –
, вероятно, предполагаемый ответ будет заключаться в создании массива указателей, каждый из которых указывает на одну строку, а затем сортирует указатели , а не использовать 'strcpy'. (Это абсолютно ужасно по современным стандартам кодирования, но похоже, что ваше задание не обновлялось с 1985 года) –