Ir para conteúdo
Fórum Script Brasil
  • 0

Arquivos C++


lucas_marciano

Pergunta

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

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...