|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Mensajes - tany666
Páginas: [1]
1
« en: Jueves 7 de Marzo de 2002, 12:38 »
nECEITO QUE EN VEZ DE QUE LA INFORMACION VAYA A FICHEROS , ESTE ECHO IGUAL CON ESTRUCTURAS Y PUNTEROS O SI TIENES UN PROGRAMA SIMILAR A ESTE CON ESTRUCTURAS Y PUNTEROS ME LE DEJES. GRACIASSSSSSSSSSS
2
« en: Jueves 7 de Marzo de 2002, 10:16 »
Necesito ayuda para modificar este código de estructuras y ficheros para pasaarlo a estructuras con punteros. Todo igual pero cambiando los ficheros por punteros. Porfavor me juego mucho. Muchas graciasssssssssss. El código es:
#include <conio.h> #include <stdio.h> #define MAX 1000 #define LV 15
unsigned char menu(); void altas(); void bajas(); void modificaciones(); void consultas(); void pantalla_datos(); void cabeceras(); struct limites desde_hasta(); char pregunte_s_n(char *); char tipos[5][25]={"contado","normal","preferente","especial","extra"}; int descuentos[5]={0,5,10,20,30}; struct cliente { char nombre[15]; char direccion[30]; int tipo; char control_alta; }; struct limites { int inicio; int fin; };
main() { unsigned char opcion; while(toupper(opcion=menu())!='F') { switch(opcion) { case '1':altas(); break; case '2':bajas(); break; case '3':modificaciones(); break; case '4':consultas(); break; } } }
unsigned char menu() { unsigned char op; clrscr(); gotoxy(10,10);printf("MENU DE MANTENIMIENTO"); gotoxy(10,11);printf("====================="); gotoxy(14,14);printf("1-->Altas"); gotoxy(14,15);printf("2-->Bajas"); gotoxy(14,16);printf("3-->Modificaciones"); gotoxy(14,17);printf("4-->Consultas"); gotoxy(14,20);printf("F-->Fin"); gotoxy(10,23);printf("Introduzca opcion:"); while(op=toupper(getch()),(op<'1'||op>'4')&&op!='F'); return(op); }
void altas() { FILE *canal; struct cliente cli; int num_cli; while((canal=fopen("CLIENTES","r+b"))==NULL) { canal=fopen("CLIENTES","wb"); fclose(canal); } do { pantalla_datos(); gotoxy(21,7); do { gotoxy(21,7);printf(" "); gotoxy(21,7);scanf("%d",&num_cli); }while(num_cli<1||num_cli>MAX); cli.control_alta='0'; fseek(canal,(num_cli-1)*sizeof(struct cliente),SEEK_SET); fread(&cli,sizeof(struct cliente),1,canal); if(cli.control_alta=='1') { gotoxy(10,20);printf("Cliente ya existente"); continue; } gotoxy(21,9);scanf("%s",cli.nombre); gotoxy(21,11);scanf("%s",cli.direccion); do { gotoxy(21,13);printf(" "); gotoxy(21,13);scanf("%d",&cli.tipo); }while(cli.tipo<1||cli.tipo>5); gotoxy(25,13);printf("Cliente %s",tipos[cli.tipo-1]); gotoxy(65,13);printf("%d",descuentos[cli.tipo-1]); if(pregunte_s_n("Correcto?(S/N):")=='S') { cli.control_alta='1'; fseek(canal,(num_cli-1)*sizeof(struct cliente),SEEK_SET); fwrite(&cli,sizeof(struct cliente),1,canal); } }while(pregunte_s_n("M s altas?(S/N):")=='S'); fclose(canal); }
void bajas() { FILE *canal; struct cliente cli; int num_cli; while((canal=fopen("CLIENTES","r+b"))==NULL) { canal=fopen("CLIENTES","wb"); fclose(canal); } do { pantalla_datos(); gotoxy(21,7); do { gotoxy(21,7);printf(" "); gotoxy(21,7);scanf("%d",&num_cli); }while(num_cli<1||num_cli>MAX); cli.control_alta='0'; fseek(canal,(num_cli-1)*sizeof(struct cliente),SEEK_SET); fread(&cli,sizeof(struct cliente),1,canal); if(cli.control_alta!='1') { gotoxy(10,20);printf("Cliente no existente"); continue; } gotoxy(21,9);printf("%s",cli.nombre); gotoxy(21,11);printf("%s",cli.direccion); gotoxy(21,13);printf("%d",cli.tipo); gotoxy(25,13);printf("Cliente %s",tipos[cli.tipo-1]); gotoxy(65,13);printf("%d",descuentos[cli.tipo-1]); if(pregunte_s_n("Confirma la baja?(S/N):")=='S') { cli.control_alta='0'; fseek(canal,(num_cli-1)*sizeof(struct cliente),SEEK_SET); fwrite(&cli,sizeof(struct cliente),1,canal); } }while(pregunte_s_n("M s bajas?(S/N):")=='S'); fclose(canal); }
void modificaciones() { FILE *canal; struct cliente cli; int num_cli; while((canal=fopen("CLIENTES","r+b"))==NULL) { canal=fopen("CLIENTES","wb"); fclose(canal); } do { pantalla_datos(); gotoxy(21,7); do { gotoxy(21,7);printf(" "); gotoxy(21,7);scanf("%d",&num_cli); }while(num_cli<1||num_cli>MAX); cli.control_alta='0'; fseek(canal,(num_cli-1)*sizeof(struct cliente),SEEK_SET); fread(&cli,sizeof(struct cliente),1,canal); if(cli.control_alta!='1') { gotoxy(10,20);printf("Cliente no existente"); continue; } gotoxy(21,9);printf("%s",cli.nombre); gotoxy(21,11);printf("%s",cli.direccion); gotoxy(21,13);printf("%d",cli.tipo); gotoxy(25,13);printf("Cliente %d",tipos[cli.tipo-1]); gotoxy(65,13);printf("%d",descuentos[cli.tipo-1]); if(pregunte_s_n("Modificar nombre?(S/N):")=='S') { gotoxy(21,9);printf(" "); gotoxy(21,9);scanf("%s",cli.nombre); } if(pregunte_s_n("Modificar direccion?(S/N):")=='S') { gotoxy(21,11);printf(" "); gotoxy(21,11);scanf("%s",cli.direccion); } if(pregunte_s_n("Modificar tipo?(S/N):")=='S') { gotoxy(21,13);printf(" "); gotoxy(25,13);printf(" "); gotoxy(65,13);printf(" "); do { gotoxy(21,13);printf(" "); gotoxy(21,13);scanf("%d",&cli.tipo); }while(cli.tipo<1||cli.tipo>5); gotoxy(25,13);printf("Cliente %s",tipos[cli.tipo-1]); gotoxy(65,13);printf("%d",descuentos[cli.tipo-1]); } if(pregunte_s_n("Confirma la modificacion?(S/N):")=='S') { fseek(canal,(num_cli-1)*sizeof(struct cliente),SEEK_SET); fwrite(&cli,sizeof(struct cliente),1,canal); } }while(pregunte_s_n("M s modificaciones?(S/N):")=='S'); fclose(canal); }
void consultas() { struct limites limite; FILE *canal; struct cliente cli; int num_cli,i; while((canal=fopen("CLIENTES","r+b"))==NULL) { canal=fopen("CLIENTES","wb"); fclose(canal); } limite=desde_hasta(); num_cli=limite.inicio; while(num_cli<=limite.fin) { i=0; cabeceras(); while(i<LV&&num_cli<=limite.fin) { cli.control_alta='0'; fseek(canal,(num_cli-1)*sizeof(struct cliente),SEEK_SET); fread(&cli,sizeof(struct cliente),1,canal); if(cli.control_alta=='1') { printf("%3d%-20s%-20s Cliente %-15s%2dn",num_cli,cli.nombre, cli.direccion,tipos[cli.tipo-1],descuentos[cli.tipo-1]); i++; } num_cli++; } if(pregunte_s_n("¨Continuar?(S/N):")=='N') break; } fclose(canal); }
void pantalla_datos() { clrscr(); gotoxy(35,2);printf("DATOS DE CLIENTES"); gotoxy(35,3);printf("================="); gotoxy(5,7);printf("N§ DE CLIENTE:"); gotoxy(5,9);printf(" NOMBRE: "); gotoxy(5,11);printf(" DIRECCION: "); gotoxy(5,13);printf(" TIPO: "); gotoxy(50,13);printf("DESCUENTO(%):"); gotoxy(3,16);printf("TIPOS DE CLIENTES:n"); printf("1->contado,2->normal,3->preferente,4->especial,5->extra"); }
char pregunte_s_n(char *cadena) { char respuesta; gotoxy(10,22);printf("%s",cadena); while(respuesta=toupper(getch()),respuesta!='S'&&respuesta!='N'); gotoxy(10,22);printf("%50s",""); return(respuesta); }
struct limites desde_hasta() { struct limites l; clrscr(); gotoxy(10,10);printf("Visualizar desde:");scanf("%d",&l.inicio); if(l.inicio==0) l.inicio=1; gotoxy(10,12);printf("Visualizar hasta: ");scanf("%d",&l.fin); if(l.fin==0||l.inicio>l.fin||l.fin>MAX) l.fin=MAX; clrscr(); return l; }
void cabeceras() { clrscr(); printf("%-20s %-28s %-10s %12sn","NOMBRE","DIRECCION","TIPO","DESCUENTO"); printf("=======================================================================n"); }
3
« en: Jueves 7 de Marzo de 2002, 09:18 »
BORCA muchisimas gracias por todo, pero en realidad no eran listas eran punteros a estructuras, pero bueno no pasa nada muchas gracias. UN BESAZO MUAKKKKK:D:D:D:D
4
« en: Jueves 7 de Marzo de 2002, 09:17 »
si esto te puede servir mas bien como ejemplo y mirar como funcionan las listas...este ejemplo es de listas circulares :
# ifndef PA_h # define PA_h
#include <stdio.h> #include <stdlib.h> #include <iostream.h> #include <conio.h>
#define TIPO int
typedef struct nodo { TIPO info; struct nodo *enlace; struct nodo *enlace1; }LISTA;
int menu(void);
void inserta_final(LISTA **ptr, char elemento); void inserta_or(LISTA **ptr,LISTA **p, char elemento); void orden(LISTA **ptr,LISTA **p); void elim_ele_lista(LISTA **ptr); void buscar_ele(LISTA **ptr,LISTA **p, char elemento); void mostrar_elementos(LISTA **ptr,LISTA **p);
void inserta_final(LISTA **ptr,LISTA **p, char elemento) { LISTA *p1, *p2,*aux;
p1 = *ptr; if(p1 == NULL) { p1 = new(LISTA); if (p1 != NULL) { p1->info = elemento; p1->enlace = p1; p1->enlace1 = p1;
*ptr = p1; *p = p1; } } else { aux=p1;
while(p1->enlace != aux) p1 = p1->enlace; p2 = new(LISTA); if(p2 != NULL) { p2->info = elemento; p2->enlace = aux; p1->enlace = p2; p2->enlace1 = p1; aux->enlace1 =p2; *p = p2; } } }
int menu(void) { int car; clrscr(); printf("n opcion 1 insertar final elementos en la lista "); printf("n opcion 2 sacar un elemento de la lista"); printf("n opcion 3 insertar ordenadamente"); printf("n opcion 4 ordenar inserci¢n"); printf("n opcion 5 buscar elemento"); printf("n opcion 6 mostrar elementos"); printf("n opcion 7 Exitn"); do{ car=getche();
}while(car<49||car>55); return car; }
void elim_ele_lista(LISTA **ptr,LISTA **p) { LISTA *aux,*aux1,*aux2;
aux=*ptr;
if(aux!=NULL){ if(aux->enlace!=aux){ *ptr=aux->enlace; aux1=*ptr; aux1->enlace1=aux->enlace1; aux2=*p; aux2->enlace=aux1; printf("nnEl elemento eliminado es %c",aux->info); delete(aux); }
else { printf("nnEl elemento eliminado es %c",aux->info); delete(aux); *ptr=NULL; *p=NULL; } } else
printf("Lista vac¡a");
}
void inserta_or(LISTA **ptr,LISTA **p, char elemento) { LISTA *p1, *p2,*aux,*aux1;
p1 = *ptr;
if(p1 == NULL) { p1 = new(LISTA); if (p1 != NULL) { p1->info = elemento; p1->enlace = p1; p1->enlace1 = p1;
*ptr = p1; *p = p1; } } else { aux=p1; p2 = new(LISTA);
if(elemento<p1->info)
{ if(p1->enlace==aux)
{ *ptr=p2; p2->info=elemento; p2->enlace= p1; p2->enlace1=p1; p1->enlace =p2; p1->enlace1=p2; }
else { *ptr=p2; p2->info=elemento; p2->enlace=p1; aux1=*p; aux1->enlace=p2; p2->enlace1=aux1; p1->enlace1=p2; }}
else{
while(p1->enlace != aux) { aux1=p1->enlace; if((p1->info<elemento&&elemento<aux1->info)|| (p1->info==elemento||elemento==aux1->info)) break; else p1 = p1->enlace;
}
if(p1->enlace==aux) { p2->info = elemento; p2->enlace = aux; p1->enlace = p2; p2->enlace1 = p1; aux->enlace1 =p2; *p = p2; } else { p2->info=elemento; aux1=p1->enlace; p1->enlace=p2; p2->enlace1=p1; p2->enlace=aux1; aux1->enlace1=p2; } }} }
void orden(LISTA **ptr,LISTA **p) { LISTA *x3,*p1, *p2,*aux,*aux1,*x,*x1=NULL,*i=NULL,*j=NULL,*m; char elemento;
x=*ptr; x3=x;
if(*ptr!=NULL) {
do{ p1=x1;
elemento=x->info;
if(p1==NULL)
{ p1=new(LISTA);
p1->info=elemento; p1->enlace=p1; p1->enlace1=p1;
i=p1; j=p1;
x1=p1;
}
else{
p2=new(LISTA);
p2->info=elemento;
if(elemento<p1->info)
{ aux1=p1->enlace1; p2->enlace=p1; p1->enlace1=p2; p2->enlace1=aux1; aux1->enlace=p2; i=p2; x1=p2; }
else{
while(p1->enlace!=x1)
{ aux=p1->enlace;
if((elemento>p1->info&&elemento<aux->info)||(elemento==p1->info)) break;
else p1=p1->enlace;
}
if(p1->enlace!=x1)
{ p2->enlace=aux; p2->enlace1=p1; p1->enlace=p2; aux->enlace1=p2;
}
else if(p1->enlace==x1) { p2->enlace1=p1; p1->enlace=p2; p2->enlace=x1; x1->enlace1=p2; j=p2; }
} }
m=x->enlace;
delete(x);
x=m;
} while(x!=x3);
printf("Ordenaci¢n con ‚xito");
*ptr=i; *p=j;
} else
printf("Lista Vac¡a");
} void buscar_ele(LISTA **ptr,LISTA **p,char elemento) { LISTA *aux,*aux1;
aux=*ptr;
aux1=*p;
aux1=aux1 ->enlace;
if(aux!=NULL){ while(aux->enlace!=aux1&&aux->info!=elemento){ aux=aux->enlace; } if(aux->info==elemento) { printf("nnEl elemento es %c , ubicado en la posici¢n %p ",aux->info,aux);
} else printf("nnEl elemento no existe"); }
else
printf("nnLista vac¡a");
}
void mostrar_elementos(LISTA **ptr,LISTA **p) { LISTA *aux,*aux1,*aux2;
aux=*ptr; aux1=*p;
aux1=aux1->enlace;
if(aux!=NULL){
printf("Los elementos son:nn"); while(aux->enlace!=aux1){ printf("El elemento %c , est ubicado en la posici¢n %p n",aux->info,aux); aux=aux->enlace; }
printf("El elemento %c , est ubicado en la posici¢n %p n",aux->info,aux); } else
printf("nnLista vac¡a");
}
# endif:D
5
« en: Miércoles 6 de Marzo de 2002, 09:38 »
PoR FAVOR NECESITO AYUDA URGENTEMENTE,NECESITO UN PROGRAMA DE ESTRUCTURAS DINAMICAS CON UN MENU CON VENTANAS Y FUNCIONES EN C++,DONDE SE PUEDAN INTRODUCIR,ELIMINAR,MODIFICAR..DATOS,PORFAVOR ES URGENTE, MUCHISIMAS GRACIAS
Páginas: [1]
|
|
|