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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 07.04.2010, 00:22   #1
MR_Andrew
Форумчанин
 
Регистрация: 05.10.2009
Сообщений: 100
По умолчанию C++: работа с файлами

Вечер добрый.
задание:
А. Создать файл, содержащий сведения о телефонах абонентов. Каждая записаь имеет поля: фамилия абонентов, год установки телефона, номер телефона. Количество записей произвольное.
Б. Написать программу, выдающую информацию следующего вида:
- по вводимой фамилии абонента выдать номер телефона.
- Определить количество установленных телефонов с хххх года. Номер года вводится с терминала.

Начал с А. И сразу споткнулся.
Код:
#include <iostream>
#include <fstream.h>
#include <string.h>
#include <stream.h>


struct phone
{
int num;
};

struct imya
{
char name;
};


struct year
{
int god;
};


int main()
{
phone ph1;	//определение номера
//получить данные от пользователя

cout <<"\nVvedite Nomer ";
cin >>ph1.num;


imya nh1;

cout <<"\nVvedite Imya ";
cin >>nh1.name;

year yh1;

cout <<"\nVvedite God ";
cin >>yh1.god;

cout <<"\nfamiliya: "<< nh1.name <<" Telefon: "<< ph1.num <<" God ustanovki"<< yh1.god;

ofstream file("C:\\1.txt");
file << nh1.name;
file << ph1.num;
file << yh1.god;
return 0;
}
В блоке
Код:
cout <<"\nVvedite God ";
cin >>yh1.god;
оно просто перескакивает через cin. Причем дело не в самом блоке, переставлял местами - перескакивает именно на последнем. В файл пишет. И еще фокус: из фамилии запоминает только первую букву. Номер нормально, и в файл пишет. А тут только 1-ю. Что это оно так? И еще надо огранизовать, чтоб много фамилий вводить. Но, думаю, просто в цикл While загнать, но как реализовать еще не придумал.
MR_Andrew вне форума
Старый 07.04.2010, 00:31   #2
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

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

using namespace std;

struct item
{
	int num;
	string name;
	int year;
};

const char * outfile = "output.txt";

vector <item> data;

void next_item(item &cur)
{
	cout <<"\nVvedite Nomer ";
	cin >> cur.num;
	cout << "\nVvedite Imya ";
	cin >> cur.name;
	cout << "\nVvedite God ";
	cin >> cur.year;
	cout <<"\nName: "<< cur.name <<" Phone: "<< cur.num <<" God ustanovki: "<< cur.year;
	ofstream file(outfile);
	file << cur.name << " " << cur.num << " " << cur.year;

}

int main()
{
	item cur;
	cout << "Vvedite kol-vo elementov : " << endl;
	int n;
	cin >> n;
	for(int i = 0; i < n; i++)
	{
		next_item(cur);
		data.push_back(cur);
	}
	return 0;
}
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума
Старый 07.04.2010, 00:44   #3
MR_Andrew
Форумчанин
 
Регистрация: 05.10.2009
Сообщений: 100
По умолчанию

Ozerich
Огромное Вам спасибо! Буду разбираться, но сегодня уже буду отдыхать, завтра на пары...
MR_Andrew вне форума
Старый 09.04.2010, 20:32   #4
MR_Andrew
Форумчанин
 
Регистрация: 05.10.2009
Сообщений: 100
По умолчанию

Все готово

Если кого интересует - коды, может еще понадобиться кому-то.
Код:
#include <iostream.h>
#include <fstream.h>

class Klient
{
    public:
	float num;
	char* name;
	int year;
        
	Klient(){};
	
	void Getvalue(){
	   cin>>name>>num>>year;
	   }

	~Klient(){}
  };

//__________________________________________________________

void main(){
 int n, i;
 cout<<"Vvedit' kil'kist' korystuvachiv";
 cin>>n;

   ofstream File("c:\\BAZA1.txt");

 Klient **A=new Klient* [n];

 for (i=0;i<n;i++){
   cout<<"\nInput surname, number, year of "<<(i+1)<<" user\n";
   A[i]=new Klient();
   A[i]->Getvalue();

   File<<A[i]->num<<"\t"<<A[i]->name<<"\t"<<A[i]->year<<"\n";
   }

 File.close();
}
Код:
#include <iostream.h>
#include <fstream.h>
#include <string.h>
#include <conio.h>


class Klient
{
    public:
	float num;
	char* name;
	int year;

	Klient(){}
	~Klient(){}
  };

//__________________________________________________________

int main(){

 int n,k, i=0, l=0, search1;
 char *search;

 cout<<"Vyberit' sposib poshuku (1-surname, year-another number )\n\n";
 cin>>k;
 if (k==1){cout<<"Input surname ";

	   cin>>search;
	   }
 else{    cout<<"Input year ";

	  cin>>search1;
	   }

 ifstream File("c:\\BAZA1.txt");

 Klient *A[50];

 switch (k){
   case 1:
   while(!File.eof()){

     A[i]=new Klient();

     File>>A[i]->num>>A[i]->name>>A[i]->year;
     if (strcmp(A[i]->name,search)==0){
       cout<<"\n"<<A[i]->num<<"\t"<<A[i]->name<<"\t"<<A[i]->year<<"\n";
       
       }
     i++;

     }  break;
   case 2:
   while(!File.eof()){

     A[i]=new Klient();

     File>>A[i]->num>>A[i]->name>>A[i]->year;
     if ((A[i]->year)>=search1) l++;
     i++;
     }
    cout<<"k-t' telefoniv z "<<search1<<" roku "<<l;
    break;
     }
  File.close();
getch();
return 0;
}
MR_Andrew вне форума
Закрытая тема


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с файлами dima0268 Общие вопросы C/C++ 1 15.12.2009 17:22
Работа с файлами в С++ ai\ekcah^p Помощь студентам 2 21.06.2009 16:16
Работа с файлами Pr1meEX PHP 9 21.06.2009 03:15
Работа с файлами cr1mson Общие вопросы C/C++ 7 14.01.2009 22:42
Работа с файлами Joxter Помощь студентам 4 08.10.2008 01:17