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

SitoMan

Programa que adiciona e subtrai um numero por outro

22 mensagens neste tópico

Viva!

Estou a tentar fazer um programa, em que o objectivo é:

- Perguntar ao user se quer Adiconar (a) ou Subtrair (s) um numero por outro.

- O user digita "a" para adicionar um numero por outro, e digita "s" para subtrair um numero por outro.

- Fim do programa

Nisto, primeiro fiz um programa que adiciona um numero por outro, e fiz outro programa que subtraia um numero por outro.

Agora estava a tentar compilar esses 2 programas juntos.. Mas não sou capaz...

Vejam o codigo:

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

int main()
{
    /****Declaração de variaveis****/
     int num1,num2;
     char resposta,a,s;
    /****Fim da declaração de variaveis****/    
    /****Introdução ao programa****/
    printf("Bem Vindo ao primeiro teste, para o meu quarto programa.\n");
    printf("O objectivo e escolheres um numero e adiciona-lo por um outro numero.\n");
    printf("Clica \"i\" para comecares o programa.\n");
while (getchar()!='i');
getchar ();
/****Fim da introdução ao programa****/
/****Inicio do programa****/
printf("Pretende Adicionar\(a\) ou subtrair\(s\)?");
if (resposta=='a' || resposta=='s')
/****Inicio da ADIÇÃO****/
printf("Coloque dois numeros inteiros para adicionar um pelo outro.\n");
scanf("%d", &num1);
scanf("%d", &num2);
printf("A soma de %d com %d e' %c.\n",num1,num2,a);
getchar ();
/****Inicio da SUBTRACÇAO****/
printf("Coloque dois numeros inteiros para subtrair um pelo outro.\n");
scanf("%d", &num1);
scanf("%d", &num2);
printf("A subtraccao de %d com %d e' %c.\n",num1,num2,s);
getchar ();
/****Fim do programa.****/
    printf("Clica \"e\" (minusculo) para terminares o programa\n");
    while (getchar ()!='e')
    return 0;
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

	printf("Pretende Adicionar\(a\) ou subtrair\(s\)?");
if (resposta=='a' || resposta=='s')

Não estás a ler qualquer input entre essas duas linhas.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois.. Então como achas que faço? :S

scanf("%c",&a);

if (a=='a')

scanf("%c",&s);

if (s=='s')

Assim?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

/****Declaração de variaveis****/
     int num1,num2;
     char resposta,a,s;
    /****Fim da declaração de variaveis****/    
/****Inicio do programa****/
printf("Pretende Adicionar\(a\) ou subtrair\(s\)?");
scanf("%c",&a);
if (a=='a')
scanf("%c",&s);
if (s=='s')
/****Inicio da ADIÇÃO****/
printf("Coloque dois numeros inteiros para adicionar um pelo outro.\n");
scanf("%d", &num1);
scanf("%d", &num2);
printf("A soma de %d com %d e' %d.\n",num1,num2,num1+num2);
getchar ();
/****Inicio da SUBTRACÇAO****/
printf("Coloque dois numeros inteiros para subtrair um pelo outro.\n");
scanf("%d", &num1);
scanf("%d", &num2);
printf("A subtraccao de %d com %d e' %d.\n",num1,num2,num1-num2);
getchar ();
/****Fim do programa.****/

Fiz isto...

O programa corre, pergunta se quero adicionar ou subtrair...

Carrega a para adicionar.. E faz tudo bem.. Mas no final em vez de fechar o programa, faz-me meter 2 numeros para subtrair..

Eu queria que se o usuario escolhesse "a" adiciona-se e no fim fechava o programa, ou vice-versa...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pensa que se ele escrever 'a' ele têm de executar o código da adição (que tu tens assinalado por comentários) e se for 's' executa o outro.

E só precisas de fazer uma leitura.  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para que precisas de 3 variáveis?

char resposta;
scanf("%c", &resposta);
if(resposta == 'a') {

 // adicao

} else if (resposta == 's') {

 // subtraccao

}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Na wiki, em "Bases de Programação em C" vejo que o gajo meter:

printf("Quer somar ou subtrair dois numeros?\nSe quer somar, clique 1 e \'enter\'.\nSe quer subtrair, clique outra tecla que nao 1 e \'enter\'.\n");
scanf("%c",&i);
if (i=='1')

Foi o que eu fiz..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas não precisas de fazer duas leituras, porque o utilizador só vai introduzir uma valor para dizer se é soma ou subtracção.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

int main()
{
    /****Declaração de variaveis****/
     int num1,num2;
     char resposta;
    /****Fim da declaração de variaveis****/    
    /****Introdução ao programa****/
    printf("Bem Vindo ao primeiro teste, para o meu quarto programa.\n");
    printf("O objectivo e escolheres um numero e adiciona-lo por um outro numero.\n");
    printf("Clica \"i\" para comecares o programa.\n");
while (getchar()!='i');
getchar ();
/****Fim da introdução ao programa****/
/****Inicio do programa****/
printf("Pretende Adicionar\(a\) ou subtrair\(s\)?");
scanf("%c",&resposta);
if (resposta=='a')
{
/****Inicio da ADIÇÃO****/
printf("Coloque dois numeros inteiros para adicionar um pelo outro.\n");
scanf("%d", &num1);
scanf("%d", &num2);
printf("A soma de %d com %d e' %d.\n",num1,num2,num1+num2);
getchar ();
} else if (resposta=='s') {
/****Inicio da SUBTRACÇAO****/
printf("Coloque dois numeros inteiros para subtrair um pelo outro.\n");
scanf("%d", &num1);
scanf("%d", &num2);
printf("A subtraccao de %d com %d e' %d.\n",num1,num2,num1-num2);
getchar (); }
/****Fim do programa.****/
    printf("Clica \"e\" (minusculo) para terminares o programa\n");
    while (getchar ()!='e')
    return 0;
}

Já funciona!!! Obrigado people! :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

No seguimento deste programa, resolvi fazer  um outro programa, que em vez de adicionar e subtrair apenas... Também multiplica e divide!

No entanto, como é saber de todos, se num1 é o numero que se vai dividir por num2, num2 nunca poderá ser 0, porque nenhum numero é divisor de 0.

Se experimentar na calculadora, o programa dá um erro, e vimos-se obrigados a encerra-lo.

Tentei acrescentar:

switch(resposta0) 
    {
	case '0':
	printf("É impossivel dividir um numero por 0!\n");
			break;
				}

...Mas parece que não resulta...

Alguém sabe como dar a volta? :S

Thanks! :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
#include <stdio.h>
#include <stdlib.h>

int main()
{
    /****Declaração de variaveis****/
     int num1,num2;
     char resposta;
    /****Fim da declaração de variaveis****/    
    /****Introdução ao programa****/
    printf("Bem Vindo ao meu quarto programa.\n");
    printf("O objectivo e escolheres um numero e somar, subtrair, multiplicar ou dividir por um outro numero.\n");
    printf("Clica \"i\" para comecares o programa.\n");
while (getchar()!='i');
getchar ();
/****Fim da introdução ao programa****/
/****Inicio do programa****/
printf("Pretendes Adicionar(a),Subtrair(s),Multiplicar(m),Dividir(d) um numero por outro?");
scanf("%c",&resposta);
if (resposta=='a')
{
/****Inicio da ADIÇÃO****/
printf("Coloque dois numeros inteiros para adicionar um pelo outro.\n");
scanf("%d", &num1);
scanf("%d", &num2);
printf("A soma de %d com %d e' %d.\n\n\n",num1,num2,num1+num2);
getchar ();
} else if (resposta=='s') {
/****Inicio da SUBTRACÇAO****/
printf("Coloque dois numeros inteiros para subtrair um pelo outro.\n");
scanf("%d", &num1);
scanf("%d", &num2);
printf("A subtraccao de %d com %d e' %d.\n\n\n",num1,num2,num1-num2);
getchar (); 
} else if (resposta=='m') {
       /****Inicio da MULTIPLICAÇAO****/
printf("Coloque dois numeros inteiros para multiplicar um pelo outro.\n");
scanf("%d", &num1);
scanf("%d", &num2);
printf("A multiplicacao de %d com %d e' %d.\n\n\n",num1,num2,num1*num2);
getchar (); 
} else if (resposta=='d') {
       /****Inicio da DIVISAO****/
printf("Coloque dois numeros inteiros para dividir um pelo outro.\n");
scanf("%d", &num1);
scanf("%d", &num2);
printf("A divisao de %d com %d e' %d.\n\n\n",num1,num2,num1/num2);
getchar (); }
/****Fim do programa.****/
printf("Espero que tenhas gostado.\n");
    printf("Clica \"e\" (minusculo) para terminares o programa\n");
    while (getchar ()!='e')
    return 0;
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É nesta linha que testas se num2 é 0.

if (num2 != 0) 
       printf("A divisao de %d com %d e' %d.\n\n\n",num1,num2,num1/num2); 
else 
       printf('Impossivel dividir por zero');

E porque que não usas o switch para verificar qual foi a operação escolhida?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

E porque que não usas o switch para verificar qual foi a operação escolhida?

Impossível dividir por 0, adicionado..Thanks

Não uso, porque não sei como se faz..:S

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Acho que era uma ideia interessante para aprenderes. 

E só mais uma coisa começa a indentar o teu código.  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Acho que era uma ideia interessante para aprenderes. 

Claro que sim. Para a semana, vou comprar o livro do Luis Damas...

E só mais uma coisa começa a indentar o teu código.  :)

O que queres dizer com isto? :S

Cumpz

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O que queres dizer com isto? :S

Cumpz

Qual achas mais legivel?

Este:

if (num2 != 0) 
       printf("A divisao de %d com %d e' %d.\n\n\n",num1,num2,num1/num2); 
else 
       printf('Impossivel dividir por zero');

Ou este:

if (num2 != 0) 
printf("A divisao de %d com %d e' %d.\n\n\n",num1,num2,num1/num2); 
else 
printf('Impossivel dividir por zero');

O primeiro está indentado, e o segundo não.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ja agora deixo aqui uma calculadora que tive de fazer numa serie de exercicios de C

para usar é fazer:

calcular numero operação numero backspace

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

int main(int argc, char *argv[]){
int a;
int b;
if(argc != 4){  //antes  if(argc < 4 || argc > 4){
	puts("Formato de calculo invalido");
	return 0;
}
a = atoi(argv[1]);
b = atoi(argv[3]);
switch(*argv[2]){
	case '+': printf("%d",a+b);
		break;
	case '-': printf("%d",a-b);
		break;
	case '/': printf("%d",a/b);
		break;
	case '*': printf("%d",a*b);
		break;
}
}

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