Documentos de Académico
Documentos de Profesional
Documentos de Cultura
#include <iostream>
#include <array>
using namespace std;
//----------------------
void leer_montones(Tarray & a, int & t)
{
cout << "Indique cuántos montones desea crear: ";
cin >> t;
cout << "Introduzca el número de cartas de cada uno de esos " << t
<< " montones: ";
for(int i=0; i<t; i++){
cin >> a[i];
}
}
//----------------------
void mostrar(const Tarray & a, int tam)
{ cout << " [ ";
for(int i=0; i<tam; i++){
cout << a[i] << " ";
} cout << "]" << endl;
}
//----------------------
void quitar_carta(Tarray & a, int tam)
{
for(int i=0; i<tam; i++){
if (a[i] > 0){
a[i]--;
}
}
}
//----------------------
bool hay_vacios(const Tarray & a, int tam)
{
int i=0;
while(i<tam and a[i]!=0){
i++;
}
return (i<tam); // SI i<tam -> encontrado uno vacio (con un 0)
}
//----------------------
void eliminar_vacios(Tarray & a, int & tam)
{
int j = 0; // j apuntará a la casilla donde tocaría escribir (y
siempre será igual o menor a la posición por donde se vaya leyendo)
for(int i=0; i<tam; i++){ // i apuntará a la casilla donde toca
leer
if(a[i] > 0){
a[j] = a[i];
j++;
}
}
tam = j;
}
//----------------------
void calcular_frecuencias(const Tarray & a, int tam, Tfrecuencias &
f)
{
for(int i=0; i<MAX_FRECUENCIAS; i++){
f[i] = 0;
}
for(int i=0; i<tam; i++){
f[ a[i] ]++;
}
}
//----------------------
void mostrar_frecuencias(const Tfrecuencias & f)
{
for(int i=0; i<MAX_FRECUENCIAS; i++){
if (f[i] > 0){
cout << "De tamaño " << i << " hay " << f[i] << endl;
}
}
}
//----------------------
int main()
{
Tarray m = {9, 3, 3, 6, 3, 5, 7, 6, 8, 3} ;
int tam_m;
leer_montones(m, tam_m);
mostrar(m, tam_m);
// cout << "Inicialmente hay " << tam_m << " montones, cada uno
con las cartas siguientes: " << endl;
// mostrar(m, tam_m);
eliminar_vacios(m,tam_m);
cout << "Quedan " << tam_m << " montones no vacios, con las cartas
siguientes: " << endl;
mostrar(m,tam_m);
Tfrecuencias f;
cout << "Montones de cada tamaño: " << endl;
calcular_frecuencias(m, tam_m, f );
mostrar_frecuencias(f);
return 0;
}