Solução em C do Problema 7

/*
 * SOLUCAO 1
 */ 

#include <stdio.h>

#define MAX 100

int main() {
  int n,               /* numero de elementos da sequencia  */
    i, j,                 
    comp,              /* comprimento corrente do vetor seq */
    conta, vezes;
  float seq[MAX];

  printf("\nDigite o numero de elementos da sequencia: ");
  scanf("%d", &n);
  printf("Digite uma sequencia de %d numeros reais: ", n);
  for (i = 0; i < n; i++)
    scanf("%f", &seq[i]);
  for (i = 0; i < n; i++) {
    /* conta o numero de vezes que seq[i] aparece no vetor a partir da posição i */
    vezes = 1;
    j = i + 1;
    while (j < n)
      if (seq[j] != seq[i]) 
	j++; 
      else {
        vezes++;
	/* quando repete, remove */
        n--;                   
        seq[j] = seq[n];       
      }
    printf("%f ocorre %d vezes\n", seq[i], vezes);
  }
  return 0;
}

/*
 * SOLUCAO 2
 */ 

#include <stdio.h>

#define MAX 100

int main() {

  int n,	     /* comprimento da sequencia de entrada                */
      i, j,
      conta[MAX],    /* contador de repeticoes de cada numero da sequencia */
      comp = 0;      /* comprimento do vetor conta                         */		
  float seq[MAX];   /* sequencia de entrada sem repeticoes                */

  printf("\nDigite o comprimento da sequencia: ");
  scanf("%d", &n);

  printf("Digite uma sequencia de %d numeros reais: ", n);
  for (i = 0; i < n; i++) {
    scanf("%f", &seq[comp]);
    /* procura esse numero no vetor seq a partir do inicio */
    for (j = 0; seq[j] != seq[comp]; j++);  /* comando vazio! */
    if (j == comp) {
      /* se o numero nunca tinha aparecido */
      conta[comp] = 1;
      comp++;
    }
    else 
      conta[j]++;
  }

  /* imprime o resultado */
  for (j = 0; j < comp; j++) 
    printf("O numero %f aparece %d vezes na sequencia.\n", seq[j], conta[j]);
  return 0;
}


Lista de Problemas

História da Computação | Listas de Exercícios | Problemas Resolvidos | macmulti@ime.usp.br