To com uma duvida que, creio eu, muita gente tem. Gostaria de saber como abrir um arquivo, eu tenho que colocar o endereço dele ou simplesmente digitar o nome ?? :unsure: meu codigo é esse : ------------------------------------------------------------------------------------------------------------------------------------------------------- #include<iostream>
#include<string.h>
#include<stdio.h>
#include<conio.h>
#include <fstream>
#include <string>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
typedef struct arvore Arv;
struct arvore{
char info[30];
char net[30];
char telefone[15];
Arv * esq;
Arv * dir;
};
Arv * criaArvore(void){
return NULL;
}
void insereArvore(Arv ** raiz, char nome[], char tel[],char email[]){
if (*raiz == NULL){
*raiz = new Arv;
strcpy((*raiz)->info, nome);
strcpy((*raiz)->telefone, tel);
strcpy((*raiz)->net, email);
(*raiz)->esq = NULL;
(*raiz)->dir = NULL;
}
else {
if(strcmp(nome,(*raiz)->info) < 0){
insereArvore(&(*raiz)->esq,nome,tel,email);
}
else{
insereArvore(&(*raiz)->dir,nome,tel,email);
}
}
}
void exibeArvorePreOrdem(Arv * raiz){
if(raiz != NULL){
cout << raiz->info << endl;
exibeArvorePreOrdem(raiz->esq);
exibeArvorePreOrdem(raiz->dir);
}
}
void exibeArvoreEmOrdem(Arv * raiz){
if(raiz != NULL){
exibeArvoreEmOrdem(raiz->esq);
cout << raiz->info << endl;
exibeArvoreEmOrdem(raiz->dir);
}
}
void exibeArvorePosOrdem(Arv * raiz){
if(raiz != NULL){
exibeArvorePosOrdem(raiz->esq);
exibeArvorePosOrdem(raiz->dir);
cout << raiz->info << endl;
}
}
void limparArvore(Arv** raiz){
if(*raiz != NULL){
limparArvore(&(*raiz)->esq);
limparArvore(&(*raiz)->dir);
delete(*raiz);
}
*raiz = NULL;
}
Arv* procurarArvore(Arv * raiz,char info[]){
if(raiz != NULL){
if(strcmp(raiz->info,info)==0){
return raiz;
}
else{
if(strcmp(raiz->info,info)<0){
procurarArvore(raiz->dir,info);
}
else{
if(strcmp(raiz->info,info)>0){
procurarArvore(raiz->esq,info);
}
}
return raiz;
}
}else
return NULL;
}
int alturaArvore(Arv* raiz){
if (raiz == NULL)
return 0;
// altura de árvore vazia é 0
else {
int he = alturaArvore(raiz->esq);
int hd = alturaArvore(raiz->dir);
if (he < hd){
return hd + 1;
}
else{
return he + 1;
}
}
}
void remover(Arv** raiz,char v[]){
if(*raiz != NULL){
if(strcmp((*raiz)->info,v) < 0){
remover(&(*raiz)->esq,v);
}
else if(strcmp((*raiz)->info,v) > 0){
remover(&(*raiz)->dir,v);
}
else{
if((*raiz)->esq == NULL && (*raiz)->dir == NULL){
delete (*raiz);
*raiz = NULL;
}
else if((*raiz)->esq == NULL || (*raiz)->dir == NULL){
Arv* aux = *raiz;
if((*raiz)->esq == NULL){
*raiz = (*raiz)->dir;
delete(aux);
}
else{
*raiz = (*raiz)->esq;
delete(aux);
}
}
else
{
Arv* aux = (*raiz)->esq;
while(aux->dir != NULL){
aux = aux->dir;
}
char aux2[30];
strcpy(aux2, aux->info);
strcpy(aux->info,(*raiz)->info);
strcpy((*raiz)->info, aux2);
remover(&(*raiz)->esq,v);
}
}
}
}
int main(){
ofstream myfile ("Agenda.txt");
Arv * arv;
arv = criaArvore();
int op, alt = 0, cont = 0;
bool sair = false;
do{
if (myfile.is_open()){
cout << "\t_Arvore Binaria_ \n\n" << endl;
cout << "1. Insere na Arvore "<<endl;
cout << "2. Pre-Ordem " << endl;
cout << "3. Em-Ordem " << endl;
cout << "4. Pos-Ordem " << endl;
cout << "5. Liberar Arvore " << endl;
cout << "6. Procurar Elementos " << endl;
cout << "7. Altura da arvore " << endl;
cout << "8. Eliminar um elemento " << endl;
cout << "9. Mostrar arquivo salvo " << endl;
cout << "10. EXIT \n\n" << endl;
cout << "Entre com a opcao: ";
cin >> op;
getchar();
switch(op){
case 1:
{
system("cls");
char nome[30],tel[15],email[30];
cout << ". Digite o nome: " << endl;
gets(nome);
cout << ". Digite o telefone: " << endl;
gets(tel);
cout << ". Digite o e-mail: " << endl;
gets(email);
myfile << ".Nome: ";
myfile << nome << "\n";
myfile << ".Telefone: ";
myfile << tel << "\n";
myfile << ".Email: ";
myfile << email << "\n";
insereArvore(&arv,nome,tel,email);
myfile << "\n------------------------\n";
break;
}
case 2:
system("cls");
cout << "--- Pre-ordem ---" << endl;
exibeArvorePreOrdem(arv);
break;
case 3:
system("cls");
cout << "--- Em-ordem ---" << endl;
exibeArvoreEmOrdem(arv);
break;
case 4:
system("cls");
cout << "--- Pos-ordem ---" << endl;
exibeArvorePosOrdem(arv);
break;
case 5:
system("cls");
if(arv == NULL){
cout << "Arvore vazia "<<endl;
break;
}else
limparArvore(&arv);
cout << "Arvore Limpa "<<endl;
break;
case 6:
{
system("cls");
char elemento[30];
Arv* aux;
cout << "Entre com o elemento a procurar: " << endl;
gets(elemento);
aux = procurarArvore(arv,elemento);
if (aux == NULL){
cout << "Elemento não encontrado." << endl;
}
else{
cout << "Elemento " << elemento << " existe." << endl;
}
break;
}
case 7:
system("cls");
alt = alturaArvore(arv);
if (alt <= 0){
cout << "Arvore Vazia " << endl;
cout << "\n\n";
}
else{
cont = cont + alt;
cout << "Altura da arvore: "<< cont;
}
cout << "\n\n\n";
break;
case 8:
{
system("cls");
char val[30];
cout << "Entre com o elemento a ser eliminado: " << endl;
gets(val);
remover(&arv,val);
break;
}
case 9:
{
ifstream iFile( "Agenda.txt" );
char nome2[ 25 ];
while ( iFile && !iFile.eof() ) {
iFile >> nome2;
cout << "Nome: " << nome2;
}
}
case 10:
system("cls");
sair = true;
break;
default:
system("cls");
cout << "Opcao errada\n\n\n" << endl;
myfile.close();
break;
}
}
else
cout << "Unable to open file";
}while(!sair);
return 0;
} ------------------------------------------------------------------------------------------------------------------------------------------------------- o "case 9" deveria ler o arquivo mas quando entro nele ele simplesmente fecha ....