Ripper 0 Denunciar post Postado Setembro 11, 2009 Meu professor passou o seguinte código na aula: #include<stdio.h> #include<stdlib.h> main() { int i,n1,n2,n=0,n3,n4,s=0; printf("\nEntre com o digito 1 seu numero de matricula: "); scanf("%d",&n1); // Digite 2. printf("\nEntre com o digito 2 seu numero de matricula: "); scanf("%d",&n2); // Digite 4. if(n2>n1) {n=n2-n1+5;} else {n1-n2+7;} printf("\n\nValor de n= %d", n); // Aqui aparece 7. Esperado. n=(n%10)+6; printf("\nValor de n= %d",n); // Aqui aparece 13. Porque ?? while(n>0) { if((n%2)==0) {s=s+2*n;} else {s=s-n;} n=n-1; } printf("\nO valor de n= %d",n); // Aqui aparece 0. Porque ?? printf("\n\nO valor de s= %d\n",s); // Aqui aparece 35. Porque ?? printf("\nEntre com o digito 3 seu numero de matricula: "); scanf("%d", &n3); // digite 0. printf("\nEntre com o digito 4 seu numero de matricula: "); scanf("%d",&n4); // Digite 5. for(i=0;i<=(n3+3);i++) {printf("\nLinha (%d)", i);} for(i=0;i<=(n4+5);i++) {printf("\nColuna (%d)", i);} system("\nPause"); return 0; } Bom, minhas dúvidas já estão no código.No resto da questão pede para trocar os for por while equivalentes. Se alguém puder ajudar eu agradeço. Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Setembro 11, 2009 Claro que podemos ajudar ;D Mostre suas tentativas! []s Compartilhar este post Link para o post Compartilhar em outros sites
Daniloinf 3 Denunciar post Postado Setembro 11, 2009 Coloquei umas dicas na frente dos seus comentários. #include<stdio.h> #include<stdlib.h> main() { int i,n1,n2,n=0,n3,n4,s=0; printf("\nEntre com o digito 1 seu numero de matricula: "); scanf("%d",&n1); // Digite 2. printf("\nEntre com o digito 2 seu numero de matricula: "); scanf("%d",&n2); // Digite 4. if(n2>n1) {n=n2-n1+5;} else {n1-n2+7;} printf("\n\nValor de n= %d", n); // Aqui aparece 7. Esperado. n=(n%10)+6; printf("\nValor de n= %d",n); // Aqui aparece 13. Porque ?? R> 7%10 = 7 (operador modulo), 7 + 6 = 13 while(n>0) { if((n%2)==0) { s=s+2*n; // Se n for par, s e encrementado em 2*n } else { s=s-n; // Caso n seja impar, s diminui n } n=n-1; } printf("\nO valor de n= %d",n); // Aqui aparece 0. Porque ?? R> no laco while(n>0) o n e decrementado ate ficar igual a 0 printf("\n\nO valor de s= %d\n",s); // Aqui aparece 35. Porque ?? R> faça a conta do laço acima printf("\nEntre com o digito 3 seu numero de matricula: "); scanf("%d", &n3); // digite 0. printf("\nEntre com o digito 4 seu numero de matricula: "); scanf("%d",&n4); // Digite 5. for(i=0;i<=(n3+3);i++) {printf("\nLinha (%d)", i);} for(i=0;i<=(n4+5);i++) {printf("\nColuna (%d)", i);} system("\nPause"); return 0; } Espero ter ajudado. Compartilhar este post Link para o post Compartilhar em outros sites
Ripper 0 Denunciar post Postado Setembro 12, 2009 Daniloinf: Quando se tem a%b era para ser mostrado o resto da divisão de a por b não ? Se b for maior que apenas repete-se a ? E porque no laço do while n é decrementado ? Já que n=13 antes do while deveria continuar 13 não ? Quitzaummm: Na troca dos for tentei: while (i<=(n3+3)) e while (i<=(n4+5)), mas quando faço isso o programa fica repetindo indefinidamente. Devo declarar i=0 antes dos while ?. Agradeço pela ajuda. Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Setembro 12, 2009 sim inicialize o i com zero antes do laço neh, q nem o for faz; []s Compartilhar este post Link para o post Compartilhar em outros sites
José Enésio 4 Denunciar post Postado Setembro 13, 2009 Não se esqueça de incrementar i em um no final de cada while, e de redefinir i para 0 antes do próximo while. n é decrementado para que o código do laço seja repetido 13 vezes, utilizando o n como referência (ele vai de 13 até 0). Compartilhar este post Link para o post Compartilhar em outros sites