Ir para conteúdo

POWERED BY:

Arquivado

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

Ripper

Interpretação

Recommended Posts

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

Claro que podemos ajudar ;D

 

Mostre suas tentativas!

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.