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

ajuda com switch na calculadora


Arthuro_Araujo

Pergunta

Bom dia

fiz uma calculadora, esta funcionando certim mas não do jeito que eu quero, podem me dar umas dicas? escrevi em comentarios minhas duvidas. Vou postar abaixo o codigo:

#include <stdio.h>

#include <stdlib.h>

int main()

{

float x, y, z;

short int operacao;

char sim_nao;

printf("\t\tCalculadora do Arthuro\n\n");

/*Acho que ficaria melhor se desse pra escolher a opcao de calculo antes de digitar os numeros, TEM COMO? COMO SE FAZ?*/

printf("Digite o primeiro numero:");

scanf(" %f", &x);

printf("Digite o segundo numero:");

scanf(" %f", &y);

/*Essa parte de escolha de operacao passaria pra cima*/

printf("Escolha a operacao que deseja:\n");

printf("(1)\tSoma\n");

printf("(2)\tSubtracao\n");

printf("(3)\tMultiplicacao\n");

printf("(4)\tDivisao\n");

scanf("%d", &operacao);

switch(operacao){

case 1:

printf("\nA Soma e: %.2f", z=x+y);

break;

case 2:

printf("\nA Subtracao e: %.2f", z=x-y);

break;

case 3:

printf("\nA Multiplicacao e: %.2f", z=x*y);

break;

case 4:

printf("\nA Divisao e: %.2f\n", z=x/y);

break;

default:

printf("Essa opcao não existe, favor escolher uma opcao valida!\n");

break;} /*Aqui eu queria fazer com que o usuario

tivesse que escolher entre as opcoes denovo*/

printf("\nVoce deseja realizar outro calculo\?");

printf("\n(s) - SIM\n(n) - não\n");

scanf(" %s", &sim_nao);

switch(sim_nao){

case 's':

printf("\nTecle <ENTER> para reiniciar a calculadora...\n");

system("pause"); /*Tem como limpar a tela e reiniciar a calculadora so teclando ENTER sem passar pela mensagem "PRESSIONE QUALQUER TECLA..."?*/

system("cls");

main();

break;

case 'n':

system("cls");

exit(0);

break;

default:

printf("\nFavor escolher SIM(s) ou não(n)\n");} /*Aqui eu queria fazer com que o usuario

tivesse que escolher entre as opcoes denovo*/

return 0;

}

Desde já agradeco =D

Editado por Arthuro_Araujo
Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Com o tratamento que gostaria, seria isto?

#include <stdio.h>
#include <locale.h>
#include <conio.h>
#include <windows.h>
#include <stdlib.h>

float docalc(float a, float b, int op); //função para calcular :D

main(void){
    
    setlocale(LC_ALL, "portuguese");
    char resp;
    
    do{
        int erro; //variável de controle
        int opc;
        
        do{
            
            erro = 0; opc = 0;
            
            system("CLS");
            printf("\tCALCULADORA DO ARTHURO\n");
            printf("Escolha qual operação gostaria de realizar:\n");
            printf("(1)Adição\n(2)Subtração\n(3)Multiplicação\n(4)Divisão\n");
            scanf("%i", &opc);
            
            if((opc < 1) || (opc > 4)){
                
                erro++;
                system("CLS");
                printf("DIGITE UMA OPÇÃO VÁLIDA!");
                Sleep(2000);
            }
        
        }while (erro != 0);
            
        float x = 0, y = 0;
        printf("\nDigite o primeiro número: "); scanf("%f", &x);
        printf("Digite o segundo número: ");  scanf("%f", &y);
        
        printf("RESULTADO: %.0f\n", docalc(x, y, opc));
        scanf("%*c");
        
        printf("\n\n\nPRESSIONE ENTER PARA REALIZAR OUTRA OPERAÇÃO ou\nQUALQUER TECLA PARA FINALIZAR O PROGRAMA\n");
        resp = getche();
        
    }while(resp == '\r'); // \r = enter
    
}

float docalc(float a, float b, int op){
    
    switch(op){
        
        case 1:{
            return a + b;
            break;
        }
        
        case 2:{
            return a - b;
            break;
        }
        
        case 3:{
            return a * b;
            break;
        }
        
        case 4:{
            
            if( b == 0){
                
                system("CLS");
                printf("Não é possível efetuar divisão por 0\n");
                Sleep(2000);
                return 0;
                
            }
            else{
                return a / b;
                break;
            }
        }
        
    }
}

Sou iniciante também.

Link para o comentário
Compartilhar em outros sites

  • 0

Amigo, só mude sua declaração de main(void) para int main (void) pois main é uma função integer e deve retornar algum valor.

