Programação Imperativa

Soluções aula prática 6


1. Função ímpar

int impar(int n)
{
  if ((n%2)==0)
    return(0);
  else
    return(1);
}

2. - Função primo

int primo(int n)
{
  int i;
  if (n<2)
    return(0);
  for (i=2; i<n; i++)
  {
    if ((n%i)==)
      return(0);
  }
  return(1);
}

3, 4. - Testa as funções dos exercícios 1 e 2

void main()
{
  int num, cnt;

  /* pedir o numero: */
  printf("Da um numero: ");
  scanf("%d", &num);

  /* vai mostrar se o numero e impar: */
  if (impar(num)==1)
    printf("%d e impar\n");
  else
    printf("%d e par\n");

  /* vai mostrar se o numero e primo: */
  if (primo(num)==1)
    printf("%d e primo\n");
  else
    printf("%d nao e primo\n");

  /* vai mostrar os primeiros 100 numeros primos */
  cnt = 0; /* contador de numeros primos ja encontrados */
  num = 1;
  while (cnt<100)
   {
     if (primo(num)==1)
       {
         cnt++;
         printf("%d ", num);
       }
     num++;
   }
}


5. - Desenha um quadrado

void rectangulo(char c, int lin, int col)
{
  int i, j;
  for (j=1; j<=col; j++)
    printf("%c", c);
  for (i=2; i<=lin-1; i++)
    {
      printf("%c", c);
      for (j=2; j<=col-1; j++)
        printf(" ");
      printf("%c", c);
    }
  for (j=1; j<=col; j++)
    printf("%c", c);
}
void main()
{
  char x;
  int nlin, ncol: int;
  printf("Introduz um caracter: ");
  scanf("%c", &x);
  printf("Introduz o numero de linhas: ");
  scanf("%c", &nlin);
  printf("Introduz o numero de colunas: ");
  scanf("%c", &ncol);
}


  Introduz um caracter: z
  Introduz o número de linhas: 4
  Introduz o número de colunas: 6
  zzzzzz
  z    z
  z    z
  zzzzzz


6. - Factorial

int factorial(int n)
 /* returns n! Metodo com ciclo: */
{
  int i, result;

  result = 1;        /* initialize the variable */
  for (i=1; i<=n; i++)
    result = i*result;
  return(result);
}

int factorial (int n)
/* returns n! Metodo recursivo */
{
  if (n==1)
    return(1);
  else
    return(n*factorial(n-1));
}


7. - Função aleatório

#include <stdlib.h>
#include <stdio.h>

int aleatorio(int m)
{
  /* a funcao rand() e uma funcao da biblioteca stdlib
     que retorna um int entre 0 e RAND_MAX; */
  return(rand()%m);
}


8. Moeda ao ar

#include <stdlib.h>
#include <stdio.h>

int aleatorio(int m)
{
  /* a funcao rand() e uma funcao da biblioteca stdlib
     que retorna um int entre 0 e RAND_MAX; */
  return(rand()%m);
}

void main()
{
  int i, ncor;

  srand();  /* faz uma inicializacoa do gerador dos numeros aleatorios */
  ncor = 0;
  for (i=1; i<=1000; i++);
    if (aleatorio(2)==0)
      ncor++;
  printf("numero de vezes coroa: %d\", ncor);
  printf("numero de vezes cara: %d\", 1000-ncor);
}


9. Mais números aleatórios

float aleat(float xlo, float xhi)
/****************************************
 * gera numeros no intervalo [xlo, xhi] *
 ****************************************/
{
   /* numeros entre 0 e 1: */
  x = (float) rand() / (float) RAND_MAX;
   /* converter para numeros entre xlo e xhi: */
  x = xlo + (xhi-xlo) * x;
  return(x);
}

void main()
{
  int i, n05=0, n58=0, n810=0;
  float r, rlo, rhi;
 

   for (i=0; i<1000; i++)
    {
      r = aleat(0.0, 1.0);
      if (r<0.5)
        n05++;
      else
        if (r<0.8)
          n58++;
        else
          n810++;
    }
  printf("No intervalo [0 - 0.5] cairam %d numeros\n", n05);
  printf("No intervalo [0.5 - 0.8] cairam %d numeros\n", n58);
  printf("No intervalo [0.8 - 1] cairam %d numeros\n", n810);
}