-" Si esto le parece japonés adivine que dice acá: あなたのお母さんは私のガールフレンドです =D "

Ejercicio 6 (de entrega) , Inserción de elementos en un arreglo

| domingo, 22 de agosto de 2010
El mayor problema de éste ejercicio es que lo cambiaron al paso y la profesora de práctica nunca explicó de qué se trata el nuevo enunciado. Todos mis compañeros tienen su versión y ésta es la mía:

/*
* Universidad Nacional de San Juan
* Facultad de Ciencias Exactas Físicas y naturales
* Programación Procedural año 2010
* Iván Neira Reg. 13583
*
* Práctico 1
* Ejercicio 6:
* "Generar un arreglo de 10 componentes enteras a través de un menú de opciones que:
* a) Permita seleccionar la posición en donde se desea cargar el elemento leído.
* 1) Al principio.
* 2) Al final (a continuación de la última componente)
* 3) Intermedia, en ese caso, leer la posición y validarla (entre 1 y 8)
* (que no supere la posición de la última componente agregada)
* b) Mostrar las posiciones de las componentes libres del arreglo.
*
* Nota: Si la posición que se ingresa está ocupada, desplazar las componentes hacia la
* derecha de modo que sea posible la inseción. Emitir un mensaje cuando no sea posible
* la inserción.
*
* Disponible online en: http://ivpaste.com/v/uKK7uvOI
*/

#include <stdio.h>


int main(int argc, char** argv)
{
int arreglo[10],que,donde,posicion,i;

//Inicializacion del arreglo

for(i=0;i<10;i++)
{
arreglo[i]=-1;
}

//Comienzo del programa

//Muestra arreglo
printf("\n|");
for(i=0;i<10;i++)
{
if(arreglo[i]==-1)printf("%dLibre|",i);
else printf("%d|",arreglo[i]);
}
printf("\n");

//Comienza ingreso

printf("\nIngrese número entero a insertar, o un negativo para terminar\n-numero-");
scanf("%d",&que);
fflush(stdin);

while(que>=0)
{
//Menu
printf("\nIngrese lugar donde desea insertarlo\n1- Al principio\n2- Al final\n3- Intermedio\n4- Reintentar\n-lugar-");
scanf("%d",&donde);

switch(donde)
{
//Inserta en la primer posicion o posicion 0 (cero)
case 1:
arreglo[0]=que;
printf("\nNúmero %d insertado en la primera posición\n",que);
break;
//Inserta en la última posición o posición 9
case 2:
arreglo[9]=que;
printf("\nNúmero %d insertado en la última posición\n",que);
break;
//Inserción intermedia
case 3:
//Pregunta posicion en donde ingresar
printf("\nIngrese posición entre 1 y 8 inclusive\n-posicion-");
scanf("%d",&posicion);
fflush(stdin);
//Verifica que el rango sea correcto
while((posicion<1)||(posicion>8))
{
printf("\nFuera de rango, ingrese nuevamente\n-posicion-");
scanf("%d",&posicion);
fflush(stdin);
}
//Verifica que el lugar no este ocupado
while((arreglo[posicion]!=-1)&&(posicion<=8))
{
printf("\nPosicion %d ocupada\n",posicion);
posicion++;
}
//Agrega el elemento si hubo un espacio libre
if(posicion!=9)
{
arreglo[posicion]=que;
printf("\nNúmero %d insertado en la posición %d\n",que, posicion);
}
else printf("\nNo se pudo insertar el elemento %d, no hay lugar libre\n",que);
break;

//En caso que se equivoque el numero a insertar
case 4:

printf("\n**Reintentar**\n");
break;
//Easter Egg =)
case 99:
printf("\nPongame un 10 =)\n");
break;

}

//Muestra arreglo
printf("\n|");
for(i=0;i<10;i++)
{
if(arreglo[i]==-1)printf("%dLibre|",i);
else printf("%d|",arreglo[i]);
}
printf("\n");

//Siguiente ingreso
printf("\nIngrese número entero a insertar, o un negativo para terminar\n-numero-");
scanf("%d",&que);
fflush(stdin);


}


}


Y hay que entregarlo el Lunes a la tarde así que espero que esté bien porque no pienso modificarlo.

Saludos!

**ACTUALIZACIÓN**
El ejercicio está aprobado pero la profesora dijo que simplifiqué mucho el ejercicio... y si... me lo esperaba, me gusta mas asi, está mas práctico.

0 comentarios:

Publicar un comentario

licencia

Licencia de Creative Commons
Ejercicios de programación by Iván Neira (ae) is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
Based on a work at paraserlicenciado.blogspot.com.