Trabalho Prático 02 - Condições e Repetições

Ir em baixo

Trabalho Prático 02 - Condições e Repetições

Mensagem por Evandro Abu Kamel em Qua 11 Mar 2009, 21:41

Pessoal, vou colocar aqui a resolução do TP02 que é pra amanhã. O.o
Vou colocar os códigos e alguns comentários, explicando.
Pressupõe-se que todos tenham acesso aos enunciados contidos no LearnLoop.
Então, vamos lá.


Exercício 1

-> Efetuar a leitura de cinco números inteiros diferentes, identificar o maior e o menor valor.

Esse é simples, mas exige uma seqüência de 'if's.

Código:

static void Main(string[] args)
{
    int n1, n2, n3, n4, n5, maior, menor;  /* declaramos uma variavel pra cada valor, uma para o maior e uma para o menor */

    Console.WriteLine("Digite o 1o valor: ");  // uma frase simples
    n1 = int.Parse(Console.ReadLine());  // a variavel recebe o valor digitado
    Console.WriteLine("Digite o 2o valor: "); 
    n2 = int.Parse(Console.ReadLine());
    Console.WriteLine("Digite o 3o valor: "); 
    n3 = int.Parse(Console.ReadLine());
    Console.WriteLine("Digite o 4o valor: "); 
    n4 = int.Parse(Console.ReadLine());
    Console.WriteLine("Digite o 5o valor: "); 
    n5 = int.Parse(Console.ReadLine());

    // no 'if' devemos verificar cada variavel com duas posteriores
    // primeiro vamos encontrar o maior valor

    if ((n1>n2) && (n1>n3) && (n1>n4) && (n1>n5))
          maior = n1;  /* se n1 for maior que as outras, a variavel 'maior' recebe o valor contido em 'n1'  */
    else if ((n2>n3) && (n2>n4) && (n2>n5))  /* nao eh necessario verificar se n2 eh maior que n1, pois isso foi feito no caso anterior */
          maior = n2;
    else if ((n3>n4) && (n3>n5))  /* perceberam que nao eh necessario comparar os valores com seus antecessores? pois n3 ja eh comparado com n2 no caso anterior, e la diz "se n2>n3", e se essa sentenca for falsa, a outra unica alternativa eh 'n3>n2", logo nao eh preciso fazer a comparacao entre eles novamente */
          maior = n3;
    else if ((n4>n5))
          maior = n4;
    else  //  se nenhuma das anteriores for a maior, a unica que sobra eh 'n5'
          maior = n5;


    // agora vamos verificar o menor
    // procede da mesma forma, apenas mudando os sinal '>' para '<' e a variavel usada sera a 'menor'

    if ((n1<n2) && (n1<n3) && (n1<n4) && (n1<n5))
          menor = n1;
    else if ((n2<n3) && (n2<n4) && (n2<n5)) 
          menor = n2;
    else if ((n3<n4) && (n3<n5))
          menor = n3;
    else if ((n4<n5))
          menor = n4;
    else  //  se nenhuma das anteriores for a menor, a unica que sobra eh 'n5'
          menor = n5;
 
      // os valores maior e menos foram encontrados, agora eh so mostra-los na tela
      Console.WriteLine(" ");  // adiciona uma linha em branco, frescuragem
      Console.WriteLine("O maior valor eh "+maior);
      Console.WriteLine("O menor valor eh "+menor);

      Console.Read();  // fim
}
avatar
Evandro Abu Kamel
Administrador
Administrador

Número de Mensagens : 222
Idade : 29
Data de inscrição : 11/03/2009

Ver perfil do usuário http://forum.clubedosistema.com

Voltar ao Topo Ir em baixo

Exercício 6

Mensagem por Evandro Abu Kamel em Qua 11 Mar 2009, 22:03

Vou fazer agora o exercício 6, um que o pessoal teve bastante dificuldade.

Exercício 6

-> Faça um algoritmo que leia N do teclado, gere e calcule a série abaixo:
L = 1 - 2/4 + 3/9 - 4/16 + ..... + N/N^2 (^ simbolo de elevado)

Código:

