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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.01.2012, 14:34   #1
PotatoCaptain
Пользователь
 
Регистрация: 05.12.2011
Сообщений: 40
По умолчанию Странно записывает в файл

Информацию записываю в файл, все записывается хорошо, кроме числа из даты в итоге в блокноте получается
Фамилия _______
дата -858993460 3 2004
Цена _______
-858993460 - вот это записывается вместо обычного числа, не пойму почему
вот код
Код:
#include "stdafx.h"
#include "iostream"
#include "fstream"
#include "stdio.h"
#include "string"
#include "windows.h"
using namespace std;
 struct BD {string fam, data, cena;
int №,x,y,z;};
int main()
{   SetConsoleCP(1251); 
	SetConsoleOutputCP(1251);
	struct BD bd[100];
	string kor;
	char y;
	int x=0,a=0,i=0,n=0,b=0,c=0,q=0;
    ofstream out ("file.txt");
        cout << "Заполнение базы данных"<< endl;
		cout  <<"Введите колличесво покупателей"<< endl;
        cin >> a;
		 cin.ignore();
		for (i=0;i<a;i++){
        cout << "Введите фамилию "<<i+1<<" покупателя"<< endl;
      
		getline(cin,bd[i].fam);
        out<<bd[i].fam<<endl;
		
		cout << "Введите число"<< endl;
		cin>>bd[i].y;
		cout << "Введите месяц"<< endl;
		cin>>bd[i].y;
		cout << "Введите год"<< endl;
		cin>>bd[i].z;
        out<<bd[i].x<<bd[i].y<<bd[i].z<<endl;
        cout << "Введите цену квартиры"<<endl;
		cin.ignore();
		if(i==a-1)
		{getline(cin,bd[i].cena);
		out<<bd[i].cena;}
		else
		{getline(cin,bd[i].cena);
		out<<bd[i].cena<<endl;}
		}
        out.close();
		cout << "База данных сохранена в файле: file.txt" << endl;
system ("pause");
}
PotatoCaptain вне форума Ответить с цитированием
Старый 17.01.2012, 14:39   #2
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Код:
int ,x,y,z;}
Это что? оО


А мусор записывается потому, что bd[i].x у тебя нету:
Код:
		cout << "Введите число"<< endl;
		cin>>bd[i].y;
		cout << "Введите месяц"<< endl;
		cin>>bd[i].y;
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 17.01.2012, 15:03   #3
PotatoCaptain
Пользователь
 
Регистрация: 05.12.2011
Сообщений: 40
По умолчанию

Цитата:
Сообщение от Mandrivnyk Посмотреть сообщение
Код:
int ,x,y,z;}
Это что? оО


А мусор записывается потому, что bd[i].x у тебя нету:
Код:
		cout << "Введите число"<< endl;
		cin>>bd[i].y;
		cout << "Введите месяц"<< endl;
		cin>>bd[i].y;
№ - используется дальше, просто пишу курсовую, скинул тока часть кода.
насщет bd[i].x, да точно, невнимательный
тогда еще один вопрос
Код:
cout << "******Базза данных******"<< endl;
		ifstream out ("file.txt");
		cout<<" _____________________________________________________________________________"<<endl;
		cout<<"|______________________ФАМИЛИЯ|_______ДАТА|ИДЕНТИФИКАЦИОННЫЙ НОМЕР|_______ЦЕНА|"<<endl;
		i=0;
		while (! out.eof()) 
		{
	     getline(out,bd[i].fam);		
		 out>>bd[i].x;
		 out>>bd[i].y;
		 out>>bd[i].z;
		 bd[i].№=i+1;
		 getline(out,bd[i].cena);
	     cout<<"|";
		 cout.width(29);
         cout.fill('_');
		 cout << bd[i].fam<<"|";
		 cout.width(11);
         cout.fill('_');
		 cout<<bd[i].x<<"."<<bd[i].y<<"."<<bd[i].z<<"|";
		 cout.width(23);
         cout.fill('_');
		 cout<<bd[i].№<<"|";
		 cout.width(11);
         cout.fill('_');
		 cout<<bd[i].cena<<"|"<<endl; 
	    ++i;
        }
		out.close();
