Home | Java |C # |SQL |Manuales |Videos |
6

Vector con menú

imageEste es un pequeño programa que nos permite acceder a un vector por medio de un menú , se desarrollan las diferentes operaciones básicas de vectores, el paso de parámetros por medio de las funciones , el uso de punteros , la llamada de funciones dentro de funciones y bueno todo lo que se conoce como programación estructurada.

1) Siempre es bueno hacer una glosa de nuestro programa , es una buena práctica de programación.

/*--------------------------------------------------------
-> NOMBRE DEL PROGRAMA : VECTORES CON FUNCIONES
-> DESCRIPCIÒN : clrscr() : limpia la pantalla
getchar(): Espera un enter para avanzar
-> AUTOR : SALAZAR REQUE MIGUEL
-> CODIGO : FISI - 06200036
-> FECHA : 03 - 05 - 07
--------------------------------------------------------*/

2) Importamos las librerías y definimos el tamaño máximo de el vector

  • conio.c : Nos permite el uso de las funciones getchar() , gotoxy() y clrscr() .

#include
#include
#include
#include
#include
#include
#include
#include
#define MAX 100




3) Declaramos nuestras funciones, en este caso se ve el paso por parámetros.


void Menu(int *op);
void LeerVector(int X[MAX],int *dim);
void MostrarVector(int X[MAX],int dim);
void CalcularPromedio(int X[MAX], int dim,int *Suma, float *prom);
void SuperanPromedio(int X[MAX], int dim,float prom);
void BuscarDato(int X[MAX],int dim);
void EliminarXPos(int X[MAX],int *dim);
void EliminarXValor(int X[MAX], int *dim);
void OrdenaVector(int X[MAX],int dim);
void InsertaVector(int X[MAX], int *dim);
void raya();


4) Creamos nuestra función principal, en la cual creamos nuestro menú :



int main()
{
int A[MAX],B[MAX],N,op,Sum,opc1;
char opcion;
float prom;
do{
Menu(&op);
switch(op)
{
case 1 : LeerVector(A,&N);
printf("\n\n\t-->Presione[ENTER]para regresar al men%c\n",163);
getchar();getchar();break;

case 2 : MostrarVector(A,N);
printf("\n\n\t-->Presione[ENTER]para regresar al men%c\n",163);
getchar();getchar();break;

case 3 : CalcularPromedio(A,N,&Sum,&prom);
cout<Presione[ENTER]para regresar al men%c\n",163);
getchar();getchar();break;

case 5 : printf("\n\n\n");
printf("\t%cEl Vector ordenado es :\n\n\n",175);
OrdenaVector(A,N);
getchar();getchar();break;

case 6 : do{
do{
clrscr();
printf("\n\n\n");
printf("\t Menu de eliminar elementos :\n");
printf("\t ==== == ======== ========= =\n\n");
printf("\t[1] Eliminar por posicion\n\n");
printf("\t[2] Eliminar por Valor\n\n");
printf("\t[3] Regresar al menu\n");
printf("\n\n\t-->Que desea hacer ? :");
scanf("%d",&opc1);
}while(opc1<1opc1>3);
switch(opc1)
{
case 1 : EliminarXPos(A,&N);getchar();getchar();break;
case 2 : EliminarXValor(A,&N);getchar();getchar();break;
}
}while(opc1!=3);
getchar();break;

case 7 : InsertaVector(A,&N);
getchar();getchar();break;

}
}while(op!=8);
printf("\n\n\t-->");
system("PAUSE");
return 0;
}

5) La función LeerVector() , lo que hace es recibir un vector de tipo entero y un puntero de dimensión . En este caso se mezcla el uso de las funciones “printf” y “cout” que hacen lo mismo (en la actualidad el último compilador de devc++ solo usa el cin y el cout como funciones de lectura y escritura).
  • En el primer bucle do{…}while() lo que se hace es solicitar al usuario un tamaño para el vector , con las restricciones que ese valor debe ser mayor que “0” y menor que el tamaño máximo del vector .

  • El buclo for (…) lo que hace es llenar el vector : el scanf(…) lee el dato ingresado por el teclado y lo guarda en el A[i] ; el gotoxy coloca el cursor en las posiciones (x,y) : en este caso el valor x es constante mientras que el valor y varia de acuerdo a i .


