PROGRAMA QUE CREA NÚMEROS
ALEATORIOS Y LOS ORDENA (Método de Burbuja)
Código del programa:
//Cabeceras
standars
#include <stdio.h> //include printf y scanf
#include <conio.h>
//include getch
//Otras cabeceras
#include <stdlib.h>//incluye
las funciones aleatorias, entre otras
#include <time.h>//incluye
las funciones temporales
//Declaro una matriz de 1000 numeros
enteros
int numeros[1000];
//Declaro dos funciones para pensar y ordenar los n£meros
void pensarnumeros(void);
void ordenarnumeros(void);
void buscarmayormenor(void);
void buscarrepetidos(void);
//declaro las variables para guardar la cantidad de numeros
int N,i,j;
void main(void)
{
//Limpio la pantalla
clrscr();
printf("\n***************************************************");
printf("\n* Programa
que crea y ordena N n£meros aleatorios *");
printf("\n***************************************************");
printf("\n\n ¨Cuantos n£meros
desea crear aleatoriamente? (max
1000) N=");
//scaneo la entrada del usuario
scanf("%d",&N);
//Llamo a la instruccion que
piensa los numeros
pensarnumeros();
ordenarnumeros();
buscarmayormenor();
buscarrepetidos();
//Instruccion que mantiene la
ventana abierta hasta que pulsas una tecla
getch();
}
void pensarnumeros(void)
{
int conta=0;
//funcion que inicializa las
secuencias de los numeros aleatorios
srand((unsigned)time(NULL));
//imprimo un cambio de linea por
pantalla
printf("\nCreados:\n");
//Los imprimo de 15 en 15
for(i=0;i<N;i++){
conta++;
numeros[i]=rand()/327;
printf(" %d ",numeros[i]);
//Cuando al hacer la division
entre 15 me da de resto 0 pongo un cambio de linea
if(conta % 15 == 0)printf("\n");
}
}
void ordenarnumeros(void)
{
//Ordeno los numeros de menor a
mayor
int j,k,t,conta=0;
for(j=1;j<N;j++)
for(k=0;k<N-1;k++)
{
if(numeros[k+1]<numeros[k])
{
t=numeros[k];
numeros[k]=numeros[k+1];
numeros[k+1]=t;
}
}
printf("\nOrdenados:\n");
for(i=0;i<N;i++){
conta++;
printf(" %d ",numeros[i]);
if(conta % 15 == 0)printf("\n");
}
}
void buscarmayormenor()
{ int mayor,menor;
mayor=numeros[0];
menor=numeros[0];
for(i=0;i<N;i++)
{
if(mayor<numeros[i])mayor=numeros[i];
if(menor>numeros[i])menor=numeros[i];
}
printf("\n El numero
menor generado es %d y el mayor es %d. ",menor,mayor);
}
void buscarrepetidos()
{
int repes[1000];
int t;
for(i=0;i<N;i++)repes[i]=0;
for(i=0;i<N;i++)repes[numeros[i]]++;
printf("\nImprimo los n£meros que se
aparecen m s de dos veces: \n\n");
for(i=0;i<N;i++)
{
if(repes[i]>1)
{
printf("n=%d
- rep=%d ",i,repes[i]);
if(i
% 4 == 0) printf("\n");
}
}
}