static void Main(string[] args)
{
      double L;
      int N, i;  // a variavel 'i' sera usada no for()

      // o valor de N deve ser informado, eh ele que vai dizer quantas vezes sera feita a repeticao
      Console.WriteLine("Digite um valor para N: ");
      N = int.Parse(Console.ReadLine());
     
      L = 0;  //  L comeca com 0
      for(i=1 ; i<=N ; i=i+1)    // i comeca em 1 ; enquanto i for <= 1 ; i aumenta de 1 em 1
      {
            if ((i%2) != 0)  // se o  resto da divisao de i por 2 for diferente de 0, i eh impar
                  L = L + ( i/Math.pow(i,2) );  // os quando i for impar, a expressao i/i^2 eh somada ao valor de L
            else  // se o resto da divisao de i por 2 NAO for diferente de 0, i eh par
                  L = L - ( i/Math.pow(i,2) );  // os quando i for par, a expressao i/i^2 eh subtraida do valor de L
      }  // isso eh feito ate 'i' ser menor ou igual a N

      Console.WriteLine(" ");
      Console.WriteLine("O valor de L eh: "+L);  // mostra o valor final de L
      Console.Read();  // fim
}


Última edição por Evandro Abu Kamel em Qua 11 Mar 2009, 22:36, editado 1 vez(es)
avatar
Evandro Abu Kamel
Administrador
Administrador

Número de Mensagens : 222
Idade : 29
Data de inscrição : 11/03/2009

Ver perfil do usuário http://forum.clubedosistema.com

Voltar ao Topo Ir em baixo

Re: Trabalho Prático 02 - Condições e Repetições

Mensagem por Andre em Qua 11 Mar 2009, 22:16

Somente Corrigindo o script do Evandro . aonde está: i/Math.pow(i;2) . .
Trocar POR i/Math.pow(i,2) . Trocado o ; por , .
avatar
Andre
Moderador
Moderador

Número de Mensagens : 4
Idade : 28
Data de inscrição : 11/03/2009

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Trabalho Prático 02 - Condições e Repetições

Mensagem por Evandro Abu Kamel em Qua 11 Mar 2009, 22:37

O gente, desculpa, tá corrigido.
Vocês sabem neh, eu tô aprendendo C# agora. XD
avatar
Evandro Abu Kamel
Administrador
Administrador

Número de Mensagens : 222
Idade : 29
Data de inscrição : 11/03/2009

Ver perfil do usuário http://forum.clubedosistema.com

Voltar ao Topo Ir em baixo

Exercício 7

Mensagem por Evandro Abu Kamel em Qua 11 Mar 2009, 22:38

Vou fazer o exercício 7, é um pouco mais difícil que o 6. Neste, usarei a estrutura de repetição while().

Exercício 7

-> Faça um algoritmo para calcular e imprimir o fatorial de um valor inteiro positivo lido do teclado.
N! = N * (N-1) * ... * 3 * 2 * 1

Código:

static void Main(string[] args)
{
      int N, FATORIAL, i;

      Console.WriteLine("Digite um numero para calcurar o seu fatorial: ");
      N = int.Parse(Console.ReadLine());

      FATORIAL = 1;  // comeca com 1 porque sera uma sequencia de multiplicacoes
      i = N;  // nesse caso, o 'i' recebe o valor de N e a repeticao sera feita ate que 'i' decresca ate 1
      while (i >= 1)
      {
            FATORIAL = FATORIAL * i; /* 'FATORIAL' comeca com valor 1 para nao zerar a multiplicacao */
            /* a cada repeticao 'FATORIAL' sera multiplicado ao valor de 'i' que esta decrescendo ate 1, ou seja, esta se multiplicando a um fator de cada vez, como eh mostrado na formula do enunciado */
            i = i-1;  // faz do decremento do 'i', que eh o contador descressivo do while
      }

      Console.WriteLine(" ");
      Console.WriteLine("O fatorial de "+N+" eh: "+FATORIAL); /* imprime a frase com o valor de 'N' e o 'FATORIAL'  */
      Console.Read();  // fim
}


Última edição por Evandro Abu Kamel em Qui 12 Mar 2009, 19:50, editado 2 vez(es)
avatar
Evandro Abu Kamel
Administrador
Administrador

Número de Mensagens : 222
Idade : 29
Data de inscrição : 11/03/2009

Ver perfil do usuário http://forum.clubedosistema.com

Voltar ao Topo Ir em baixo

Exercício 2

Mensagem por Evandro Abu Kamel em Qua 11 Mar 2009, 23:02