3) Desarrollamos nuestra función mostrarVector(), a la cual se le pasa como parámetros el vector y la dimensión antes eidas con la función LeerVector(). La función raya() es solo una función desarrollada en la parte inferior y solo sirve para dar un formato a la salida.



image



4) La función calcular promedio recibe como parámetros al vector de enteros , la dimensión y los punteros de suma y promedio , los cuales se actualizan en las últimas líneas.



image



5) Lo más importante de esta función es ver el uso de parámetros , el valor prom calculado con la función anterior es pasado como un valor real a esta función.



image



6) La función buscar dato , comparar un dato ingresado por el usuario con los elementos de la función , en el for si se encuentra el dato se guarda la posición en donde esta el dato. Para hacerlo mas elegante se puede cambiar la bandera j por un valor booleano que se inicialice en false y cuando encuentre el dato lo vuelva true, y en este caso ya no necesitaríamos el for sino sería mas conveniente usar la estructura while().



image



7) La función ordenar vector lo que hace es implementar el método de burbuja (que no es el más eficiente) pero sirve para el ejemplo. (obs : en primer for lo que hace es copiar todo mi vector a un vector temporal , ya que si uso el vector X lo que va a pasar es que cuando salga de mi función el vector va a estar ordenado y lo que se pretende es que solamente se ordene cuando entre en esta función)



image



8) Hay dos formas de implementar la función eliminar : eliminar por posición y eliminar un valor dado del vector.




  • El eliminar por posición , lo primero que hace es solicitar una posición válida al usuario ; luego copia el valor de la posición i+1 en la posición i , para luego actualziar el valor de la dimensión.


image





  • Esta función hace lo mismo que la función anterior a diferencia que primero busca el valor y luego hace los movimientos.




image



9) La función insertar vector lo que hace es mandar al vector de enteros y al puntero a la dimensión , a estas alturas se observará que cada vez que quiero actualizar la dimensión del vector se ingresa como un puntero mientras que cada vez que quiero usar ese valor se ingresa como un valor normal . Es también necesario observar que mientras en la función se ingresa como *dim en la declaración de funciones se ingresa como &dim.



image



10) Y por último desarrollamos nuestro menú.



image



Bueno eso es todo por el momento , he tratado de explicar función por función lo que se hace , si deseas obtener el código solo haz clic en descargar.






Save01





Descargar



anterior inicio siguiente

... Leer más ...
18

Unir dos imágenes con Gimp

soft5

Hola de nuevo , quizás muchas veces haz intentado unir dos imágenes y se te hacía muy complicado ; bueno aquí descubrí una forma muy  fácil obtener esto (y sin usar photoshop) . Antes que nada tienes que tener las imágenes a unir en mi caso serán estas imágenes :

 untitledduke

Suponiendo que la imagen de la derecha no tenga un fondo trasparente , eso lo arreglamos con la siguiente entrada ; una vez que tenemos la imagen trasparente , seguimos lo siguiente :

• Abrimos nuestra imagen de fondo con gimp :

image

• Una vez abierto , obtenemos algo como esto :

image 

• El siguiente paso es añadir nuestra segunda imagen y esto lo logramos haciendo clic derecho en la imagen de fondo → Archivo → Abrir como capas :

image

• Y buscaremos la imagen que vamos a insertar . En muchos casos quizás la imagen a insertar es mas grande que el fondo (como fue el caso del ejemplo)

image

• Esto lo solucionamos con las herramientas de gimp :

image

• Y aquí esta nuestro resultado :

nuevo fondo 

... Leer más ...