Giiovanna 0 Denunciar post Postado Março 16, 2013 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
_Isis_ 202 Denunciar post Postado Março 17, 2013 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