Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 04.06.2009, 19:07   #1
StudentPolitech
Подтвердите свой е-майл
 
Регистрация: 21.11.2008
Сообщений: 400
Радость Ввод-вывод в С++

Написал программу компилируется работает но результаты странные выводит)) Вроде из памяти ничего лишнего не хватаю, но никак не отловлю ошибку, помогите пожалуйста кто может, заранее благодарю.
Красным у меня выделен метод пузырьковой сортировки с помощью которой я сортирую студентов по оценкам, по убыванию.
#include<iostream.h>
#include<conio.h>
#include <fstream.h>

struct proga
{
int nomer;
int ocenka;
char familia[10];
};
proga a;
proga b;
proga c;
int main()
{
clrscr();
ofstream f1("a.bar",ios::binary);
int kol=0;
for(int i=1; i<=10; i++)
{
kol=kol++;
cout<<kol<<" "<<"student"<<endl;
//cout<<"Vvedite nomer"<<endl;
a.nomer=kol;
cout<<"Vvedite familiy"<<endl;
cin>>a.familia;
cout<<"Vvedite ocenky"<<endl;
cin>>a.ocenka;
clrscr();
f1.write((char *) &a, sizeof (a));}
f1.close();

ifstream f2("a.bar",ios::binary);

for( i=1;i<=10;i++)
{
f2.read((char*) &a, sizeof( a));
cout<<"Nomer "<<a.nomer<<endl;
cout<<"Familia "<<a.familia<<endl;
cout<<"Ocenka "<<a.ocenka<<endl;
cout<<endl;
}
f2.close();
getch();
clrscr();


ifstream f3("a.bar", ios::ate |ios::in | ios::binary);
ofstream f4("a.bar", ios::ate| ios:ut| ios::binary);



for(int j=0; j<9; j++)
{
f3.open("a.bar", ios::ate | ios::binary);
f4.open("a.bar", ios::ate| ios::binary);
//f3.seekg(0);
//f4.seekp(0);
for(i=0;i<9; i++)
{
f3.seekg((i)*sizeof(a));
f3.read((char*) &a, sizeof a);
f3.read((char*) &b, sizeof b);
if(a.ocenka<b.ocenka)
{
c.nomer=a.nomer;
for(int k=0;k<10;k++) {
c.familia[k]=a.familia[k]; }
c.ocenka=a.ocenka;

a.nomer=b.nomer;
for(k=0;k<10;k++)
{
a.familia[k]=b.familia[k];
}
a.ocenka=b.ocenka;
b.nomer=c.nomer;
for( k=0;k<10;k++){
b.familia[k]=c.familia[k]; }
b.ocenka=c.ocenka;
}
//f3.seekg((i)*sizeof(a));
f4.seekp((i)*sizeof(a));
f4.write((char *) &a, sizeof(a));
f4.write((char *) &b, sizeof(b));
}
//f3.seekg(0);
//f4.seekp(0);
f3.close();
f4.close();
}

cout<<"sortirovka okonchena"<<endl;
getch();
clrscr();

f2.open("a.bar",ios::binary);
for( i=0;i<10;i++)
{
f2.read((char*) &a, sizeof(a));
//f2.seekg(0);
//if(f2.eof()){cout<<"file pustoy"<<endl; getch();clrscr(); return 0;}

cout<<"Nomer "<<a.nomer<<endl;
cout<<"Familia "<<a.familia<<endl;
cout<<"Ocenka "<<a.ocenka<<endl;
cout<<endl;
}
f2.close();
getch();

return 0;
}
StudentPolitech вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ввод и вывод Mihael-Vlz Паскаль, Turbo Pascal, PascalABC.NET 3 19.01.2009 18:00
Асинхронный ввод/вывод Pblog Обсуждение статей 0 27.05.2007 01:13


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Здесь нужно купить рекламу за 7 тыс руб в месяц! )
пишите сюда - alarforum@yandex.ru
ИКС 840