Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ Структуры и файлы

Автор: Desktop 3 29.10.2006 2:08

В файл 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 29.10.2006 2:19

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 29.10.2006 2:24

Да про цикл забыл..


Но что то по дате рождения не сортируется...

Автор: volvo 29.10.2006 2:30

Пузырек?

Немного некорректно... Вот так надо бы:

  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 29.10.2006 2:36

Спасибо! smile.gif

Автор: Desktop 3 31.10.2006 23:12

Как правильно вывести введеную в файл информацию ?
Так выводится только даные первого человек три раза... Как сделать что бы все даные выводились ?

Автор: volvo 31.10.2006 23:18

У тебя вообще ничего не должно выводиться ... Для вывода в файл надо пользоваться не ifstream, а ofstream...

Автор: Desktop 3 31.10.2006 23:25

...

Автор: volvo 31.10.2006 23:35

Ты нормально вопрос задать можешь? Что можно из ЭТОГО понять???

Цитата
Как правильно вывести введеную в файл информацию ?

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

Автор: Desktop 3 31.10.2006 23:41

...

Автор: Desktop 3 1.11.2006 1:09

разобрался.


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();