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

Sign in to follow this  
tino20

inserir|ler|pesquizar

Recommended Posts

tino20

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

Share this post


Link to post
Share on other sites
TheDark

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,.


Desaparecido.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.