Att.,

Pedro

Editado por PedroCunha
Link para o comentário
Compartilhar em outros sites

  • 0

Por padrão retorna, no entanto é de bom costume declarar como int main() (caso queira que sua função main aceite parâmetros) ou int main(void) caso contrário.

Att.,

Pedro

¹ E no caso, main() sempre retorna um inteiro porque o compilador tem como default para valores de retorno, uma integer e como nessa caso main não tem um tipo definido, ele retorna uma integer.

Editado por PedroCunha
Link para o comentário
Compartilhar em outros sites

  • 0

Galera preciso de uma ajuda urgente.

Gostaria de saber como coloco a opção sair no codigo da minha calculadora.

segue o codigo abaixo:

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

void main ()
{
    float num1, num2, calc;
    int opcao;

    printf ("\n CALCULADORA \n");
    printf ("\n\n Menu das Operacoes \n\n");
    printf ("\n\n 1-) Adicao \n\n");
    printf ("\n\n 2-) Subtracao \n\n");
    printf ("\n\n 3-) Multiplicacao \n\n");
    printf ("\n\n 4-) Divisao \n\n");
    printf ("\n\n 10-) Digite s para Sair \n\n");
    printf ("\n\n Escolha as opcoes acima conforme sua numeracao: ");
    scanf ("\n %d",&opcao);

    while ( opcao < 1 || opcao > 10)
    {

    printf ("\n\n Menu das Operacoes \n\n");
    printf ("\n\n 1-) Adicao \n\n");
    printf ("\n\n 2-) Subtracao \n\n");
    printf ("\n\n 3-) Multiplicacao \n\n");
    printf ("\n\n 4-) Divisao \n\n");
    printf ("\n\n 10-) Digite s para Sair \n\n");
    printf ("\n\n Escolha as opcoes acima conforme sua numeracao: ");
    scanf ("\n %d",&opcao);

    }


    printf ("\n Digite o primeiro valor:  ");
    scanf ("%f",&num1);
    printf ("\n Digite o segundo valor:  ");
    scanf ("%f",&num2);



    switch(opcao)
    {
        case 1:
            printf ("\n Adicao");
            calc = num1 + num2;
            break;

        case 2:
            printf ("\n Subtracao");
            calc = num1 - num2;
            break;

        case 3:
            printf ("\n Multiplicacao");
            calc = num1 * num2;
            break;

        case 4:
            printf ("\n Divisao");
            calc = num1 / num2;
            break;


            }


printf ("\n O resultado e: %.2f", calc);

getch();

   }

Link para o comentário
Compartilhar em outros sites

  • 0

Hum..eu fiz um programa desse também, mas não parece tão complexo quantos esses ae, e PRIMEIRO PEDE O NUMERO COM A OPERAÇÃO DESEJADA E Só DEPOIS PEDE PRA INFORMAR OS NUMEROS DA OPERAÇÃO:

Fiz assim

1º declarei algumas funções fora de main() são elas:Somar,Subtrair,Multiplicar,Dividir,Raiz;

tenho elas aqui se você quiser:

int somar (int a, int b ){

return(a+b );
}
int subt (int a, int b ){
return(a-b );
}
int mult(int a, int b ){
return(a*b );
}
int divd(int a, int b ){
return(a/b);
}
int raiz(int a) {
return(a*a);
}

2º declarei as seguintes variaveis:

option,result,n1,n2;

3º Fiz o menu aparecer na tela assim como o seu, e la no final botei("Escolha uma opcao")

ex:

printf("\t\t\t\tCalculadora MS-DOS\n");
printf("\t\t\t<1> Somar\n");
printf("\t\t\t<2> Subtrair\n");
printf("\t\t\t<3> Multiplicar\n");
printf("\t\t\t<4> Dividir\n");
printf("\t\t\t<5> Raiz\n");
printf("Escolha um numero: ");
scanf("%d",&option);
3º Fiz um switch de opcao:
onde: case 1{
printf("Informe o primeiro numero")
scanf("%d",&num1)
printf("Informe o segundo numero")
scanf("%d",&num2)
ai aqui eu usava a variavel result assim:
RESULT=SOMAR(A+N)
e depois FAZIA UM PRINTF COM A RESULT QUE AGORA TEM O VALOR DE SOMAR(A,B ) PRINTF("%D", RESULT)
}
Se case2: {
fazia a mesma coisa só que usavaRESULT= SUBT(a,b );
}
Basicamente fazia isso em todos
Espero ter ajudado.
Editado por Pablo Caros
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...