Expand|Select|Wrap|Line Numbers
- # include<stdlib.h>
- # include<conio.h>
- # include<stdio.h>
- # define MAXCADENA 8
- # define MAXREN 3
- # define MAXCOL 4
- int validato(int valor);
- void ini_renmatdin (int *ap_mat);
- void ini_colmatdin (int *);
- void ini_desmatdin (int *);
- int ins_ini_linealdin(int **ap_ultimo, int *ap_fin, int valor);
- int ins_fin_linealdin(int *ap_mat, int **ap_ultimo, int *ap_fin, int valor);
- int eli_ini_linealdin(int *ap_mat, int **ap_ultimo, int *ap_fin);
- int eli_fin_linealdin(int *ap_mat, int **ap_ultimo, int *ap_fin);
- void desplevec(int *ap_vec, int *ap_ultimo);
- void main (void)
- {
- clrscr();
- int *ap_cad;
- int *ap_ultimo;
- int *ap_fin;
- int *aux;
- int *ap_aux;
- int valor;
- int exito;
- int otro;
- int s;
- int i;
- ap_cad=(int*)malloc(sizeof(MAXCADENA));
- ap_ultimo=ap_cad-1;
- ap_fin=ap_cad+MAXCADENA-1;
- if(!ap_cad)
- {
- printf("\ ERROR: No hay espacio");
- }
- else
- {
- printf("\n 1.- Inicializar matriz por renglon");
- printf("\n 2.- Inicializar matriz por columna");
- printf("\n 3.- Insertar por el inicio");
- printf("\n 4- Insertar por el final");
- printf("\n 5.- Eliminar por el inicio");
- printf("\n 6.- Eliminar por el final");
- printf("\n Elija una opcion");
- scanf("%d",&s);
- switch(s)
- {
- case 1:
- ini_renmatdin (ap_mat);
- printf ("\n Exito si se inicializo");
- break;
- case 2:
- ini_colmatdin (ap_mat);
- printf ("\n Exito si se inicializo");
- break;
- case 3:
- ap_ultimo=ap_cad;
- ap_fin= ap_cad+MAXCADENA;
- ap_aux=ap_ultimo;
- *ap_ultimo=(*ap_ultimo)+1;
- do
- {
- printf("\n Ingresa un valor: ");
- scanf("%d", &valor);
- validato(valor);
- if(i==1)
- {
- exito=ins_ini_linealdin(&ap_ultimo,ap_fin,valor);
- ini_renmatdin (ap_mat);
- if(exito==1)
- {
- printf("\n Dato insertado");
- }
- else
- {
- if(exito==0)
- {
- printf("\n Overflow");
- }
- else
- {
- printf("\n Error");
- }
- }
- printf("\n Desas Ingresar Otro dato \n 1)No \n 2)Si");
- scanf("%d",&otro);
- }
- else
- {
- printf("\n Valor no valido");
- }
- }while(otro==2);
- break;
- case 4:
- ap_ultimo=ap_cad;
- ap_fin= ap_cad+MAXCADENA;
- do
- {
- printf("\n Ingresa un valor: ");
- scanf("%d", &valor);
- validato(valor);
- if(i==1)
- {
- exito=ins_fin_linealdin(ap_cad,&ap_ultimo,ap_fin,valor);
- if(exito==1)
- {
- printf("\n Dato insertado");
- }
- else
- {
- if(exito==0)
- {
- printf("\n Overflow");
- }
- else
- {
- printf("\n Error");
- }
- }
- printf("\n Desas Ingresar Otro dato \n 1)No \n 2)Si");
- scanf("%d",&otro);
- }while(otro==2);
- break;
- case 5:
- ap_ultimo=ap_cad;
- ap_fin= ap_cad+MAXCADENA;
- aux=ap_cad;
- *ap_ultimo=(*ap_ultimo)+1;
- ap_fin= ap_cad+MAXCADENA;
- do
- {
- printf("\n Ingresa un valor: ");
- scanf("%d", &valor);
- validato(valor);
- if(i==1)
- {
- exito=eli_ini_linealdin(ap_cad,&ap_ultimo,ap_fin);
- if(exito==1)
- {
- printf("\n Dato insertado");
- }
- else
- {
- if(exito==0)
- {
- printf("\n Underflow");
- }
- else
- {
- printf("\n Error");
- }
- }
- }
- printf("\n Desas Ingresar Otro dato \n 1)No \n 2)Si");
- scanf("%d",&otro);
- }while(otro==2);
- break;
- case 6:
- ap_ultimo=ap_cad;
- ap_fin= ap_cad+MAXCADENA;
- do
- {
- printf("\n Ingresa un valor: ");
- scanf("%d", &valor);
- validato(valor);
- if(i==1)
- {
- exito=eli_fin_linealdin(ap_cad,&ap_ultimo,ap_fin);
- if(exito==1)
- {
- printf("\n Dato insertado");
- }
- else
- {
- if(exito==0)
- {
- printf("\n Underflow");
- }
- else
- {
- printf("\n Error");
- }
- }
- }
- printf("\n Desas Ingresar Otro dato \n 1)No \n 2)Si");
- scanf("%d",&otro);
- }while(otro==2);
- break;
- default:printf("ERROR intente con los valores indicados en el menu");
- }
- getch();
- }
- }
- int validato(int valor)
- {
- if((valor<0)||(valor>10))
- {
- i=0;
- }
- else
- {
- i=1;
- }
- return i;
- }
- void ini_renmatdin (int *ap_mat)
- {
- /*Inicializar una matriz por renglon en un arreglo dinamico*/
- int *ap_aux;
- ap_aux=ap_mat;
- while(ap_aux<=(ap_mat+(MAXREN*MAXCOL-1)))
- {
- *ap_aux=0;
- ap_aux=ap_aux+1;
- }
- ini_desmatdin (ap_mat);
- }
- void ini_colmatdin (int *ap_mat)
- {
- /*Inicializar una matriz por columna en un arreglo dinamico*/
- int *ap_ren;
- int *ap_col;
- ap_col=ap_mat;
- ap_ren=ap_mat;
- while(ap_col<=(ap_mat+(MAXCOL-1)))
- {
- ap_ren=ap_col;
- while(ap_ren<=(ap_mat+(MAXREN+MAXCOL-1)))
- {
- *ap_ren=0;
- ap_ren=ap_ren+MAXCOL;
- }
- ap_col=ap_col+1;
- ini_desmatdin (ap_mat);
- }
- }
- void ini_desmatdin (int *ap_mat)
- {
- /*Desplegar una matriz por columna en un arreglo dinamico*/
- int *ap_aux;
- ap_aux=ap_mat;
- while(ap_aux<=(ap_mat+(MAXREN*MAXCOL-1)))
- {
- printf("\n El contenido es %d en la direccion %u : ",*ap_aux,ap_aux);
- ap_aux=ap_aux+1;
- }
- }
- int ins_ini_linealdin(int **ap_ultimo, int *ap_fin, int valor)
- {
- /*Insertar un elemento por el inicio en un arreglo de caracteres dinamico
- Recibe:ap_ultimo, el apuntador al ultimo elemento, apuntador al final del arreglo y el
- dato a insertar.
- Envia: nuevo apuntador al ultimo
- -1=error, 0=overflow, 1=exito*/
- int exito;
- if(ap_fin<=NULL)
- { exito=-1;
- printf("error");
- }
- else
- {
- if(*ap_ultimo<=NULL)
- {
- exito=-1;
- printf("error");
- }
- else
- {
- if(*ap_ultimo>=ap_fin)
- {
- exito=0;
- }
- else
- {
- (*ap_ultimo)++;
- **ap_ultimo=valor;
- exito=1;
- while (ap_aux>=ap_cad)
- {
- (ap_aux+1)=(ap_aux);
- (*ap_aux)--;
- }(*ap_aux<(*ap_ultimo-1));
- *ap_aux=valor;
- exito=1;
- }
- }
- desplevec(ap vec,ultimo);
- return exito;
- }
- int ins_fin_linealdin(int *ap_cad, int **ap_ultimo, int *ap_fin, int valor)
- {
- /*Insertar un elemento por el final en un arreglo de caracteres dinamico
- Recibe:ap_ultimo, el apuntador al ultimo elemento, apuntador al final del arreglo
- dato a insertar.
- Envia: nuevo apuntador al ultimo
- -1=error, 0=overflow, 1=exito*/
- int exito;
- if(ap_fin<=NULL)
- { exito=-1;
- printf("error");
- }
- else
- {
- if(*ap_ultimo<=NULL)
- {
- exito=-1;
- printf("error");
- }
- else
- {
- if(*ap_ultimo>=ap_fin)
- {
- exito=0;
- }
- else
- {
- (*ap_ultimo)++;
- **ap_ultimo=valor;
- exito=1;
- }
- }
- }
- desplevec(ap vec,ultimo);
- return exito;
- }
- int eli_ini_linealdin(int *ap_cad, int **ap_ultimo, int *ap_fin)
- {
- /*Eliminar un elemento por el inicio en un arreglo de caracteres dinamico
- Recibe:ap_ultimo, el apuntador al ultimo elemento, apuntador al final del arreglo.
- Envia: nuevo apuntador al ultimo
- -1=error, 0=underflow, 1=exito*/
- int exito;
- if(ap_fin<=NULL)
- {
- exito=-1;
- printf("error");
- }
- else
- {
- if(*ap_ultimo<=NULL)
- {
- exito=-1;
- printf("error");
- }
- else
- {
- if(*ap_ultimo<ap_cad)
- {
- exito=0;
- }
- else
- {
- do
- {
- (ap_cad+aux)=(ap_cad+aux+1);
- (*aux)++;
- }while(*aux<(*ap_ultimo-1);
- exito=1;
- }
- }
- }
- desplevec(ap vec,ultimo);
- return exito;
- }
- int eli_fin_linealdin(int *ap_cad, int **ap_ultimo, int *ap_fin)
- {
- /*Eliminar un elemento por el final en un arreglo de caracteres dinamico
- Recibe:ap_ultimo, el apuntador al ultimo elemento, apuntador al final del arreglo.
- Envia: nuevo apuntador al ultimo
- -1=error, 0=underflow, 1=exito*/
- int exito;
- if(ap_fin<=NULL)
- {
- exito=-1;
- printf("error");
- }
- else
- {
- if(*ap_ultimo<=NULL)
- {
- exito=-1;
- printf("error");
- }
- else
- {
- if(*ap_ultimo<ap_cad)
- {
- exito=0;
- }
- else
- {
- **ap_ultimo=0
- (*ultimo)--;
- exito=1;
- }
- }
- }
- desplevec(ap vec,ultimo);
- return exito;
- }
- void desplevec(int *ap vec, int *ultimo)
- {
- while(ap_vec!=ultimo)
- {
- printf("%d",*ap_vec);
- ap_vec++;
- }
- }