Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.04.2009, 22:15   #1
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию Ошибка в алгоритме программы на бинарные фйлы

Дано: дан бинарный файл, в котором хранится неуказанное кол-во последовательностей целых чисел, типа 10 положительных, 10 отрицательных, 10 положительных, 10 отрицательных.... и т.п.

Задание:
Записать эти цифры в тот же файл, в виде последователньости 5 положительных, 5 отрицательных, 5 положительных, 5 отрицательных...

Проблема: Программа выдает заведомо не верные результаты.

Код программы:


Код:
#include <iostream.h>
#include <fstream.h>
#include <conio.h>

void main()
{
clrscr();
int nums[20]={1, 2, 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10, -1 , -2, -3, -4, -5, -6, -7, -8, -9, -10};
int buf;
long int count=0;
cout<<"Skolko raz zapisat posledovatelnost v file?"<<endl;
cin>>buf;//тут рограмма генерирует тот самый файл, который "дан".
fstream file("f", ios::binary| ios::app |ios::trunc);
for(int i=0;i<buf;i++)
	{
	file.write((char *) &nums[0],(sizeof (int))*20);                           .
  // mul(&nums[0]);
   }
   buf=0;
file.close();
//тут программа переставляет всю эту радость 
//(считывая 20 циферок в масив, сортируя их, и записывая обратно).
file.open("f", ios::binary| ios::app | ios::in);

while(!file.eof())
	{
   file.read((char *) &nums, (sizeof (int))*20);
   for(int i=5;i<11;i++)
   	{
      buf=nums[i];
      nums[i]=nums[i+5];
      nums[i+5]=buf;
      }
   file.seekp(count*(sizeof (int)));
   file.write((char *) &nums[0],(sizeof (int))*20);
   count+=20;
   }
file.seekp(count*(sizeof (int)));
file.write((char *) &nums[0],(sizeof (int))*20);

file.close();
//собственно сам вывод результатов.
ifstream result("f", ios::binary);
while(!result.eof())
	{
	result.read((char *) &nums, (sizeof (int))*20);
	for(int i=0;i<10;i++)
		{
   	cout<<nums[i]<<" ";
   	}
	cout<<endl;
	for(int i=10;i<20;i++)
		{
	   cout<<nums[i]<<" ";
	   }
	cout<<endl;
   cout<<endl;
   }
result.close();
getch();
}
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс
ROD вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка программы. Vladya Помощь студентам 9 26.01.2009 01:40
Помогите в алгоритме Евклида AhmetJan Общие вопросы C/C++ 5 24.01.2009 22:40
[C++] ошибка в коде программы!! jazzben Помощь студентам 12 27.09.2008 19:25
Как изобразить в алгоритме!!?? Шурик Общие вопросы Delphi 0 23.10.2007 00:10