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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.05.2009, 15:20   #11
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Читайте Правила раздела пункт 8:
Цитата:
8. Любые исходники должны оформляться посредством специального тега code (В расширенном режиме значок "#").
Об этом же я вам сказал в вашей другой теме.

Лично я на код в таком виде смотреть не буду.
Оформите как надо.

И приведите пример исходного файла, чтобы с ним можно было работать.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 09.05.2009, 19:27   #12
Graf Xandr
Пользователь
 
Регистрация: 03.12.2008
Сообщений: 58
По умолчанию

так, код исправил, теперь файл input.txt
Код:
family	year	adres	number
Степанов Иван Евгеньевич	1991	улица Московская 12-24	школа №130
Петров Петр Владимирович	1992	улица Литейная3-6	школа №70
Махнов Михайл Петрович	1991	улица Казанская 56-37	ШКОЛА №50
Милюков Василий Иванович	1992	улица Юбилейная 32-11	школа №21
Сидоров Иван Васильевич	1991	улица Астраханская 13-4 школа №1
столбцы (ФИО, дата рождения, точный адрес и школа) разделял между собой табом

Последний раз редактировалось Graf Xandr; 09.05.2009 в 19:30.
Graf Xandr вне форума Ответить с цитированием
Старый 09.05.2009, 20:05   #13
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Итак.
У вас много синтаксических ошибок.

Школу в таком виде писать нельзя (вернее, можно, но тогда нужно будет отдельно обрабатывать ее и выдирать номер). Пишите просто номер.
Вот такой исходный файл:
Код:
family	year	adres	number
Степанов Иван Евгеньевич	1991	улица Московская 12-24	130
Петров Петр Владимирович	1992	улица Литейная3-6	70
Махнов Михайл Петрович	1991	улица Казанская 56-37	50
Милюков Василий Иванович	1992	улица Юбилейная 32-11	21
Сидоров Иван Васильевич	1991	улица Астраханская 13-4	1
Дальше. Когда вы считываете данные с помощью оператора ">>", то в качестве разделителя используются все пробельные символы (пробелы, табуляции...).
Поэтому предлагаю такой вариант:
Будем читать построчно. И уже из строки будет выдирать нужные данные (с помощью функции strtok).
Код:
#include <fstream>
#include <iostream>
#include <iomanip>
#include <conio.h>
#include <string.h>

using namespace std;

ifstream in("input.txt"); //открыли файловые потоки//
ofstream out("output.txt");

struct stud
{
int number, year;
char family[50], adres[50];
void show();  //функция для вывода инфы на экран//
void print(); //функция для вывода инфы в файл//
};

void stud::show()
{
	cout<<family<<"\t"<<year<<"\t"<<adres<<"\t"<<number<<endl;
}
void stud::print()
{
	out<<family<<"\t"<<year<<"\t"<<adres<<"\t"<<number<<endl;
}
int main()
{
	stud file[15];
	char buf[1000],*p;
	int yearnow;
	int num;
	int i,j,n=0;
	if(!in)cout<<"error when open input.txt\n";
	else
	{
           in.getline(buf,1000,'\n');  // читаем первую строку с названиями столбцов - она не нужна
           cout<<buf<<endl;
		while(!in.eof()) //чтение из файла//
		{
			
			in.getline(buf,1000,'\n');
			p = strtok(buf,"\t\n");  // получаем имя
			strcpy(file[n].family,p);
			p = strtok(NULL,"\t\n"); // получаем год
			file[n].year = atoi(p);
			p = strtok(NULL,"\t\n"); // получаем адрес
			strcpy(file[n].adres,p);
			p = strtok(NULL,"\t\n"); // и номер школы
			file[n].number = atoi(p);

			file[n].show(); //вывожу данные через функцию//
			n++;
		};
		cout<<"what is year now?";
		cin>>yearnow;
		if(!out)cout<<"error when open output.txt\n";
		else
		{
			for(i=0; i<n; i++) //ищу совпадения введенного года и и поля year для последуещего удаления//
				if(file[i].year==yearnow)
				{
					for(j=i; j<n-1; j++) file[j]=file[j+1]; //выполняем сдвиг в массиве с право на позицию//
					n--; //уменьшаем на 1 после удаления//
					i--;
				}

                      for(i=0; i<n; i++) //записываем в файл//
		file[i].print(); //вывод данных через функцию структуры//
		}
	}
	in.close(); out.close(); //закрыл потоки//
	return 0;
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Борланд С++ 3.1 , задача со строкой Graf Xandr Помощь студентам 3 09.05.2009 14:37
проблема со структурой Petruha-nsk Общие вопросы C/C++ 1 18.04.2009 21:12
Задача со структурой и сортировкой на С++ Many man Помощь студентам 1 21.03.2009 22:52
Проблемы с динамической структурой данных Mailz Общие вопросы C/C++ 1 21.05.2008 00:18