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");

 }

}

}