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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2011, 20:29   #1
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию С++ запись в файл

У меня проблема - мне надо из файла считывать положительные и отрицательные числа, и разносить их по разным файлам. Причем при записи пожительных и отрицательных чисел их надо начинать записывать в обратной последовательности.

Я сделала основу, программа почему-то начинает видеть основную последовательность не с первого числа, а со второго, запишет одно число в файл и все. Отрицательные числа видит, но не записывает, хотя создает для них файл. И я не совсем хорошо понимаю, как можно реализовать отчет основной последовательности с конца.

Код:
#include<iostream>
#include<fstream>

#include<conio.h>




using namespace std;
int main()

{

	int number=0;
	int i=0;
	
	

ifstream in_stream;
ifstream in_stream1;

ofstream out_stream;
ofstream out_stream1;
in_stream.open("Numbers.txt");
/////////////////Podchet chisel v faile////

int count = 0;
in_stream >> number;
while ( !in_stream.eof() )
{count++;
in_stream >> number;
}
in_stream.close();

cout<<"Vsego chisel: "<<count<<endl;


//////////Sortirovka - polozitelnoe  ili otrizatelnie////
in_stream1.open("Numbers.txt");
in_stream1 >> number;

while (!in_stream1.eof())
{
	in_stream1 >> number;

 
	if (number > 0)

	{
		out_stream.open("Positive_number.txt");
		
		out_stream<<number<<" ";
		cout<<"Zapisano polozitelnoe chislo "<<number<<" "<<endl;
	}
		else

	{
		if (number < 0)

		{
			out_stream.open("Negative_number.txt");
			out_stream1<<number<<" ";
			cout<<"Zapisano otritsatelnoe chislo "<<number<<" "<<endl;
		}
	}

}
in_stream1.close();
out_stream.close();
out_stream1.close();


_getch();
return 0;

}
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 13.05.2011, 20:37   #2
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию


Ты одно число читаешь до цикла, потому обработка начинается со второго.
Одно число записывает, потому что ты каждый раз заново открываешь файл.
Отрицательные числа не записывает, потому что
Цитата:
out_stream.open("Negative_number.tx t");
out_stream1<<number<<" ";
Чтобы записать последовательность с конца, проще всего сначала прочитать ее в массив.
Son Of Pain вне форума Ответить с цитированием
Старый 13.05.2011, 21:12   #3
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Сейчас буду мудрить с массивом.
Но вначале проверю про поток отрицательных чисел.

А почему он записал одно число и доволен, а их там должно быть несколько? Я не понимаю.
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 13.05.2011, 21:14   #4
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

И последнее число он записывает 2 раза?

Да, отрицательное число он схватил...правда тоже одно из нескольких
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 13.05.2011, 21:27   #5
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Цитата:
Сообщение от Blondy Посмотреть сообщение
А почему он записал одно число и доволен, а их там должно быть несколько? Я не понимаю.

Все просто )
Ты на каждой итерации открываешь файл заново. Если в ofstream:: open не передавать второй параметр, он перезаписывает файл при открытии.
Son Of Pain вне форума Ответить с цитированием
Старый 13.05.2011, 21:52   #6
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Ой, написала с массивом. еще больше запуталась. Все равно он как-то неправильно работает.
Теперь получается что пользователь создает сам последовательность, но компьютер ее с самого конца читать даже в массиве не хочет

Код:
#include<iostream>
#include<fstream>

#include<conio.h>




using namespace std;
int main()

{

int number=0, i=0, j=0, n=0;
	int  A [40];

ifstream in_stream;
ifstream in_stream1;

ofstream out_stream;
ofstream out_stream1;

/////Polzovatel sapisivat chisla v fail/////

cout<<"Vvedite kolishestvo chisel: "<<endl;
	cin>>n;

out_stream.open("Numbers.txt");
for (i=0;i<n;i++)

{
	cout<<"Vvedite chislo: "<<endl;
	cin>>number;
	out_stream<<number<<" ";

}

out_stream.close ();



in_stream.open("Numbers.txt");
///////////////Podchet chisel v faile////
/*
int count = 0;
in_stream >> number;
while ( !in_stream.eof() )
{count++;
in_stream >> number;
}
in_stream.close();

cout<<"Vsego chisel: "<<count<<endl;

*/


in_stream1.open("Numbers.txt");

/// Sozdajem massiv chitaja is faila/////
while (!in_stream1.eof())
{
		for (i=0; i<n; i++)
		{
			in_stream1 >> number;
		A[i]=number;

		///dlja kontrolja - toze vidit tolko poslednuju chifru
		cout<<A[i]<<" ";



		}

}

in_stream1.close();


////////Sortirovka - polozitelnoe  ili otrizatelnie////
out_stream.open("Positive_number.txt");
out_stream1.open("Negative_number.txt");
for (j=n; j>n; j--)

{

if (A[j] > 0)

	{
		
		
		out_stream<<A[j]<<" ";
		cout<<"Zapisano polozitelnoe chislo "<<A[j]<<" "<<endl;
	}
		else

	{
		if (A[j] < 0)

		{
			
			out_stream1<<A[j]<<" ";
			cout<<"Zapisano otritsatelnoe chislo "<<A[j]<<" "<<endl;
		}
}
}



out_stream.close();
out_stream1.close();


_getch();
return 0;

}
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan

Последний раз редактировалось Blondy; 13.05.2011 в 22:00.
Blondy вне форума Ответить с цитированием
Старый 13.05.2011, 21:55   #7
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Он теперь вообще никакие числа не записывает, только в файл "Number.txt"
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 13.05.2011, 22:09   #8
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

А теперь в условии ошибка )
вместо
Код:
for (j=n; j>n; j--)
должно быть
Код:
for (j=n-1; j>=0; j--)
И еще при чтении у тебя лишний цикл. Стукни лучше в icq, в общем
Son Of Pain вне форума Ответить с цитированием
Старый 13.05.2011, 22:15   #9
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Нету icq((( В превентивных целях(((((

Лишний цикл
while (!in_stream1.eof())
убрала

Условие поправила...... А файлы пустые((
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan

Последний раз редактировалось Blondy; 13.05.2011 в 22:18.
Blondy вне форума Ответить с цитированием
Старый 13.05.2011, 22:26   #10
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

В каких превентивных целях? )


Код:
#include<iostream>
#include<fstream>
#include <vector>
#include<conio.h>
using namespace std;
int main()
{
	vector<int> numbers;
	ifstream in_stream("numbers.txt");
 ofstream out_stream1("positive_number.txt");
 ofstream out_stream2("negative_number.txt");
	int number;
 while (!in_stream.eof())
	{
		in_stream >> number;
		numbers.push_back(number);
	}

	for (int j=numbers.size()-1; j>=0; j--)
	{
		if (numbers[j] >= 0)
  {
			out_stream1<<numbers[j]<<" ";
			cout<<"Zapisano polozitelnoe chislo "<<numbers[j]<<" "<<endl;
		}
		else
  {
			out_stream2<<numbers[j]<<" ";
			cout<<"Zapisano otritsatelnoe chislo "<<numbers[j]<<" "<<endl;
		}
	}
	_getch();
	return 0;
}
Son Of Pain вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись в файл hiho Общие вопросы Delphi 7 11.03.2011 04:50
запись в файл $_Unit_$ Общие вопросы C/C++ 3 23.06.2009 12:59
Запись в файл |{ot Общие вопросы Delphi 6 05.07.2008 02:24
Запись в файл [Smarik] Помощь студентам 4 07.05.2008 23:26
запись в файл Prisian Общие вопросы Delphi 6 24.07.2007 13:43