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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2010, 17:38   #1
andrey-v-isaev
Новичок
Джуниор
 
Регистрация: 02.05.2010
Сообщений: 1
По умолчанию Файловый ввод-вывод

Здравствуйте!
Помогите разобраться начинающему программисту c++
Задача следующая. Исходный файл содержит массив целых чисел. Требуется: прочитать исходный файл, произвести некоторые операции с данными и вывести в другой файл данные в виде двух колонок: 1 - диапазон чисел (задаётся в программе), 2 - количество чисел попавших в данный диапазон.
Например, во входном файле:
1
0
7
2
11
в выходном:
5 3
10 1
15 1
Возникшая проблема: файл для чтения (в цикле for) открывается только один раз! Совершенно не понимаю почему.
Далее код...

Код:
#include <iostream>
#include <fstream>
#include <cstdio>
int main() 
{
	using namespace std;
	char in_file[9], out_file[9];
	int k(0), j(0), i(0), n(0);
	double sr(0);
	double p, c;
	//объявляем потоки для файлового ввода-вывода
	ifstream in_str;
	ofstream out_str;	
	//вводим имена входного и выходного файлов	
	cout << "Enter input file name:\n";
	cin >> in_file;
	cout << "Enter output file name:\n";
	cin >> out_file;
	//открываем файл для записи
	out_str.open(out_file);
	if(out_str.fail())
	{
		cout << "Output fail opening failed.\n";
		exit(1);
	}
	cout << "Enter calibration coefficient:\n";
	cin >> c;
	//открывает файл для чтения только один раз! почему?
	for(k=0;k<=4095;k++)
	{
		//открываем файл для чтения
		in_str.open(in_file);
		if(in_str.fail())
		{
			cout << "Input fail opening failed.\n";
			exit(1);
		}
		i=i+5;
		j=i+5;
		sr = static_cast<double>((j+i)*0.5);
		//вложенный цикл выполняется успешно
		while(in_str >> p)
		{
			p = (p*c);
			if((p >= i)&&(p <= j))
			{
				n++;
			}
		}
		//выводим всё что нужно в файл
		out_str << sr << " " << n << endl;
		//закрываем входной поток
		in_str.close();
	}
	//закрываем выходной поток
	out_str.close();
	cout << "Enter any key button to end the programm!\n";
	cin >> in_file[0];
	return 0;
}
andrey-v-isaev вне форума Ответить с цитированием
Старый 02.05.2010, 19:54   #2
Assemblerru
Форумчанин
 
Регистрация: 28.01.2010
Сообщений: 224
По умолчанию

Я бы помог но это под билдер

суть в следующем;
1открываем первый файл с данными
TStringList *ListDataFail = new TStringList;//глобальная переменная

ListDataFail ->LoadFromFile(Ime);//Ime - полный путь к файлу с данными

2 открываем файл куда надо записать новые данные
TStringList *ListInFail = new TStringList;//глобальная переменная

ListInFail ->ListInFail (Ime);//Ime - полный путь к файлу

3 вводим первую строку
AnsiString Stroka = List ->Strings[0];

4 преобразуем в число
Int A = StrToInt (Stroka);

5 далее с пеолученым числом делаем все что вздумается и полученное таким образом новое число вводим в файл так:

//введем новые значения
ListInFail ->Strings[IStrDat] = IntToStr (A) + " " + IntToStr (B);
ListInFail ->SaveToFile(SFileData); //Запоминание изменений
всему свое время как зиме и весне
и каждому солнцу свой неба кусок
Assemblerru вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Линейные связные списки и файловый ввод-вывод coll3ctor Помощь студентам 0 02.05.2010 14:54
Файловый Ввод-вывод и строки coll3ctor Общие вопросы C/C++ 17 02.05.2010 11:02
Файловый ввод/вывод -=$V=- Общие вопросы C/C++ 8 13.12.2008 21:11
файловый ввод/вывод kot111 Общие вопросы C/C++ 1 04.02.2008 17:45