Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Shredder

[Resolvido] Calculadora em C

Recommended Posts

galera beleza???

preciso da ajuda de vcs... rs

 

preciso que me ajudem com a programação da minha calculadora, pois tenho que usar argc e argv, foram strcmp e sscanf tb e não tenho ideia de como fazer..

 

me ajudem por favor...

 

eu consegui fazer um programa que q lê um argumento...mas o resto esta dificil

 

#include <stdio.h>

int main (int argc, char **argv)
{
        int num;
        if (argc != 2)
        {
                printf("Sintaxe:\n\t %s numero \n\n", argv[0]);
                return(-1);
        }
        if ((argv[1][0] >= "0") && (argv[1][0] <= "9"))
        {
                sscanf(argv[1],"%d", &num);
                printf("%d\n", num*2);
                return 0;
        }
        printf("Sintaxe:\n\t %s numero\n\n", argv[0]);
        return (-2);
}

agradeço desde já!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aspas duplas em C são usadas para representar strings...

Aspas simples são usadas para representar chars.

 

O que, precisamente, você quer fazer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

desculpa a demora para responder.

 

preciso que faça a leitura de 3 argumentos no 3[numero1] +[sinal] 6[numero2] e resolva a conta...

no caso estou fazendo no linux[ubuntu] ao compilar tem que ser assim

./calc [arg1]nº1 +[arg2] 2[arg3] e mostrar o resultando

 

me ajudaaaa

Compartilhar este post


Link para o post
Compartilhar em outros sites

Os argumentos vão ser lidos como strings. P/ converter os números, use strtol.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depois de muito estudar...

 

#include <stdio.h>
int main (int argc, char**argv)
{


      float total;
      int p,n1,n2;
          
          while (p!=6){        
          printf ("escolha e digite a opcao de operacao:\n");
          printf ("(1) + = calcule a soma\n");
          printf ("(2) - = calcule a subtracao\n");
          printf ("(3) x = calcule a multiplicacao\n");
          printf ("(4) / = calcule a divisao\n");
          printf ("(5) %% = calcule a porcentagem\n");
          printf ("(6) sair\n");
          scanf("%d",&p);
          switch (p)
          {
                  case 1: if (argc!=3)
                          printf ("Sintaxe:%s n1 n2\n", argv[0]);
                              else
                              {
                              n1=atoi(argv[1]);
                              n2=atoi(argv[2]);
                              total=n1+n2;
                              printf("%f\n",total);
                              break;
			      }

                  case 2: if (argc!=3)
                          printf ("Sintaxe:%s n1 n2\n", argv[0]);
                              else
                              {
                              n1=atoi(argv[1]);
                              n2=atoi(argv[2]);
                              total=n1-n2;
                              printf("%f\n",total);
                              break;
			      }

                  case 3: if (argc!=3)
                          printf ("Sintaxe:%s n1 n2\n", argv[0]);
                              else
                              {
                              n1=atoi(argv[1]);
                              n2=atoi(argv[2]);
                              total=n1*n2;
                              printf("%f\n",total);
                              break;
			      }

                  case 4: if (argc!=3)
                          printf ("Sintaxe:%s n1 n2\n", argv[0]);
                              else
                              {
                              n1=atoi(argv[1]);
                              n2=atoi(argv[2]);
                              total=n1/n2;
                              printf("%f\n",total);
                              break;
			      }

                  case 5: if (argc!=3)
                          printf ("Sintaxe:%s n1 n2\n", argv[0]);
                              else
                              {
                              n1=atoi(argv[1]);
                              n2=atoi(argv[2]);
                              total=n1%n2;
                              printf("%f\n",total);
                              break;
			      }

                  case 6: printf ("saindo...\n\n");
                          
                  default: printf ("opcao invalido\n");
                  break;
                  }
         }
}

ENJOY!

Compartilhar este post


Link para o post
Compartilhar em outros sites

E ainda existem erros e código duplicado.

 

 

if (argc!=3)
printf ("Sintaxe:%s n1 n2\n", argv[0]);
else {
n1=atoi(argv[1]);
n2=atoi(argv[2]);
total=n1+n2;
printf("%f\n",total);
break;
}

 

Se argc != 3 todos os cases serão executados porque o break está dentro do else.

 

A execução do while não é garantida, porque você não atribuiu um valor p/ a variável.

 

Você também não está tratando a divisão por zero.

 

'%' não realiza cálculo de porcentagem, ele retorna o resto da divisão inteira de dois números.

 

Evite números mágicos espalhados pelo código.

 

Além disso, você repete o mesmo código trocentas vezes. Isso não é algo muito inteligente de se fazer.

 

#include <stdio.h>
#include <stdlib.h>
#define SOMA 1
#define SUBTRACAO 2
#define MULTIPLICACAO 3
#define DIVISAO 4
#define PORCENTAGEM 5
#define SAIR 6

int main (int argc, char**argv) {

if (argc != 3) {
	printf("Uso: %s n1 n2\n", argv[0]);
return 1;
}

int opcao, n1, n2;

do { 

	printf ("escolha e digite a opcao de operacao:\n");
	printf ("(%d) + = calcule a soma\n", SOMA);
	printf ("(%d) - = calcule a subtracao\n", SUBTRACAO);
	 printf ("(%d) x = calcule a multiplicacao\n",MULTIPLICACAO);
	 printf ("(%d) / = calcule a divisao\n", DIVISAO);
	 printf ("(%d) %% = calcule a porcentagem\n", PORCENTAGEM);
	 printf ("(%d) sair\n", SAIR);
	 scanf("%d",&opcao);

	if (opcao >= SOMA && opcao <= SAIR) {
	 n1 = atoi(argv[1]);
		n2 = atoi(argv[2]);

	 switch(opcao) {
			case SOMA:
	 		 printf("%d\n", n1+n2);
	 	 	break;
			case SUBTRACAO:
	 		 printf("%d\n", n1-n2);
	 	 	break;
			case MULTIPLICACAO:
	 		 printf("%d\n", n1*n2);
	 	 	break;
			case DIVISAO:
	 		 if (n2 == 0) {
	 	 		puts("Erro: Divisão por zero.");
					} else {
	 	 		printf("%d\n", n1/n2);
					}
	 	 	break;
			case PORCENTAGEM:
	 		 printf("%.2f\n", (float)n1 * (float)n2/100.0); 
		}
	} else {
		puts("Opçao inválida.");
	 }
} while (opcao != SAIR);

return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.