Shredder 0 Denunciar post Postado Março 20, 2010 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
VictorCacciari 42 Denunciar post Postado Março 20, 2010 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
Shredder 0 Denunciar post Postado Março 21, 2010 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
_Isis_ 202 Denunciar post Postado Março 23, 2010 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
Shredder 0 Denunciar post Postado Abril 5, 2010 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
_Isis_ 202 Denunciar post Postado Abril 5, 2010 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
Shredder 0 Denunciar post Postado Abril 6, 2010 Ta um pouco avançado, mas entendi ^^ e tb nao tinha reparado qm repetir o codigo agradeço o esclarecimento vlwsss Compartilhar este post Link para o post Compartilhar em outros sites