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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.10.2013, 18:51   #1
fewcher
 
Регистрация: 23.11.2010
Сообщений: 6
По умолчанию Вывод мусора при считывании файла

При считывании файла с диска и последующего вывода информации в консоль к исходным данным добавляется рандомный мусор, да и файл считывается не с начала.
Компилятор: Dev-C++ 4.9.9.2

Код:
#include <iostream.h>
#include <iomanip.h>
#include <fstream.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>

struct book
{
	char avtor[15];
	char name[15];
	char izdat[15];
	int god;
};

struct avtor
{
	char avtor[15];
	int kolvo;
};

class dmassiv
{

private:
	book *pst;
	int n;
	avtor *pz;
	int k;

public:
	dmassiv(){n=0;pst=NULL;k=0;pz=NULL;}
	~dmassiv();
	void inputbookfile();
	void outputbook();
	void perechavtor();
	void outputperechavtor();
	void outputperechfile();
};


void dmassiv::inputbookfile()
{
	ifstream fin;
	char file[15];
	book t;
	int i;
	
	cout<<"File name:\n";
	cin>>file;
	fin.open(file);
	
	if(fin==NULL)
	{	
		cout<<"File not open\n";getch();exit(1);
	}
	
	n=0;
	do	{
			fin>>t.avtor>>t.name>>t.izdat>>t.god;
			n++;
		}
	while(fin.good());
	n--;
	fin.close();
	
	pst=new book[n];
	if(pst==NULL){cout<<"No dinamic memory\n";getch();exit(1);}
	
	fin.open(file);
	if(fin==NULL){cout<<"File not open\n";getch();exit(1);}
	
	for(i=0;i<n;i++)
	{
		fin>>pst[i].avtor>>pst[i].name>>pst[i].izdat>>pst[i].god;
	}
	fin.close();
}

	
void dmassiv::outputbook()
{
	int i;
	
	cout<<"Ishodnik \n\n";
	cout<<"Автор Название Издание Год\n";
	
	for(i=0;i<n;i++)
	{
		cout<<pst[i].avtor<<setw(10)<<pst[i].name
		<<setw(10)<<pst[i].izdat<<setw(10)<<pst[i].god <<endl; 
	}

}

void dmassiv::perechavtor()
{
	int i,j,fl;
	pz=new avtor[n];
	
	if(pz==NULL){cout<<"No dinamic memory\n";getch();exit(1);}
	if(pz!=NULL){delete []pz;k=0;}
	
	for(i=0;i<n;i++)
	{	
		fl=0;
		for(j=0;j<k;j++)
		
		if(strcmp(pst[i].avtor,pz[j].avtor)==0) {fl=1;pz[j].kolvo++;}
		if(fl==0) {strcpy(pz[k].avtor,pst[i].avtor);pz[k].kolvo=1;k++;}

	}

}

void dmassiv::outputperechavtor()
{	
	int i;
	
	cout<<"Perechen ABTOPOB\n";
	cout<<"ABTOP KOLI4ECTBO\n";
	
	for(i=0;i<k;i++)
	{
		cout<<pz[i].avtor<<" "<<pz[i].kolvo<<endl;
	}

}

void dmassiv::outputperechfile()
{
	ofstream fout;
	char file[10];
	int i;

	cout<<"File name:\n";
	cin>>file;

	fout.open(file);
	if(!fout.good()){cout<<"File not created\n";getch();exit(1);}

	for(i=0;i<k;i++)
	fout<<pz[i].avtor<<" "<<pz[i].kolvo<<endl;
	fout.close();

}

dmassiv::~dmassiv()
{
	if(pst!=NULL){delete []pst;n=0;pst=NULL;}
	if(pz!=NULL){delete []pz;k=0;pz=NULL;}
}

int main()
{
	setlocale(LC_ALL, "Russian");
    dmassiv a;
	int j;
	while(1)
	{
		cout<<"1.Enter the table\n";
		cout<<"2.Print the table at screen \n";
		cout<<"3.Creating perech\n";
		cout<<"4.Print perech at screen\n";
		cout<<"5.Vivod\n";
		cout<<"6.Exit\n\n";
		cout<<"Choose 1-6\n";
		cin>>j;

		switch(j)
		{
			case 1: a.inputbookfile();break;
			case 2: a.outputbook();getch();break;
			case 3: a.perechavtor();break;
			case 4: a.outputperechavtor();getch();break;
			case 5: a.outputperechfile();break;
			case 6: cout<<"3ABEPIIIEHIE PAboT6I";getch(); return 1;
			default: cout<<"ERROR.Repeat Please";getch();

		}

	}
	getch();
}
fewcher вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при считывании из файла JustSay Общие вопросы Delphi 3 29.07.2013 13:28
доступ по неверному указателю при построчном считывании данных из файла okrill Общие вопросы C/C++ 3 01.09.2012 19:07
Дублирует структуру при считывании из файла RaTeN Общие вопросы C/C++ 2 05.10.2011 00:28
Проблема при считывании из файла JeyKip Общие вопросы C/C++ 0 17.01.2010 22:03
Помогите разобраться, ошибка при считывании из ini файла XATAB Помощь студентам 4 13.02.2007 05:57