Atendendo a pedidos, vou fazer aqui o exercício 2.

Exercício 2

-> Ler um número inteiro entre 1 e 7 e escrever o dia da semana correspondente. Caso o usuário digite um
número fora desse intervalo, deverá aparecer uma mensagem informando que não existe dia com este
numero. O programa também deve indicar se o dia em questão é dia útil ou fim de semana.

Neste programa, usaremos apenas duas variáveis, uma para guardar o valor digitado para o dia e outro com valor do tipo texto que vai guardar o "nome" do dia (Ex.: "Segunda-feira").

Aqui usaremos a estrutura switch() para examinar cada caso que queremos correspondentes aos sete dias da semana.

Código:
static void Main(string[] args)
{
      int NUM;
      string DIA;

      Console.WriteLine("Digite um numero correspondente ao dia: ");
      NUM = int.Parse(Console.ReadLine());  // le o valor digitado
 
      /* agora usaremos o switch() para examinar os valores de 1 a 7 e valores diferentes desses com o 'default' */
      switch(NUM)  // o switch vai examinar a variavel 'NUM', que foi digitada
      {
            case 1: DIA = "Domingo";  /* a variavel 'DIA' do tipo texto recebe o "nome do dia" em forma de texto */
                      break;  /* vem sempre apos o ultimo comando do case, para parar a execucao do switch caso a sentenca seja verdadeira */
            case 2: DIA = "Segunda-feira";
                      break;
            case 3: DIA = "Terca-feira";
                      break;
            case 4: DIA = "Quarta-feira";
                      break;
            case 5: DIA = "Quinta-feira";
                      break;
            case 6: DIA = "Sexta-feira";
                      break;
            case 7: DIA = "Sabado";
                      break;
            default: DIA = "Inexistente";  /* caso o valor digitado em 'NUM' nao seja nenhum dos anteriores, ou seja, um valor invalido, o "nome do dia" recebe "Inexistente", que sera exibido em uma frase mais a frente */
                      break;
      }

      Console.WriteLine(" ");
      Console.WriteLine("O dia correspondente a "+NUM+" eh: "+DIA);  // frase que mostra o "nome do dia"

      // agora vamos verificar se o dia eh util ou nao
      if (NUM==1 || NUM==7)  // se NUM for igual a 1 (domingo) ou 7 (sabado) ...
            Console.WriteLine("Este dia esta no fim de semana.");
      else  // se nao for os anteriores
            Console.WriteLine("Este eh um dia util.");

      Console.Read();         
}


Última edição por Evandro Abu Kamel em Qui 12 Mar 2009, 13:11, editado 2 vez(es)
avatar
Evandro Abu Kamel
Administrador
Administrador

Número de Mensagens : 222
Idade : 29
Data de inscrição : 11/03/2009

Ver perfil do usuário http://forum.clubedosistema.com

Voltar ao Topo Ir em baixo

Re: Trabalho Prático 02 - Condições e Repetições

Mensagem por filipibc em Qui 12 Mar 2009, 11:33

Tentei compilar este que o Evandro acabou de colocar a achei 2 pequenos erros.
O 1º, ele declarou a varial DIA como INT, mas neste caso como a varial DIA vai receber uma palavra, teria que ser declarada como STRING.
O 2º erro foi que na quinta feira ele esqueceu de abrir " para digitar QUINTA FEIRA.

E simplificando um pouco o codigo dele, ele poderia ter tirado aquele IF do final.
Mas como iria mostrar se é dia ultil ou final de semana?
Quando a variavel DIA fosse receber o valor, ela recebia tbm se era dia util ou final de semana.
exemplo

{
case 4: DIA = "Quarta-feira, dia util";
break;
case 5: DIA = Quinta-feira, dia util";
break;
case 6: DIA = "Sexta-feira, dia util";
break;
case 7: DIA = "Sabado, final de semana";
break;
}

Codigo corrigido e simplificado

Código:

static void Main(string[] args)
{
            int NUM;
            string DIA;
      Console.Write("Digite um numero correspondente ao dia: ");
      NUM = int.Parse(Console.ReadLine());  // le o valor digitado
 
      // agora usaremos o switch() para examinar os valores de 1 a 7 e valores diferentes desses com o 'default'
      switch(NUM)  // o switch vai examinar a variavel 'NUM', que foi digitada
      {
            case 1: DIA = "Domingo, Final de semana";  // a variavel 'DIA' do tipo texto recebe o "nome do dia" em forma de texto
                      break;  /* vem sempre apos o ultimo comando do case, para parar a execucao do switch caso a sentenca seja verdadeira */
            case 2: DIA = "Segunda-feira, dia util";
                      break;
            case 3: DIA = "Terca-feira, dia util";
                      break;
            case 4: DIA = "Quarta-feira, dia util";
                      break;
            case 5: DIA = "Quinta-feira, dia util";
                      break;
            case 6: DIA = "Sexta-feira, dia util";
                      break;
            case 7: DIA = "Sabado, final de semana";
                      break;
            default: DIA = "Inexistente";  /* caso o valor digitado em 'NUM' nao seja nenhum dos anteriores, ou seja, um valor invalido, o "nome do dia" recebe "Inexistente", que sera exibido em uma frase mais a frente */
                      break;
      }

      Console.WriteLine(" ");
      Console.WriteLine("O dia correspondente a "+NUM+" eh: "+DIA);  // frase que mostra o "nome do dia"
      Console.Write("\n\n\n\n      Tecle <ENTER> para fechar ... ");

    Console.Read();         
}
avatar
filipibc
Moderador
Moderador

Número de Mensagens : 12
Data de inscrição : 11/03/2009

Ver perfil do usuário http://www.filipibc.freevar.com

Voltar ao Topo Ir em baixo

Re: Trabalho Prático 02 - Condições e Repetições

Mensagem por Evandro Abu Kamel em Qui 12 Mar 2009, 13:07

Opa, valeu pela correção. Smile
Coisas que o sono faz.
avatar
Evandro Abu Kamel
Administrador
Administrador

Número de Mensagens : 222
Idade : 29
Data de inscrição : 11/03/2009

Ver perfil do usuário http://forum.clubedosistema.com

Voltar ao Topo Ir em baixo

Exercício 4

Mensagem por Evandro Abu Kamel em Qui 12 Mar 2009, 21:50

Estou vendo gente com dificuldades no exercício 4, então vou postá-lo rapidamente.
Os comentários estão aí.


Exercício 4

-> O custo ao consumidor de um carro novo é a soma do custo de fábrica com a porcentagem do distribuidor e
com os impostos, ambos aplicados ao custo de fábrica. Sabe-se que as porcentagens são as mesmas que estão na tabela a seguir. Faça um programa que receba o custo de fábrica de um carro e mostre o custo ao
consumidor.

Custo de Fábrica | % do Distribuidor | % dos Impostos
Até R$ 28.000,00 | 5% | Isento
Entre R$ 28.000,01 e | 10% | 15%
R$ 45.000,00
Acima de R$ 45.000,00 | 15% | 20%

Código:
static void Main(string[] args)
        {
            double custo, preco;  // as unicas variaveis necessarias para esse problema

            Console.Write("Informe o custo de fabrica do carro: ");
            custo = double.Parse(Console.ReadLine());  // aqui o usuario informa o preco de fabrica do carro
            Console.WriteLine("");

            // seguindo cada linha daquela tabela 
            if (custo <= 28000)  // Até R$ 28.000,00 // seguindo as condicoes da tabela
            {
                preco = custo + (custo * 5 / 100);  /* calcula-se a porcentagem e soma o imposto ao custo obtendo o preco final  /*
            }
            else if (custo > 28000 && custo <= 45000)  // Entre R$ 28.000,01 e R$ 45.000,00
            {
                preco = custo + (custo * 10 / 100) + (custo * 15 / 100);
            }
            else if (custo > 45000)  /* Acima de R$ 45.000,00  // nem precisava desse ultimo 'if', apenas o 'else' bastava nesse caso  */
            {
                preco = custo + (custo * 15 / 100) + (custo * 20 / 100);
            }

            Console.WriteLine("O preco final do carro eh: R$ "+preco);
        }
avatar
Evandro Abu Kamel
Administrador
Administrador

Número de Mensagens : 222
Idade : 29
Data de inscrição : 11/03/2009

Ver perfil do usuário http://forum.clubedosistema.com

Voltar ao Topo Ir em baixo

Re: Trabalho Prático 02 - Condições e Repetições

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum