#include <stdio.h>
#include <time.h> // para el time() // esto es para el tema del numero aleatorio
#include <stdlib.h> // para el srand() // esto es para el tema del numero aleatorio
#include <limits.h> // esto es para usar INT_MAX
int pedirnumero(char *,int); // declarar la funcion de pedir numero con el texto que queramos
void escribe_menu(int *);
int leeropcionmenu();
void cargatabla10elementos(int *);
void cargartabla10elementosordenadosmenoramayor(int *);
void rotarlatablaunaposicionizquierda(int *);
void rotarlatablaunaposicionderecha(int *);
void ordenarlatabladescendentemente(int *);
void ordenarlatablaascendente(int *);
void rellenarlatablaconnumerosaleatorios(int *);
int main(int argc, char **argv)
{
int opcion=1;
int tabla[10];
int contador=0;
srand(time(NULL)); // reiniciar rand con la variable tiempo
// Pongo todos los numeros de la tabla a cero
while (contador<10) {
tabla[contador]=0;
contador++;
}
escribe_menu(tabla);
while (opcion!=0) {
//presentacion del menu
opcion=leeropcionmenu();
switch(opcion) {
case 1:
cargatabla10elementos(tabla);
escribe_menu(tabla);
break;
case 2:
cargartabla10elementosordenadosmenoramayor(tabla);
escribe_menu(tabla);
break;
case 3:
rotarlatablaunaposicionizquierda(tabla);
escribe_menu(tabla);
break;
case 4:
rotarlatablaunaposicionderecha(tabla);
escribe_menu(tabla);
break;
case 5:
ordenarlatabladescendentemente(tabla);
escribe_menu(tabla);
break;
case 6:
ordenarlatablaascendente(tabla);
escribe_menu(tabla);
break;
case 7:
rellenarlatablaconnumerosaleatorios(tabla);
escribe_menu(tabla);
break;
case 0:
opcion=0;
break;
}
//escribetabla(tabla);
}
printf("Fin del programa");
return 0;
}
//-------------------------------------
// Definicion de funciones
//-------------------------------------
int pedirnumero(char *texto,int contador)
{
int resul=0;
printf("%s (%dº):",texto,contador+1);
scanf("%d",&resul);
return resul;
}
//-----------------escribir menu ---------------
void escribe_menu(int *tabla)
{
int c=0;
while (c<30) {
printf("\n");
c++;
}
printf("*****************************************************************\n");
printf("* Menu: *\n");
printf("* 1-Cargar la tabla con 10 numeros *\n");
printf("* 2-Cargar la tabla con 10 numeros ordenados de menor a mayor *\n");
printf("* 3-Rotar la tabla una posicion a la izquierda *\n");
printf("* 4-Rotar la tabla un posición a la derecha *\n");
printf("* 5-Ordenar la tabla descendientemente *\n");
printf("* 6-Ordenar la tabla ascendentemente *\n");
printf("* 7-Rellenar la tabla con numeros aleatorios *\n");
printf("* 0-Salir *\n");
printf("* *\n");
printf("* Tabla actual *\n");
c=0;
while (c<10) {
printf("%d ,",tabla[c]);
c++;
}
printf("\n");
printf("* *\n");
printf("*****************************************************************\n");
}
//----------------------------------------------
int leeropcionmenu()
{
int salir=0;
int valor;
valor=-1;
while (salir==0) {
printf("Escribe la opción: \r"); // borra los numeros si ha introducido algo
printf("Escribe la opción:");
scanf("%d",&valor);
if ((valor>-1) && (valor<8)) {
salir=1;
}
}
return valor;
}
//-------------------------------------------------------------
void cargatabla10elementos(int *tabla)
{
int elementos=0;
while (elementos<10) {
tabla[elementos]=pedirnumero("Escribe el numero",elementos);
elementos++;
}
}
//------------------------------------------------------
void cargartabla10elementosordenadosmenoramayor(int *tabla)
{
int elementos=0;
int valor=0;
int pos=0;
int indice=0;
// tengo que poner cada valor de la
//tabla al maximo, para que lo ordene correctamente
while (elementos<10) {
tabla[elementos]=INT_MAX;
elementos++;
}
elementos=0;
while (elementos<10) {
// obtener el numero
printf("Escribe el elmento %dº:",elementos+1);
scanf("%d",&valor);
//determino la posicion
pos=0;
while ((tabla[pos]<valor) && (pos<9)) {
pos++;
}
// insertar el numero en la posicion obtenida
indice=9;
while (indice>pos) {
tabla[indice]=tabla[indice-1];
indice--;
}
tabla[pos]=valor;
elementos++;
}
}
//-------------------------------rotar la tabla una posicion izquierda
void rotarlatablaunaposicionizquierda(int *tabla)
{
int pos=9;
int valor=tabla[9];
while (pos>0) {
tabla[pos]=tabla[pos-1];
pos--;
}
tabla[0]=valor;
}
//-------------------------------rotar la tabla una posicion derecha
void rotarlatablaunaposicionderecha(int *tabla)
{
int pos=0;
int valor=tabla[0];
while (pos<9) {
tabla[pos]=tabla[pos+1];
pos++;
}
tabla[9]=valor;
}
//---------------------------------ordenarlatabladescendentemente(tabla
void ordenarlatabladescendentemente(int *tabla)
{
int num=0;
int aux=0;
int c=0;
while (num<10) {
c=num+1;
while (c<10) {
if (tabla[num]>tabla[c]) {
} else {
aux=tabla[c];
tabla[c]=tabla[num];
tabla[num]=aux;
}
c++;
}
num++;
}
}
//-------------------------------------------------------------
void ordenarlatablaascendente(int *tabla)
{
int num=0;
int aux=0;
int c=0;
while (num<10) {
c=num+1;
while (c<10) {
if (tabla[num]<tabla[c]) {
} else {
aux=tabla[c];
tabla[c]=tabla[num];
tabla[num]=aux;
}
c++;
}
num++;
}
}
//---------------------------------------------------------
void rellenarlatablaconnumerosaleatorios(int *tabla)
{
int c=0;
while (c<10) {
tabla[c]=1+(int) ((100.0)*rand()/(RAND_MAX+1.0));
c++;
}
}
No hay comentarios:
Publicar un comentario