Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá boa tarde.
Assim como em http://forum.imasters.com.br/index.php?showtopic=339826 continuando vou postar os arquivos atuais envolvidos no projeto e saidas de erro do compilador cygwin:
app13.cpp
#include<iostream> //Entrada e saida de stream
#include "fila.cpp" //Métodos Manipuladores de Fila
#include "tfila.cpp" //Estrututa de dados da fila
using namespace std;
// Variavel GLOBAL
TFila *fila;
float media(TFila p){
float media = 0;
if(!estaVazio(p)){
for(int i = p->primeiro; i < p->ultimo; i++){
media += p->mes[i];
}
media /= p->ultimo;
return media;
}
cout<<"\n[ERRO]: A lista está vazia!" <<endl;
return NULL;
}
float toKelvin(float celsius){return celsius + 273.15;} int opcao;
float valor;
cout<<"\nEscolha:"<<endl;
cout<<"\t1) Retornar o topo da fila." <<endl;
cout<<"\t2) Retornar o ultimo da fila." <<endl;
cout<<"\t3) Inserir elemento." <<endl;
cout<<"\t4) Excluir elemento." <<endl;
cout<<"\t5) Verificar se existem elementos na fila." <<endl;
cout<<"\t6) Verificar se cabem mais elementos na fila." <<endl;
cout<<"\t7) Listar elementos da fila." <<endl;
cout<<"\t8) Calcular Medias" <<endl;
cout<<"\t0) Sair do aplicativo." <<endl;
cin>>opcao;
switch(opcao){
case 0:
return false;
break;
case 1:
cout <<(float)retornaTopo(fila) <<endl;
break;
case 2:
cout <<(float)retornaUltimo(fila) <<endl;
break;
case 3:
cout<<"Entre com o valor de deseja inserir:"; cin>>valor;
inserir(valor, fila);
cout<<endl;
break;
case 4:
cout<<"Valor " <<(float)excluir(fila) <<" excluido da fila." <<endl;
break;
case 5:
if(estaVazio){cout<<"Nao existem elemntos na fila."<<endl;}
else{cout<<"Existem elementos na fila"<<endl;}
break;
case 6:
if(estaCheio){cout<<"Lista cheia."<<endl;}
else{cout<<"Lista nao cheia"<<endl;}
break;
case 7:
listar();
break;
case 8:
cout<<"Media em CELSIUS: "<<(float)media(fila) <<endl;
cout<<"Media em Kelvins: "<<toKelvin((float)media(fila)) <<endl;
break;
default:
cout<<"Opcao invalida, tente uma de acordo com o menu." <<endl;
break;
}
return true;
} return 0;
}#include <stdio.h>
// Aqui para manter a abstração apenas estou colocando os métodos de manipulação
// de filas.
// Pesquise algo sobre Padrões de Projetos (Design Pattarns).
bool estaCheio(TFila *p){(p->ultimo == (p->limite-1)) ? return true : return false;}
bool estaVazio(TFila *p){(p->ultimo == p->primeiro) ? return true : return false;}
/**
* Retornar o Topo da fila (primairo elemento)
@param TFila p
* @return float elemento.
*/
float retornaTopo(TFila p){
// Isso só é possível pois assumimos que a TFila segue essa assinatura
// Versão com operador ternário
/**
*<code>*/
(!estaVazio(p)) ? return p->mes[p->primeiro] : return NULL;
/**</code>
*/
/// Verssão com IF
/**
*<code>
*if(!eVazio){
* return p->primeiro;
*}
*return NULL;
*</code>
*/
}
float retornaUltimo(TFila p){
// Veja retorna topo
(!estaVazio(p)) ? return p->mes[p->ultimo] : return NULL;
/**
* Vesão com IF
*<code>
*if(!eVazio){return p->ultimo;}
*return NULL;
*</code>
*/
}
void inserir(float elemento, TFila *p){
if(!estaCheio(p)){
p->mes[p->ultimo++] = (float)elemento;
//DEBUG
printf("\n[DEBUG MESSAGE]\tInserido Array[%d] = %f",p->ultimo, elemento);
}
else{printf("Erro! A Lista já está cheia, elemine alguns elementos.");}
}
float excluir(TFila p){
if(!estaVazio(p)){
float elemento = p->mes[p->primeiro];
// Vou deslocar uma-a-um os elementos da fila ou seja é a frase:
// "A fila anda."
for(int i = p->primeiro; i < p->ultimo; i++){p->mes[i] = p->mes[i+1];}
p->ultimo--;
return elemento;
}
}
void listar(TFila *p){
if(!estaVazio(p)){for(int i = p->primeiro; i < p->ultimo; i++){printf("\n%f",p->mes[i]);}}
else{printf("[ERRO] Lista vazia.");}
}
tfila.cpp
typedef struct Fila{
static const int limite = 12;
int primeiro;
int ultimo;
float mes[limite];
}TFila;>
C:\Documents and Settings\Administrator\My Documents\NetBeansProjects\Exemplos>g++ app13.cpp -o app13.exe
In file included from app13.cpp:2:
fila.cpp:8: error: `TFila' was not declared in this scope
fila.cpp:8: error: `p' was not declared in this scope
fila.cpp:8: error: expected ,' or ;' before '{' token
fila.cpp:9: error: `TFila' was not declared in this scope
fila.cpp:9: error: `p' was not declared in this scope
fila.cpp:9: error: expected ,' or ;' before '{' token
fila.cpp:15: error: `TFila' was not declared in this scope
fila.cpp:15: error: `p' was not declared in this scope
fila.cpp:15: error: expected ,' or ;' before '{' token
fila.cpp:33: error: `TFila' was not declared in this scope
fila.cpp:33: error: `p' was not declared in this scope
fila.cpp:33: error: expected ,' or ;' before '{' token
fila.cpp:45: error: `TFila' has not been declared
fila.cpp:45: error: ISO C++ forbids declaration of `p' with no type
fila.cpp: In function `void inserir(float, int*)':
fila.cpp:46: error: `estaCheio' cannot be used as a function
fila.cpp:47: error: request for member mes' in *p', which is of non-class type `int'
fila.cpp:47: error: request for member ultimo' in *p', which is of non-class type `int'
fila.cpp:50: error: request for member ultimo' in *p', which is of non-class type `int'
fila.cpp: At global scope:
fila.cpp:54: error: `TFila' was not declared in this scope
fila.cpp:54: error: `p' was not declared in this scope
fila.cpp:54: error: expected ,' or ;' before '{' token
fila.cpp:65: error: variable or field `listar' declared void
fila.cpp:65: error: `TFila' was not declared in this scope
fila.cpp:65: error: `p' was not declared in this scope
fila.cpp:65: error: expected ,' or ;' before '{' token
In file included from app13.cpp:2:
fila.cpp:68:2: warning: no newline at end of file
In file included from app13.cpp:3:
tfila.cpp:6:8: warning: no newline at end of file
app13.cpp: In function `float media(TFila)':
app13.cpp:10: error: `estaVazio' cannot be used as a function
app13.cpp:15: error: cannot convert float' to float*' in return
app13.cpp: In function `bool menu()':
app13.cpp:41: error: `retornaTopo' cannot be used as a function
app13.cpp:44: error: `retornaUltimo' cannot be used as a function
app13.cpp:48: error: cannot convert TFila' to int' for argument 2' to void inserir(float, int*)'
app13.cpp:52: error: `excluir' cannot be used as a function
app13.cpp:63: error: `listar' cannot be used as a function
app13.cpp:66: error: pointer value used where a floating point value was expected
app13.cpp:67: error: pointer value used where a floating point value was expected
app13.cpp:79:2: warning: no newline at end of file
Bem creio que o maior problema seja o reconehcimento de TIPOS entre os arquivos envolvidos.
Carregando comentários...