Program with 3 files

Asked

Viewed 55 times

-1

I made a code in c++ that works if it’s all inside the main.cpp. When I create other files, like a header it from the indefinite reference error. I have done everything and only managed to make it work with a single source file. Can you help me ? Also the bool type is undefined. Here it works, because it has everything in the same file. that was my main file.

    #include<iostream>
    #include "DeclararMetodo.h"

    using namespace std;



    int main()
    {


        menuDeOpcoes();


        return 0;
    }

o arquivo com as funcoes declaradas


    #define TAM 4

    struct lista{
        int ult;
        int valor[TAM];
    };

    void inserirInicio (lista *lis,int n);

    void removerInicio (lista *lis,int n);

    void removePosicao(lista *lis, int pos);

    void removeValor(lista *lis, int valor);

    void inverte(lista *lis);

    int pesqseq(lista *lis, int n);

    int pesqbin(lista *lis, int n);

    void ordenaAsc (lista *lis);

    void ordenaDesc (lista *lis);

    void consultalista(lista *lis);

    void removeFinal(lista *lis);


    int consultaNumElelista (lista *lis);

    int consultaUltimo (lista *lis);

    void insereFinal(lista *lis, int valorIns);

    void crialista(lista *lis);

    void menuDeOpcoes ();



    bool listaVazia(lista *lis){
       if(lis->ult == -1){
          return true;
       }
       return false;
    };

    bool listaCheia(lista *lis){
         if(lis->ult == TAM -1){
           return true;
         }
         return false;
    };




aqui as funcoes sendo escritas 


void insereInicio(lista *lis,int n){

    if (listaCheia(lis)){
        cout << "Lista cheia" << endl;
    }else{
        lis->ult++;
        for (int i=lis->ult;i>0;i--){
            lis->valor[i]=lis->valor[i-1];
        }
    }
    lis->valor[0]=n;

}


int consultaNumElelista (lista *lis){
    if (listaVazia(lis)==false){
        cout << "Lista nao criada" <<endl;

    }else{
   cout << lis->ult+1;
    }
}
int consultaUltimo (lista *lis){
    return lis->valor[lis->ult];
}

//primeiro método a ser executado, cria a lista com o valor -1
void criaLista(lista *lis){
     lis->ult = -1;
     cout << "Lista criada" <<endl;
}


//verifica se a lista está vazia
bool listaVazia(lista *lis){
   if(lis->ult == -1){
      return true;
   }
   return false;
}

//verifica se a lista está cheia
bool listaCheia(lista *lis){
     if(lis->ult == TAM -1){
       return true;
     }
     return false;
}

//insere o elemento passado por parâmetro no final da lista
void insereFinal(lista *lis, int valorIns){
     if(listaCheia(lis)){
       cout << "Nao é possivel inserir no final pois a lista esta cheia." << endl;
       return;
     }
     //incrementa 1 à variável que mantém o valor do último elemento
     lis->ult++;
     //insere o elemento no final da lista
     lis->valor[ lis->ult ] = valorIns;
}

//remove um elemento do final
void removeFinal(lista *lis){
    if(listaVazia(lis)){
       cout << "Nao é possivel remover um elemento do final pois a lista esta vazia." << endl;
       return;
    }

   //apenas decrementando 1 ao último elemento não será mais possível acessar esta posição
   lis->ult--;
}


//consulta todos os elemento da lista, apresentando os valores inseridos
void consultaLista(lista *lis){
    if(listaVazia(lis)){
       cout << "Nao é possivel consultar pois a lista esta vazia." << endl;
       return;
    }

    //percorre todos os elementos da lista a partir do início apresentando os valores inseridos
    for(int i = 0; i <= lis->ult; i++){
       cout << "Valor [" << i << "]: " << lis->valor[i] << endl;
    }
}

//remove um elemento de uma determinada posição
void menuDeOpcoes(){

   lista lis;
   int valor;
   char cod;
   int codigo = -1;
   while(codigo != 0){


        cout << "--- INFORME UMA DAS OPCOES ABAIXO ---" << endl;
        cout << "a - remover elemento a partir de um numero" <<endl;
        cout << "b - invereter" <<endl;
        cout << "c - Inverter lista" << endl;
        cout << "1 - Criar" << endl;
        cout << "2 - Inserir pelo final" << endl;
        cout << "3 - Remover pelo final" << endl;
        cout << "4 - Consultar todos" << endl;
        cout << "5 - Consultar quantos elementos foram inseridos"<<endl;
        cout << "6 - Consultar o ultimo elemento inserido na lista"<<endl;
        cout << "7 - Inserir pelo inicio "<<endl;
        cout << "8 - Remover pelo inicio "<<endl;
        cout << "9 - Remover pela posicao "<<endl;

        cout << "0 - Sair" << endl;

       cout << "Informe a opcao: ";
       cin >> codigo;
       switch(codigo){
       case 'a':
        cout << "Insira um numero: ";
        cin >> valor;
        removeValor(&lis,valor);
        break;

       case 11:
        cout << "Invertendo a lista ... ";
        system ("clear");
        cout <<"Lista invertida" << endl;
        inverte(&lis);

          case 0:
               break;
          case 1:
               criaLista(&lis);
               break;
          case 2:

               cout << "Informe o valor a ser inserido: ";
               cin >> valor;
               insereFinal(&lis,valor);system ("clear");
               break;
          case 3:

               removeFinal(&lis);system ("clear");
               break;
          case 4:

               consultaLista(&lis);
               break;
          case 5:
                consultaNumElelista(&lis);
                break;
            case 6: consultaLista(&lis);
            break;
        case 7:
                cout << "Insira o valor ";
                cin >> valor;
                insereInicio(&lis,valor);
                break;
        case 8:
            removeInicio(&lis);
            break;
        case 9:
            cout << "Insira a posicao que deseja apagar ";
            cin >> valor;

            removePosicao(&lis,valor);

          default:
                  cout << "A opcao escolhida e invalida" << endl;
       }

   }//end while

If you can give tips on how to separate files, like which functions should be in the same file as the other, which ones I would appreciate.

1 answer

0

Maybe it’s C99, add:

#include <stdbool.h>

A hint if the compiler do not support C99 as per these responses, create a file with this name myboolean.h:

#ifndef MYBOOLEAN_H
#define MYBOOLEAN_H

#define false 0
#define true 1
typedef int bool; // or #define bool int

#endif
  • When everything is in a file only until the bool works, my doubt is because when I divide in different files instead of just hm main not right. I’ll try that lib when I get home

  • Instead of photos put the code in the question, so I’ll be able to understand where you went wrong @Abriel, I’m waiting =)

  • I pulled the photos and posted the code

Browser other questions tagged

You are not signed in. Login or sign up in order to post.