• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

tino20

inserir|ler|pesquizar

2 mensagens neste tópico

O seguinte programa devia dar para :

introduzir dados e gravar num ficheiro .txt

ler os dados

e fazer pesquiza...

mas depois de introduzir dados, nao consigo ler :S

e depois ao reabrir tb nao consigo inserir...

#include <iostream>
#include <fstream>
#include<iomanip>
using namespace std;
int inserirdados();
int lerdados();
int procurar();
int sair();
int main ()
{
int escolha;
cout<<" \n";
cout<<"1)inserir dados \n";
cout<<"2)ler dados \n";
cout<<"3)procurar \n";
cout<<" \n";
cout<<"0)sair \n";

cin>>escolha;
switch (escolha)
{
case 1:
	inserirdados();
	break;
case 2:
	lerdados();
	break;
case 3:
	procurar();
	break;

case 0:
	system("exit 1");
}
return 0;
}
int inserirdados()
{

char nome[200];
char mail[200];
int nota,contacto,n;
fstream listar ("test.txt", ios::app);
cout<<"nome\n";
cin>>nome;
cout<<"numero\n";
cin>>n;
cout<<"nota de bp\n";
cin>>nota;
cout<<"mail\n";
cin>>mail;
cout<<"contacto\n";
cin>>contacto;
listar<<nome<<setw(28);
listar<<n<<setw(5);
listar<<nota<<setw(5);
listar<<mail<<setw(28);
listar<<contacto<<endl;
system("pause");
main();
return 0;
}
int lerdados()
{
char nome[200];
char mail[200];
int nota,contacto,n;
ifstream ler("test.txt");
do
{
	ler>>nome>>n>>nota>>mail>>contacto;
	cout<<left<<setw(28)<<nome;
	cout<<left<<setw(5)<<n;
	cout<<left<<setw(5)<<nota;
	cout<<left<<setw(28)<<mail;
	cout<<left<<contacto<<endl;
}while(!ler.eof());
return 0;
}

int procurar()
{
int num;
char nome[200];
char mail[200];
int nota,contacto,n;
ifstream ler("test.txt");
cout<<"numero a pesquisar";
cin>>num;
do
{
	ler>>nome>>n>>nota>>mail>>contacto;
	if(num==n)
	{
		cout<<left<<setw(28)<<nome;
		cout<<left<<setw(5)<<n;
		cout<<left<<setw(5)<<nota;
		cout<<left<<setw(28)<<mail;
		cout<<left<<contacto<<endl;
	}
}while(!ler.eof());
return 0;
}

Agradeço ajuda :S

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Nunca deves chamar a função main no código.

Em vez de system("exit 1"); (que certamente não faz o que pretendes), utiliza return 1; .

Coloca um while (true) { ... } a englobar todo o conteúdo da função main, à excepção da primeira e última instruções. Com isto podes remover a chamada a main na função inserirdados.

Também devias testar se o ficheiro ficou mesmo aberto ou não, sempre que abras um,.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora