Ir para conteúdo

POWERED BY:

Arquivado

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

Giiovanna

Algoritmo de subtração de N elementos

Recommended Posts

Oi,

 

Eu estava treinando um pouco de C e modificando uma antiga calculadora para eu poder somar ou subtrair n números ao invés de 2.

 

Uma parte do código da subtração é:

 

 

else if(op==2) {
x=1;
resp=0;
printf("Voce deve digitar 0 quando terminar de colocar os numeros que deseja subtrair (no minimo 2)\n");
printf("Nao e necessario colocar o sinal (-) caso o numero nao seja negativo\n\n");
while(x!=0){
printf("Selecione um numero: ");
scanf("%f",&x);
resp= -(resp-x);
}
printf("Resultado:%f",resp);
}
Minha dúvida é na linha vermelha e é o seguinte: Eu defini, inicialmente, resp sendo 0. Pensei inicialmente em colocar resp=resp-x mas com isso, notei que eu estaria fazendo uma soma de números opostos, ou seja, somando números e colocando um sinal de negativo na frente.
Para resolver isso, resolvi colocar o sinal de negativo em resp e somar o x, e assim não teria problemas atribuindo um sinal negativo desnecessário. A calculadora funciona perfeitamente deste jeito, subtraindo "de cima para baixo", o que corresponderia ao nosso "esquerda para a direita".
Porém, fiquei na dúvida por que ele funciona mesmo. Pois por exemplo, supondo que inicialmente eu coloquei o número 2.
assim: resp = -(0-2) = 2
O valor 2 ficaria guardado na variável resp.
Supondo agora que, tendo o 2 guardado, eu digitei 4. Penso eu que deveria ficar:
resp = -(resp-x)
resp=-(4-2)
resp=-2
A resposta do programa rodando é a correta que eu esperava, ou seja, 2.
Acredito que eu não entendi o funcionamento realmente desta parte no C, já que não acho que o programa esteja errando, mas sim eu na minha lógica.
Se alguém puder me explicar, eu agradeceria.
Obrigada :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se a variável resp já possui o valor 2, então o cálculo

 

resp = -(2-4) = 2

 

está correto, já que é na variável x que você está armazenando o que lê. Você deve ter substituído errado ao escrever o post.

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.