теперь дату считывает с файла вообще както не понятно
PotatoCaptain вне форума Ответить с цитированием
Старый 17.01.2012, 15:15   #4
PotatoCaptain
Пользователь
 
Регистрация: 05.12.2011
Сообщений: 40
По умолчанию

Да и вообще странно считывает я вроде цикл задал while (! out.eof()) {}
просто раньше я дату записывал просто в одну строку стринг, и все считывалось нормально и выдавалось в консоль красиво, но мне нужно сделать запрос по году и месяцу, и поэтому решил переделать дату в int
PotatoCaptain вне форума Ответить с цитированием
Старый 17.01.2012, 15:30   #5
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Цитата:
№ - используется дальше, просто пишу курсовую, скинул тока часть кода.
Ты мне мозг взрываешь... Ну нельзя же в плюсах объявлять переменную с таким именем...

Насчет считывания -- в каком виде хранятся данные в файле?
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 17.01.2012, 15:43   #6
PotatoCaptain
Пользователь
 
Регистрация: 05.12.2011
Сообщений: 40
По умолчанию

Цитата:
Сообщение от Mandrivnyk Посмотреть сообщение
Ты мне мозг взрываешь... Ну нельзя же в плюсах объявлять переменную с таким именем...
да?хорошо, заменю, ну вроде работает, ошибок не выдает)
Цитата:
Сообщение от Mandrivnyk Посмотреть сообщение
Насчет считывания -- в каком виде хранятся данные в файле?
фамилия - string, дата - int, цена - string
PotatoCaptain вне форума Ответить с цитированием
Старый 17.01.2012, 15:52   #7
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Цитата:
Сообщение от PotatoCaptain Посмотреть сообщение
да?хорошо, заменю, ну вроде работает, ошибок не выдает)

фамилия - string, дата - int, цена - string
Скопипасть сюда пару строчек. Так, как они у тебя в файле записаны...
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 17.01.2012, 15:58   #8
PotatoCaptain
Пользователь
 
Регистрация: 05.12.2011
Сообщений: 40
По умолчанию

ну это структура
struct BD {string fam, cena;//фамилия, цена
int ,x,y,z;};//число месяц год
struct BD bd[100];

запись в файл
out<<bd[i].fam<<endl;
out<<bd[i].x<<bd[i].y<<bd[i].z<<endl;
out<<bd[i].cena;

считывание с файла
getline(out,bd[i].fam);
out>>bd[i].x;
out>>bd[i].y;
out>>bd[i].z;
getline(out,bd[i].cena);
PotatoCaptain вне форума Ответить с цитированием
Старый 17.01.2012, 16:07   #9
PotatoCaptain
Пользователь
 
Регистрация: 05.12.2011
Сообщений: 40
По умолчанию

ааа, всмысле как в файле
Фамилия1
2
6
2008
1000000
Фамилия2
9
9
2009
2000000
PotatoCaptain вне форума Ответить с цитированием
Старый 17.01.2012, 16:11   #10
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Цитата:
Сообщение от PotatoCaptain Посмотреть сообщение
ааа, всмысле как в файле
Фамилия1
2
6
2008
1000000
Фамилия2
9
9
2009
2000000
тут у тебя дата в три строки записана.
а судя по коду, записываешь ты все в одну строку без пробелов...
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему не записывает ответ в файл (Паскаль) Katrina* Помощь студентам 1 21.12.2011 00:47
Free Pascal. Программа создает файл, но не записывает в него нужную переменную. Slap Паскаль, Turbo Pascal, PascalABC.NET 0 23.06.2011 12:43
Не записывает текст в файл .( gefest58 Общие вопросы Delphi 1 24.04.2011 19:56
Не записывает в переменную beemoto Общие вопросы Delphi 22 30.10.2009 11:25