C/Visual C - Ayuda!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

 
Vista:

Ayuda!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Publicado por Edgar (3 intervenciones) el 22/06/2006 21:02:57
Hola quien me ayuda a cambiar este programa es de una agenda y esta en listas y el profe lo quiere en tablas indexadas, alguien me puede ayudar a modificarlo se los agradeceria mucho!! mi correo es [email protected]



#include <stdio.h>
#include <conio.h>

const MAX = 15;
int x;
int vacio(char l[]);
char primero(char l[]);
char ultimo(char l[]);
int n_elementos(char l[]);
char siguiente(char l[],int p);
int busca(char l[],char x);
void imprime_lista(char l[]);
int llena(char l[]);
int inserta(char l[],int p,char x);
int vacia(char l[]);
int borra_x(char l[],char x);
int borra_x_pos(char l[],int pos);
int pos;
char Lista[15]="\0",elem;
int opcion=0,opcion1=0,opcion2=0;
main(){
do{
clrscr();
for(x=0; x<=60; x++){
printf("*");}
gotoxy(24,7);
printf("1 Insertar elemento");
gotoxy(23,8);
printf(" 2 Eliminar elemento");
gotoxy(23,9);
printf(" 3 Primer elemento");
gotoxy(23,10);
printf(" 4 Ultimo elemento");
gotoxy(23,11);
printf(" 5 Lista vacia");
gotoxy(23,12);
printf(" 6 Lista llena");
gotoxy(23,13);
printf(" 7 Numero de elementos de la lista");
gotoxy(23,14);
printf(" 8 Maximo de elementos permitidos");
gotoxy(23,15);
printf(" 9 Lista de elementos");
gotoxy(23,16);
printf("10 Elemento siguiente dada una posicion");
gotoxy(23,17);
printf("11 Buscar elemento");
gotoxy(23,18);
printf(" 0 Salir");
gotoxy(23,19);
printf(" Dame la opcion de tu preferencia: ");
gotoxy(23,20);
scanf("%d",&opcion);

switch(opcion){
case 1:clrscr();
gotoxy(23,12);
printf("Dame el elemento a guardar: ");
scanf("%s",&elem);
imprime_lista(Lista);
gotoxy(23,12);
printf("En Cual posicion deseas guardar");
gotoxy(23,13);
printf("1 Inicio de la lista");
gotoxy(23,14);
printf("2 Final de la lista");
gotoxy(23,15);
printf("3 Otra posicion entre inicio y final");
gotoxy(23,16);
printf("0 No deseo guardar");
gotoxy(23,17);
printf("Dame la opcion: ");
scanf("%d",&opcion1);
switch(opcion1){
case 1: clrscr();
inserta(Lista,0,elem);
break;
case 2: clrscr();
inserta(Lista,n_elementos(Lista),elem);
break;
case 3: clrscr();
gotoxy(23,12);
printf("Dame la posicion donde se guardara: ");
scanf("%d",&pos);
inserta(Lista,pos,elem);break;
default: clrscr();
gotoxy(23,12);
printf("Opcio no valida");
}
break;
case 2: clrscr();
imprime_lista(Lista);
gotoxy(23,12);printf("como quieres borrar");
gotoxy(23,13); printf("1.- por posicion");
gotoxy(23,14); printf("2.- por elemento");
gotoxy(23,15); printf("Introduce la opcion: ");
scanf("%d",&opcion2);

switch (opcion2){
case 1: clrscr();imprime_lista(Lista);
gotoxy(23,12);printf("mete la posicion: ");
scanf("%d",&pos);
borra_x_pos(Lista,pos);
imprime_lista(Lista);
break;

case 2: clrscr();
imprime_lista(Lista);
gotoxy(23,12);
printf("introduce el elemento a borrar: ");
scanf("%s",&elem);
borra_x(Lista,elem);
imprime_lista(Lista);
break;
}
case 3: clrscr();
gotoxy(23,12);
printf("el primer elemento es: %c", primero(Lista));
break;
case 4: clrscr();
gotoxy(23,12);
printf("el ultimo elemento es: %c", ultimo(Lista));
break;
case 5: clrscr();
if(vacio(Lista)){
gotoxy(23,12);
printf("Vacio: %d",vacio(Lista));}
else{
gotoxy(23,12);
printf("No vacio: %d",vacio(Lista));}
break;
case 6: clrscr();
if(llena(Lista)){
gotoxy(23,12);
printf("Llena: %d",llena(Lista));}
else{
gotoxy(23,12);
printf("no llena: %d",llena(Lista));} break;
case 7: clrscr();
gotoxy(23,12);
printf("numero de elementos de la lista: %d",n_elementos(Lista));
break;
case 8: clrscr();
gotoxy(23,12);
printf("el numero maximo de elementos es: %d",MAX);
break;
case 9: clrscr();
gotoxy(23,12);printf("listado de elementos");
imprime_lista(Lista);break;
case 10: clrscr();
gotoxy(23,12);
printf("dame la posicion del elemento que deseas saber su siguiente:");
scanf("%p",&pos);
gotoxy(23,12);
printf("elemento siguiente: %c",siguiente(Lista,pos));break;
case 11:clrscr();
gotoxy(23,12);
printf("dame el elemento a buscar: ");
scanf("%s",&elem);
if(busca(Lista,elem)==-1){
gotoxy(23,12);
printf("no existe");}
else{
gotoxy(23,12);
printf("el elemento esta en la posicion: %d",busca(Lista,elem));}break;
case 0:clrscr();
gotoxy(23,12);
printf("nos veremos "); break;
default:clrscr();
gotoxy(23,12);
printf("opcion no valida");
}
gotoxy(23,12);
printf("aprieta una tecla para continuar ");
getch();
}while(opcion!=0);
return 0;
}


