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

(Resolvido) Duvida com ponteiros em função


Giza

Pergunta

Boa noite!

Estou no primeiro semestre de Sistemas informação, e estamos no ultimo assunto, ponteiros, matrizes e vetores. Não estou conseguindo achar o erro para as seguintes msgs:

54 C:\Dev-Cpp\programa caixa eletronico.c conflicting types for 'taxa'

30 C:\Dev-Cpp\programa caixa eletronico.c previous implicit declaration of 'taxa' was here

66 C:\Dev-Cpp\programa caixa eletronico.c conflicting types for 'saldomov'

44 C:\Dev-Cpp\programa caixa eletronico.c previous implicit declaration of 'saldomov' was here

Agradeço muito.

Codigo:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <ctype.h>

main()
{
 float sminimo, codigo, saldo, conta, valor, *pts, *ptsm, *ptv, *ptcd;
 int opccao;
do{
   puts("**CAIXA ELETRONICO**");
   puts("1-INFORMAR DADOS");
   puts("2-MOVIMENTAR CONTA");
   puts("3-SAIR");
   scanf("%f", &opccao);
   switch(opccao){
         case '1': puts("CONTA");
                   scanf("%f", &conta);

                   puts("SALDO");
                   scanf("%f", &saldo);
                   pts = &saldo;
                   puts("SALDO MINIMO");
                   scanf("%f", &sminimo);
                   ptsm = &sminimo;
                   printf("TAXA DE SERVICO: R$ %.2f \n", taxa(pts, ptsm));
                   break;

         case '2': puts("CONTA");
                   scanf("%f", &conta);
                   puts("VALOR");
                   scanf("%f", &valor);
                   ptv = &valor;              
                   puts("TIPO <1-DEPOSITO / 2-RETIRADA>");
                   scanf("%f", &codigo);
                   ptcd = &codigo;               
                   printf("SALDO: R$ %.2f\n", saldomov(ptv, ptcd));
                   break;
         default: puts("Opcao invalida");
                  continue;
}
}while(toupper(opccao!= 3));

  system("PAUSE");    
}
float taxa(float *pts, float *ptsm){
float result, aux=0;

aux=*pts/2;
if(aux<*ptsm)
  result=aux*0.05;
  else
      result=0;
return(result);
}

float saldomov(float *ptv, float *ptcd){
float result=0;

if(*ptcd==1)
   result=result+ *ptv;
if(*ptcd==2)
   result=result-(*ptv);

return(result);
}

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Olá.

eu achei alguns erros no seu programa. depois dos erros resolvidos, compilei no gcc-linux e funcionou.

bom, os erros são:

Se você quizer escrever as funções depois da main, e chama-las pela main. você deve declarar elas antes de tudo.

as declarações delas ficam:

float taxa(float *pts, float *ptsm);

float saldomov(float *ptv, float *ptcd);

e deve ser colocada antes da main.

Isso vai fazer o programa compilar. entretanto você está tratando os casos do switch como char quando coloca " case '1': ".

o certo para o programa identificar o número 1 e 2 é tratar como inteiro. colocando: "case 1: "

Link para o comentário
Compartilhar em outros sites

  • 0

Oi,

Muito obrigada, vou tentar prestar mais atenção a esses detales fundamentais.

Realmente agora está funcionando, à apenas um erro de calculo, mais isso vou consertar, estava achando que os ponteiros estavam declarados errado. :blush:

Agradeço novamente.

Link para o comentário
Compartilhar em outros sites

  • 0

Apenas um comentário adicional sobre declaração de funções. Qualquer função pode estar localizada em qualquer ponto do fonte. Não há problema algum nisso. O único cuidado a tomar é que o compilador, ao "varrer" o fonte e ao encontrar uma chamada de função, já deverá ter à sua disposição (tabela interna) o protótipo desta. Logo, não adianta muito colocar main() na última posição do fonte, se uma função A, acima, chamar uma outra função B, que está abaixo. Se o compilador ainda não sabe da existência de B, é erro na certa. Por isso, pra evitar esse tipo de problema, o procedimento mais comum é destacar os protótipos de todas as funções utilizadas logo no início do fonte, com exceção de main(), claro. Isso resolve sempre. Mas em projetos pequenos. Em projetos grandes, o ideal é inserir esses protótipos num arquivo header e informar esse arquivo num #include no topo do fonte. Lembrete: um header pode ser informado em qualquer lugar do fonte, e há ocasiões em que o topo do fonte não é o ideal, principalmente quando existem comandos de um segundo header anulam comandos o primeiro. Depende da situação, claro. Isso se explica porque o header nada mais é que uma inclusão de informações. Ou seja, onde há um #include <file> o processador encara da mesmíssima forma como se você tivesse digitado todo o conteúdo do header naquele ponto. Aliás, e finalizando: a extensão .H (ou .HPP em C++), que é a mais comumente utilizada, sequer é exigida. Tanto faz. Pode-se usar até (num exemplo exagerado e não aconselhável) TXT, EXE, COM, etc. O que importa é o conteúdo.

Link para o comentário
Compartilhar em outros sites

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,3k
×
×
  • Criar Novo...