Помощь - Поиск - Пользователи - Календарь
Полная версия: Структуры и файлы
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
Desktop 3
В файл znak.txt введены даные про трёх человек. Сортировать по дате рождения.

Сама программа

void sort()
{
ifstream qwerty("qwerty.txt",ios::in);
for(i = 0; i < 3; i++)
qwerty>>pr[i].surname>>pr[i].zodiac>>pr[i].birthday;
for (i=0;i<3;i++)
{
for (j=i+1;j<3;j++)
{
if (strcmp(pr[i].birthday, pr[j].birthday)>0)
{
s=pr[i];
pr[i]=pr[j];
pr[j]=s;
}
}
}
for (i=0; i<3; i++)
{
cout<<"Familiya: "<<pr[i].surname<<endl;
cout<<"Znak zodiaca: "<<pr[i].zodiac<<endl;
cout<<"Den’ rozhdeniya: "<<pr[i].birthday<<endl;
}
qwerty.close();
getch();
}



Подскажите где ошибка в функций sort. Сортировка вот такая получается sad.gif :
...
volvo
ifstream zn_2k("znak.txt",ios::in);

for(i = 0; i < 3; i++) // Цикл забыл? Ты же читаешь только одно значение из файла...
zn_2k>>pr[i].surname>>pr[i].zodiac>>pr[i].birthday;
Desktop 3
Да про цикл забыл..


Но что то по дате рождения не сортируется...
volvo
Пузырек?

Немного некорректно... Вот так надо бы:
  for (i=0;i<3;i++) {
for (j=i+1;j<3;j++) { // <--- Обрати внимание ОТ чего начинаем цикл...

if ...

}
}


P.S. Хотя я бы вообще сделал:
  for (i=0;i<3;i++) {
for (j=2; j > i; j--) {

if ...

}
}
Desktop 3
Спасибо! smile.gif
Desktop 3
Как правильно вывести введеную в файл информацию ?
Так выводится только даные первого человек три раза... Как сделать что бы все даные выводились ?
volvo
У тебя вообще ничего не должно выводиться ... Для вывода в файл надо пользоваться не ifstream, а ofstream...
Desktop 3
...
volvo
Ты нормально вопрос задать можешь? Что можно из ЭТОГО понять???
Цитата
Как правильно вывести введеную в файл информацию ?

Или ты в файл выводишь, или ты из файла читаешь, или вообще непонятно что у тебя происходит... Информация в файл введена? Тогда показывай, КАК... Что толку от этих кусочков кода, если ты не показываешь СТРУКТУРУ, в которой хранятся данные?
Desktop 3
...
Desktop 3
разобрался.

ifstream test("test.txt");
for (i=0; i<3; i++)
{
test>>parametr1>>parametr2>>parametr3;
cout<<" 1: "<<parametr1<<endl;
cout<<" 2: "<<parametr2<<endl;
cout<<" 3: "<<parametr3<<endl;
}
test.close();

Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.