Postagem em destaque

Huguinho e Zezinho surfando com granizo

Imagem
Certa vez, em outubro de 2023, Huguinho e seu amigo Zezinho foram surfar no final da tarde. O vento estava forte e a chuva, constante. Quando chegaram perto da praia, mal conseguiam segurar suas pranchas. O mar estava bem mexido, e ainda tiveram que andar cerca de 1 km até o pico. Quando estavam se aproximando, começou a cair granizo! Dava para ouvir claramente o barulho das pedras contra as pranchas. Eles se abrigaram embaixo do posto avançado dos salva-vidas, mas não adiantou muito. Ficaram olhando o mar — que estava bem agitado e quebrando bem longe — e perceberam que estava difícil passar a arrebentação. Como o granizo não parava, decidiram entrar assim mesmo. Logo que entraram no mar, o granizo cessou, mas aí começou o verdadeiro desafio: passar a arrebentação. Depois de levar várias séries na cabeça e quase sem forças, finalmente conseguiram. E começaram os raios! Quando estavam quase decidindo sair por causa deles, os raios pararam. Ufa! É algo estranho: você está lá, só você (c...

Arrays: elementos repetidos e número de ocorrências

Problema: dado um determinado array, como contar quais os elementos repetidos e o número de ocorrências de cada elemento?

Existem diversas maneiras de se conseguir isso, até porque algumas linguagens possuem uma extensa biblioteca para utilização com arrays. Mas, para treinar um pouco, vou mostrar uma solução em C++. O código já está comentado.

#include <stdio.h>
#include <string.h>
#include <iostream>
 
using namespace std;
 
// estrutura que contem o valor do número e a quantidade de ocorrências
struct number { 
  int value;
  int count;
};
 
// tamanho definido arbitrariarmente (para facilitar o exemplo)
#define MAX 8
 
// array de entrada
int a[MAX] = {5, 3, 5, 1, 1, 1, 2, 1};

// array com estrutura do número
number n[MAX];

int used = -1;
int found = 0;
const int NUL = -1;
 
int main(){
  int i, j;
 
  // inicializa array
  for(i=0; i<MAX; i++){
    n[i].value = NUL;
    n[i].count = NUL;
  }
 
  for(i=0; i<MAX; i++){
    found = 0;
    
    for(j=0; j<used; j++){
      // encontrou, incrementa e sair fora
      if (a[i] == n[j].value){
        n[j].count++;
        found = 1;
        break;
      }
    }
 
    // não encontrou o número, armazena
    if (not found) {
      used++;
      n[used].value = a[i];
      n[used].count = 1;
    }
  }
 
  // inicializa array
  for(i=0; i<used; i++){
    cout << i << " "<< n[i].value << " " << n[i].count << "\n\r";
  }
 
  getchar();
  return 0;
}

Comentários

Postagens mais visitadas deste blog

Google Hacking

Netflix não mostra ícone de streaming

Radar no KM 175 da BR101