int vacio(char l[]){
if(l[0]=='\0')
return 1;
return 0;
}

int vacia(char l[]){
l[0]= '\0';
return 1;
}

char primero(char l[]){
return l[0];
}

char ultimo(char l[]){
if(vacio(l))
return '\0';
return(l[n_elementos(l)-1]);
}

int n_elementos(char l[]){
int i=0;
if(vacio(l))
return 0;
while(i<MAX){
if(l[i]=='\0')
return i;
i++;
}
return i;
}

int busca(char l[],char x){
int i=0,res=-1;
if(vacio(l))
return -1;
while(i<MAX){
if(l[i]=='\0')
return res;
if(l[i]==x)
return i;
i++;
}
return res;
}

char siguiente(char l[],int p){
if((vacio(l))||(p<0)||(p>n_elementos(l)-1))
return '\0';
return l[p+1];
}

void imprime_lista(char l[]){
int i=0;
if(vacio(l)){
gotoxy(23,12); printf("no tiene elementos la lista");
}
else
do{
printf(",%c ",l[i]);
i++;
}while(i<n_elementos(l));
}

int llena(char l[]){
if(n_elementos(l)==MAX)
return 1;
return 0;
}

int inserta(char l[],int p,char x){
int pos;
if(vacio(l)&&(p==0)){
l[0]=x;
l[1]='\0';
return 1;
}
if(llena(l)){
printf("la lista esta llena");
return 0;
}
else{
if(n_elementos(l)==MAX-1)
pos = n_elementos(l);
else
pos = n_elementos(l)+1;
for(;pos>p;pos--){
l[pos]=l[pos-1];
}
l[p]=x;
}
return 1;
}

int borra_x(char l[],char x){
int pos;
if(vacio(l)){
printf("no hay nada borrar(lista vacia");
return 0;
}
pos = busca(l,x);
if(pos==-1) return 0;
if(llena(l)){
for(;pos<MAX-1;pos++){
l[pos]=pos+1;
}
l[MAX-1]='\0';
}
else{
for(;pos<n_elementos(l);pos++){
l[pos]=l[pos+1];
}
}
return 1;
}

int borra_x_pos(char l[],int pos){
if(vacio(l)){
printf("no se puede borrar lista vacia");
return 0;
}
if((pos<=-1)&&(pos>MAX-1)) return 0;
if(llena(l)){
for(;pos<MAX-1;pos++){
l[pos]=pos+1;
}
l[MAX-1]='\0';
}
else{
for(;pos<n_elementos(l);pos++){
l[pos]=l[pos+1];
}
}
return 1;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder