• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Guest tsenart

[C] Ajuda: Calculadora

13 mensagens neste tópico

Olá pessoal...

Alguém me quer ajudar neste código? Compilem e vejam o resultado... Não consigo descobrir o erro...

#include <stdio.h>

main()
{
float result; char tipo; int i,quant;

    printf("Quantos numeros quer operar?");
    scanf("%d",&quant);
    float vector[quant];
    printf("Introduza um numero:  ");
    scanf("%f",&vector[0]);
for(i=1;i<=quant-1;i++)
    {
         printf("Introduza outro numero:  ");scanf("%f",&vector[i]);
    }     	
    printf("Qual destas quatro operacoes quer realizar?\n(*),(/),(+),(-)\n\n"); 
    tipo=getchar();
    result=vector[0];
switch(tipo)
{
         case '+': for(i=1;vector[i]!='\0';i++)
                   {
                         result=result+vector[i]+vector[i+1];
                   }
                   printf("%f\n",result); break;
    
         case '-': for(i=1;vector[i]!='\0';i++)
                   {
                         result=result-vector[i]-vector[i+1];
                   }
                   printf("%f\n",result); break;
         
         case '*': for(i=1;vector[i]!='\0';i++)
                   {
                         result=result*vector[i]*vector[i+1];
                   }
                   printf("%f\n",result); break;
         
         case '/': for(i=1;vector[i]!='\0';i++)
                   {
                         result=result/vector[i]/vector[i+1];
                   }
                   printf("%f\n",result); break;
    }

system("pause");
}      

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Em C não podes declarar variáveis depois de instruções. Aquela declaração do "vector" deve ser feita lá em cima, perto das outras variáveis.

Ah, não, não podes declarar o vector com o tamanho do "quant". Deves-lh atribuir um valor máximo, e declaras com esse valor.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

AH... Eu tinha essa ideia só que pensava que era um pouco diferente... Pensava que não podia declarar vectores ou variaveis nou apontadores depois de serem usados...

Thankz

S@m0t

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É pá... continuo mal. Não posso fazer um scanf para por um valor no vector?

Ajudem-me lá sff. Obrigado.

#include <stdio.h>

main()
{
float vector[50],result; char tipo; int i,quant;

for(i=0;i<=50;i++)
   {
       vector[i]=0;
   }

    printf("Quantos numeros quer operar(maximo 50)?");
    scanf("%d",&quant);
    printf("Introduza um numero:  ");
    scanf("%f",&vector[0]);
for(i=1;i<=quant-1;i++)
    {
         printf("Introduza outro numero:  ");scanf("%f",&vector[i]);
    }     	
    printf("Qual destas quatro operacoes quer realizar?\n(*),(/),(+),(-)\n\n"); 
    tipo=getchar();
    result=vector[0];
switch(tipo)
{
         case '+': for(i=1;vector[i]!='\0';i++)
                   {
                         result=result+vector[i]+vector[i+1];
                   }
                   printf("%f\n",result); break;
    
         case '-': for(i=1;vector[i]!='\0';i++)
                   {
                         result=result-vector[i]-vector[i+1];
                   }
                   printf("%f\n",result); break;
         
         case '*': for(i=1;vector[i]!='\0';i++)
                   {
                         result=result*vector[i]*vector[i+1];
                   }
                   printf("%f\n",result); break;
         
         case '/': for(i=1;vector[i]!='\0';i++)
                   {
                         result=result/vector[i]/vector[i+1];
                   }
                   printf("%f\n",result); break;
    }

system("pause");
}      

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Em C não podes declarar variáveis depois de instruções. Aquela declaração do "vector" deve ser feita lá em cima, perto das outras variáveis.

Ah, não, não podes declarar o vector com o tamanho do "quant". Deves-lh atribuir um valor máximo, e declaras com esse valor.

no c99, as variáveis já podem ser declaradas em qualquer lado.

quanto ao vector com tamanho 'quant' nunca usei isso, mas penso que o gcc também já o permite...


vector[ i ]!='\0'  ????

para que é isto!?!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Em C ANSI não é permitido.

Não podes fazer o for enquanto vector[ i ] != '\0', porque não estás a trabalhar com strings. Faz antes i<quant.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

int main(int argc, char *argv[])
{
    float nume=0,numero=0,result=0;
    char opcao=0;
    
    printf("\n\t\t\tBem vindo ao programa claculadora");
    printf("\n\n\n\n");
    printf("\tIntroduza o Primeiro numero a calcular: ");
    scanf("%f",&nume);
    printf("\n\n\tIntroduza o segundo Numero a calcular: ");
    scanf("%f",&numero);
    printf("\n\nEscolha uma das opcoes de calculo: ");
    scanf("%c",&opcao);
    opcao=getchar();                   
    printf("\n\n\t\tA opcao escolida foi:  %c\n\n",opcao);

                       switch(opcao)
                       {
                                    case '+':
                                         result= nume + numero;
                                         printf("\n\nO Resultado da operacao escolhide e = %0.0f\n",result);
                                         printf("\n\n");
                                         break;
                                    case '*':
                                         result= nume * numero;
                                         printf("\nO Resultado da operacao escolhide e = %0.0f\n",result);
                                         break;
                                    case '/':
                                         result= nume / numero;
                                         printf("\nO Resultado da operacao escolhide e = %0.0f\n",result);
                                         break;
                                         case '-':
                                              result= nume - numero;
                                         printf("\nO Resultado da operacao escolhide e = %0.0f\n",result);
                                         break;
                                         } 
                                         getch();
  system("PAUSE");	
  return 0;
}

Eu não sei para e que declaraste vectores na calculadora!!!

Vê este código que fiz e diz se te ajuda ou não.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado... Mas assim também eu sabia fazer. É que eu não quero limitar a calculadora a operar com dois números. Percebeste agora?

Vejam lá nesta versão.. É que a execução do programa passa o getchar()! Vai logo para o fim a seguir a recebr os dados... Help!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ups.. Esqueci-me do código.

#include <stdio.h>

main()
{
float result; char tipo; int i,quant;

    printf("Quantos numeros quer operar?");
    scanf("%d",&quant); float vector[quant];
    for(i=0;i<=quant;i++)
   {
       vector[i]=0;
   }
    printf("Introduza um numero:  ");
    scanf("%f",&vector[0]);
for(i=1;i<=quant-1;i++)
    {
         printf("Introduza outro numero:  ");scanf("%f",&vector[i]);
    }     	
    printf("Qual destas quatro operacoes quer realizar?\n(*),(/),(+),(-)\n\n"); 
    tipo=getchar();
    result=vector[0];
switch(tipo)
{
         case '+': for(i=1;vector[i]<=quant;i++)
                   {
                         result=result+vector[i]+vector[i+1];
                   }
                   printf("%f\n",result); break;
    
         case '-': for(i=1;vector[i]<=quant;i++)
                   {
                         result=result-vector[i]-vector[i+1];
                   }
                   printf("%f\n",result); break;
         
         case '*': for(i=1;vector[i]<=quant;i++)
                   {
                         result=result*vector[i]*vector[i+1];
                   }
                   printf("%f\n",result); break;
         
         case '/': for(i=1;vector[i]<=quant;i++)
                   {
                         result=result/vector[i]/vector[i+1];
                   }
                   printf("%f\n",result); break;
    }

system("pause");
}      

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tu no getchar estás a ler um espaço.

Le antes usando scanf("%c",&tipo)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tu no getchar estás a ler um espaço.

Le antes usando scanf("%c",&tipo)

Não não estou a ler um espaço... Estou a associar a resposta dada à variavel tipo.... tipo=getchar(); Sim eu já tinha experimentado o scanf("%c",&tipo)... Não altera nada.

Obrigado por tentares.Peace

Any help?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estás sim a ler o enter.

lê como eu te disse. scanf(" %c",&tipo);

Com um espaço antes do %c

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ah.. Pois é. tens razão. O enter entra como o valor a por na variavel pois fica no buffer. Já me tinha esquecido disso. Thankz

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora