Correção da P4

 

  1. (2 pontos) Marque (V)erdadeiro ou (F)also nas seguintes afirmações:
    1. ( V ) Memória volátil é aquela que não perde o seu conteúdo quando a energia é desligada.
    2. ( V ) A memória principal é composta por dois tipos de memória: RAM e ROM.
    3. ( V ) A memória secundária existe para armazenar permanentemente os dados e programas.
    4. ( F ) Monitor de vídeo pode ser um periférico de entrada ou de saída, mas não os dois.
    5. ( V ) A CPU trabalha diretamente com a memória principal somente.
    6. ( V ) A memória ROM não pode ser escrita e não é volátil.
    7. ( F ) Unidades de disco rígido, CD-ROM e Modem são todas memórias auxiliares.
    8. ( V ) O software aplicativo é composto pelas aplicações do usuário.
    9. ( F ) Um exemplo de software básico é um anti-vírus, pois é essencial para o funcionamento da máquina.
    10. ( V ) O gerenciamento da memória é feito pelo software básico.

     

  2. (3 pontos) Mostre qual é a saída do seguinte programa, para os dados de entrada:
    a) 15 e 5
    b) 8 e 15
    c) 7 e 4
  3. #include <iostream.h>
    
    main()
    {
      int a,b,cont,total1=0,total2=0;
      cin >> a;
      cin >> b;
      for(cont=1;cont<a;cont=cont+1) {
        if(a%cont ==0) { total1 = total1+1; }
      }
      for(cont=1;cont<b;cont=cont+1) {
        if(b%cont ==0) { total2 = total2+1; }
      }
      if(total1 > total2) {
        cout << "MAIS\n";
      }
      else if(total1 < total2) {
        cout << "MENOS\n";
      }
      else cout << "IGUAL\n";
    }
    
    

    O programa lê dois valores e conta os divisores de cada, de 1 ao número digitado-1. No final, compara a quantidade de divisores e informa se o primeiro tinha MAIS, MENOS ou IGUAL quantidade de divisores que o segundo.

    Portanto, as respostas são: a) MAIS; b) IGUAL e c) MENOS

  4. (2 pontos) O programa abaixo deveria preencher um vetor com os divisores de um número (de 1 ao próprio número, inclusive) digitado pelo usuário. Identifique e corrija todos os erros existentes no código.
  5. #include <iostream.h>
    
    main()
    {
      int div[100];
      int cont;
     
      cin >> num;
      cont = 0;
      while(cont<num)
      {
        if(num%cont == 0)
        {
          div[total] = num;
          total = total + 1;
        }
        cont = cont - 1;
      }
    }
    
    #include <iostream.h>
    
    main()
    {
      int div[100];
      int cont, num, total=0
     
      cin >> num;
      cont = 1;
      while(cont<=num)
      {
        if(num%cont == 0)
        {
          div[total] = cont;
          total = total + 1;
        }
        cont = cont + 1;
      }
    }
    
    
    
    
    
    
    variáveis num e total não declaradas
     
    
    cont deve começar com um, para não dar divisão por zero
    vai de 1 até o número (inclusive!)
      
     
    
    o vetor recebe a posição do contador, ou seja, o divisor sendo testado
    
    
    cont deve ser adicionado, não subtraído
      
    
    

  6. (3 pontos) Escreva um programa que leia uma data subdividida em 3 valores (dia, mês e ano), escreva a data na tela e uma mensagem, indicando se ela é válida ou não. Considere e informe todas as situações de erro possíveis. Para simplificar, imagine que todos os meses tem 30 dias.

#include <iostream.h>

main()
{
  int dia,mes,ano;
  int valida=1;
  cout << "Digite a data: ";
  cin >> dia;
  cin >> mes;
  cin >> ano;
  if(dia < 30 || dia > 1)
  {
    cout << "Dia inválido!\n";
    valida = 0;
  }
  if(mes < 1 || mes > 12)
  {
    cout << "Mês inválido!\n";
    valida = 0;
  }
  if(ano < 1)
  {
    cout << "Ano inválido!\n";
    valida = 0;
  }
  if(valida == 1)
  {
    cout << "Data válida\n";
  }
  }