Hola a todos, bueno quieresa ver si me echan la mano para hacer que corra bien un programita que ya me saco CANAS tras CANAS no ya sta la mayoria lo uniko k me falta es el metodo de ordenacion que no me corre en la Universidad el Ingeniero nos dijo que por el metodo de ordenacion que queramos y yo lo ise por el de la burbuja pero no me sale no se si alguien de ustedes me podria ayudar si lo hacen MIL gracias o si ven en donde esta mi error DIGANME por que yo ya no doy mas xD saluditos y espero respuesta aqui les dejo el codigo (lo corri en Turbo C)
si lo gustan descargar lo subi a varios del k gusten
http://www.sendspace.com/file/srwxqo
http://rapidshare.com/files/399850495/ProyectoFinal.CPP.html
http://www.2shared.com/file/exh0kCVc/ProyectoFinal.html
http://www.filefactory.com/file/b21675f/n/ProyectoFinal.CPP
http://ifile.it/3t9evgj/ProyectoFinal.CPP
CUALQUIER AYUDA sirve si no le tiran mucho a la de burbuja me dijero k puede ser otro metodo es k soy principiante en esto GRACIAS POR RESPONDER!!
Código [Seleccionar]
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <graphics.h>
#include <stdlib.h>
#include <process.h>
#define TAM 20
#include <ctype.h>
#include "graphics.h"
char nombre[20];
/****************************estructura principal************************/
struct ferreteria
{
char articulo[TAM]; /*c articulo*/
char clave[10];
char precio[10]; /* precio*/
char marca[10]; //otro
}datos;
/***********************************funciones*******************************/
void ordenar(struct ferreteria);
// void crear();
void insertar(struct ferreteria );
void visualizar(struct ferreteria );
void buscar(struct ferreteria );
void modificar(struct ferreteria );
void borrar(struct ferreteria );
void acerca();
void articulo(struct ferreteria );
void precio(struct ferreteria );
void clave(struct ferreteria );
void marca(struct ferreteria );
int valido(char *, struct ferreteria );
/***************************iniciamos el menu principal******************/
void main()
{
/*********************************iniciamos los graficos**************/
int gdriver = DETECT, gmode, errorcode;
int midx, midy, i;
initgraph(&gdriver, &gmode, "");
errorcode = graphresult();
if (errorcode != grOk)
{
printf("Error de Graficos: %s\n", grapherrormsg(errorcode));
printf("Presiona una tecla para continuar:");
getch();
exit(1);
}
char opcion;
int salir=0;
/**************************terminamos graficas********************/
do
{
clrscr();
setfillstyle(SOLID_FILL,BLUE);
bar(120,60,550,240); /*primer bar 3d*/
/*sobre el primer*/
printf("\n\n\n");
printf("\n\n\t\tCONTROL DE FERRETERIA\n\n");
// printf("\n\n\t0. CREAR\n" );
printf("\t\t\t1. ALTAS\n" );
printf("\t\t\t2. MOSTRAR TODO\n" );
printf("\t\t\t3. CONSULTAR\n" );
printf("\t\t\t4. MODIFICAR \n" );
printf("\t\t\t5. BAJAS\n" );
printf("\t\t\t6. INTEGRANTES\n");
printf("\t\t\t7. ORDENAR\n\n" );
moveto(250,300);outtext("PULSA ESC PARA SALIR"); /*pocision de esc*/
setfillstyle(SOLID_FILL,7); /*color de fondo 2*/
bar(0,0,120,240);
setbkcolor(BLUE); /*color de fondo3*/
rectangle(120,60,550,240);
rectangle(116,56,554,244); /*rectangulo sobre otro*/
rectangle(240,295,420,310);
rectangle(236,291,424,314);
opcion=getch();
clrscr();
switch(opcion)
{
case '1': insertar(datos);
break;
case '2': visualizar(datos);
break;
case '3': buscar(datos);
break;
case '4': modificar(datos);
break;
case '5': borrar(datos);
break;
case '6': acerca();
break;
case '7':
ordenar(datos);
case 27: salir=1;
break;
}
}
while(!salir);
}
/**************************insertar los datos en la estructura**************/
void insertar(struct ferreteria datos)
{
clrscr(); /*limpiamos pantalla*/
FILE *f;
FILE *control;
int result;
char clave[10];
printf("\t\t LOS DIRECTORIOS SON \n C: \n D: \n K: \n\n");
printf("\n INTRODUCE EL NOMBRE DE EL ARCHIVO\n");
gets(nombre);
f=fopen(nombre,"at+");
//control=fopen("contro.doc","w+");
clrscr();
if(!f)
{
printf("ERROR EN LA APERTURA DE EL ARCHIVO\n");
getch();
exit(1);
}
/*************************************************/
printf("PARA TERMINAR LA INTRODUCCION DE REGISTROS, EN CLAVE ESCRIBE '*'\n");
// fprintf(control,"clave"); /* l clave l producto l precio l marca l */
// fprintf(control,"\t\t producto"); /* l_______l__________l________l_______l */
// fprintf(control,"\t\t precio");
// fprintf(control,"\t\t marca\n"); /*imprimimos con formato*/
printf("CLAVE:");
gets(clave); fflush(stdin);
fclose(f);
result=valido(clave, datos);
f=fopen(nombre,"at+");
while(!result)
{
printf("LA CLAVE YA EXISTE\n");
printf("CLAVE: ");
gets(clave); fflush(stdin);
fclose(f);
result=valido(clave, datos);
f=fopen(nombre,"at+");
} strcpy(datos.clave,clave);
while(strcmp(datos.clave,"*"))
{
printf("ARTICULO: ");
gets(datos.articulo); fflush(stdin);
printf("PRECIO ");
gets(datos.precio); fflush(stdin);
printf("MARCA: ");
gets(datos.marca); fflush(stdin);
fwrite(&datos,sizeof(datos),1,f);
fprintf(control,"%s",datos.clave);
fprintf(control,"%s\t\t",datos.articulo);
fprintf(control,"%s\t\t",datos.precio);
fprintf(control,"%s\t\t\n",datos.marca);
// system("cls");
clrscr();
printf("PARA TERMINAR LA INTRODUCCION DE REGISTROS, EN CLAVE ESCRIBE '*'\n");
printf("CLAVE:");
gets(clave); fflush(stdin);
fclose(f);
result=valido(clave, datos);
f=fopen(nombre,"at+");
while(!result)
{
printf("LA CLAVE YA EXISTE\n");
printf("CLAVE: ");
gets(clave); fflush(stdin);
fclose(f);
result=valido(clave, datos);
f=fopen(nombre,"at+");
} strcpy(datos.clave,clave);
}
fclose(f);
fclose(control);
}
/**********************************ver los datos introducidos***************/
void visualizar(struct ferreteria datos)
{
clrscr();
FILE *f;
f=fopen(nombre,"rt+");
if(!f)
{
printf("ERROR EN LA APERTURA DE EL ARCHIVO\n");
getch();
exit(1);
}
while(fread(&datos,sizeof(datos),1,f))
{
printf("ARTICULO: %s\n", datos.articulo);
printf("CLAVE: %s\n", datos.clave);
printf("PRECIO: %s\n", datos.precio);
printf("MARCA: %s\n", datos.marca);
getch();
clrscr();
}
fclose(f);
}
void buscar(struct ferreteria datos)
{
clrscr();
char opcion;
int salir=0;
do
{ /*metemos el do while para seguir buscando*/
clrscr();
setfillstyle(SOLID_FILL,5);
bar(0,0,640,120);
printf("\t\t\t\tBUSCAR\n");
printf("\t\t\t\t------\n");
printf("\t\t\t1. ARTICULO\n");
printf("\t\t\t2. CLAVE\n");
printf("\t\t\t3. PRECIO\n");
printf("\t\t\t4. MARCA\n\n");
moveto(250,300);outtext("PULSA ESC PARA SALIR");
rectangle(240,295,420,310); //rectan de salir
rectangle(236,291,424,314); //rectan1 de salir
rectangle(0,0,638,120);
opcion=getch();
switch(opcion)
{
case '1': articulo(datos);
break;
case '2': clave(datos);
break;
case '3': precio(datos);
break;
case '4': marca(datos);
break;
case 27: salir=1;
break;
}
}
while(!salir);
}
/**************************FUNCION PARA MODIFICAR FERRETERIA...************/
void modificar(struct ferreteria datos)
{
clrscr();
FILE *f;
FILE *control;
char opcion, articulo[TAM],clave[10];
int salir=0,salirf=0, encontrado=0;
do
{
system("cls");
f=fopen(nombre,"rt+");
printf("INGRESA LA CLAVE A MODIFICAR: ");
gets(clave); fflush(stdin);
fread(&datos,sizeof(datos),1,f);
while(!feof(f)&&!salir)
{
if(!strcmp(datos.clave,clave))
{
printf("ARTICUL0 (antiguo): %s\n", datos.articulo);
printf("ARTICULO (nuevo): ");
gets(datos.articulo); fflush(stdin);
printf("CLAVE (antiguo): %s\n", datos.clave);
printf("CLAVE (nuevo): ");
gets(datos.clave); fflush(stdin);
printf("PRECIO (antiguo): %s\n", datos.precio);
printf("PRECIO(nuevo): ");
gets(datos.precio); fflush(stdin);
printf("MARCA (antiguo): %s\n", datos.marca);
printf("MARCA (nuevo): ");
gets(datos.marca); fflush(stdin);
fseek(f,-(long)sizeof(datos),SEEK_CUR);
fwrite(&datos,sizeof(datos),1,f);
fwrite(&datos,sizeof(datos),1,control);
encontrado=1;
salir=1;
}
else
fread(&datos,sizeof(datos),1,f);
}
if(!encontrado)
printf("NO SE HA ENCONTRADO EL REGISTRO QUE BUSCA\n");
fclose(f);
printf("¨DESEA MODIFICAR OTRO REGISTRO? (S/N)?\n");
opcion=toupper(getch());
if(opcion=='N')
salirf=1;
else
salir=0;
}
while(!salirf);
}
void borrar(struct ferreteria datos)
{
clrscr();
FILE *f, *f_temp;
char opcion, clave[10];
int salir=0;
do
{
system("cls");
f=fopen(nombre,"rt+");
f_temp=fopen("ferreteria_temp","wt+");
if(!f)
{
printf("ERROR EN LA APERTURA DEL ARCHIVO\n");
getch();
exit(1);
}
if(!f_temp)
{
printf("ERROR EN LA APERTURA DEL ARCHIVO TEMPORAL\n");
getch();
exit(1);
}
printf("INGRESA LA CLAVE A BORRAR: ");
gets(clave); fflush(stdin);
fread(&datos,sizeof(datos),1,f);
while(!feof(f))
{
if(strcmp(clave,datos.clave))
fwrite(&datos,sizeof(datos),1,f_temp);
fread(&datos,sizeof(datos),1,f);
}
fclose(f);
fclose(f_temp);
remove(nombre);
rename("ferreteria_temp",nombre);
// remove("ferreteria_temp" );
printf("¨DESEA BORRAR OTRO REGISTRO? (S/N)\n");
opcion=toupper(getch());
if(opcion=='N')
salir=1;
}
while(!salir);
}
void acerca()
{ clrscr();
setfillstyle(SOLID_FILL,5);
bar(26,76,604,184);
rectangle(26,76,604,184);
gotoxy(5,5); printf("INTEGRANTES\n\n");
printf("\t\t\t\tARTURO GONZALEZ\n");
printf("\t\t\t\tCARLOS ABRAHAM\n ");
printf("\t\t\t\tMAYRA SANTANA\n");
printf("\t\t\t\tCLAUDIA ACU¥A\n");
rectangle(30,80,600,180);
moveto(250,300);outtext("PULSA ESC PARA SALIR");
rectangle(240,295,420,310);
rectangle(236,291,424,314);
//para que no tape los
//printfllllllllllllllll
getch();
}
/***********************************funcion de el articulo a escribir*******/
void articulo(struct ferreteria datos)
{
clrscr();
FILE *f;
char articulo[TAM], opcion;
int salir=0, encontrado=0;
do
{
system("cls");
f=fopen(nombre,"rt+");
if(!f)
{
printf("ERROR EN LA APERTURA DEL ARCHIVO\n");
getch();
exit(1);
}
printf("INGRESA EL ARTICULO A BUSCAR: ");
gets(articulo); fflush(stdin);
while(fread(&datos,sizeof(datos),1,f))
{
if(!strcmp(datos.articulo,articulo))
{
printf("ARTICULO %s\n", datos.articulo);
printf("CLAVE: %s\n", datos.clave);
printf("PRECIO: %s\n", datos.precio);
printf("MARCA: %s\n\n", datos.marca);
encontrado=1;
}
}
if(!encontrado)
printf("NO SE HA ENCONTRADO EL REGISTRO SOLICITADO\n");
printf("¨DESEA BUSCAR OTRO REGISTRO? (S/N)\n");
opcion=toupper(getch());
if(opcion=='N')
salir=1;
else
encontrado=0;
fclose(f);
}
while(!salir);
}
/***************************funcion de el precio *************************/
void precio(struct ferreteria datos)
{
clrscr();
FILE *f;
char opcion, precio[10];
int salir=0, encontrado=0;
do
{
system("cls");
f=fopen(nombre,"rt+");
if(!f)
{
printf("ERROR EN LA APERTURA DE EL ARCHIVO\n");
getch();
exit(1);
}
printf("INTRODUCE EL PRECIO A BUSCAR: ");
gets(precio); fflush(stdin);
while(fread(&datos,sizeof(datos),1,f))
{
if(!strcmp(precio,datos.precio))
{
printf("ARTICULO: %s\n", datos.articulo);
printf("CLAVE: %s\n", datos.clave);
printf("PRECIO: %s\n", datos.precio);
printf("MARCA: %s\n\n", datos.marca);
encontrado=1;
}
}
if(!encontrado)
printf("NO SE HA ENCONTRADO EL REGISTRO SOLICITADO\n");
printf("¨DESEA BUSCAR OTRO REGISTRO (S/N)\n");
opcion=toupper(getch());
if(opcion=='N')
salir=1;
else
encontrado=0;
fclose(f);
}
while(!salir);
}
/**************************funcion para el campo clave y todo su desarrollo**/
void clave(struct ferreteria datos)
{
clrscr();
FILE *f;
char opcion, clave[10];
int salir=0, encontrado=0;
do
{
system("cls");
f=fopen(nombre,"rt+");
if(!f)
{
printf("ERROR EN LA APERTURA DE EL ARCHIVO\n");
getch();
exit(1);
}
printf("INGRESA LA CLAVE A BUSCAR: ");
gets(clave); fflush(stdin);
while(fread(&datos,sizeof(datos),1,f))
{
if(!strcmp(clave,datos.clave))
{
printf("ARTICULO: %s\n", datos.articulo);
printf("CLAVE: %s\n", datos.clave);
printf("PRECIO: %s\n", datos.precio);
printf("MARCA: %s\n\n", datos.marca);
encontrado=1;
}
}
if(!encontrado)
printf("NO SE HA ENCONTRADO EL REGISTRO SOLICITADO\n");
printf("¨DESEA BUSCAR OTRO REGISTRO? (S/N)\n");
opcion=toupper(getch());
if(opcion=='N')
salir=1;
else
encontrado=0;
fclose(f);
}
while(!salir);
}
/**********************************funcion para el campo marca*************/
void marca(struct ferreteria datos)
{
FILE *f;
char opcion, marca[10];
int salir=0, encontrado=0;
do
{
system("cls");
f=fopen(nombre,"rt+");
if(!f)
{
printf("ERROR EN LA APERTURA DE EL ARCHIVO\n");
getch();
exit(1);
}
printf("INGRESA LA MARCA A BUSCAR: ");
gets(marca); fflush(stdin);
while(fread(&datos,sizeof(datos),1,f))
{
if(!strcmp(marca,datos.marca))
{
printf("ARTICULO: %s\n", datos.articulo);
printf("CLAVE: %s\n", datos.clave);
printf("PRECIO: %s\n", datos.precio);
printf("MARCA: %s\n\n", datos.marca);
encontrado=1;
}
}
if(!encontrado)
printf("NO SE HA ENCONTRADO EL REGISTRO SOLICITADO\n");
printf("¨DESEA BUSCAR OTRO REGISTRO? (S/N)?\n");
opcion=toupper(getch());
if(opcion=='N')
salir=1;
else
encontrado=0;
fclose(f);
}
while(!salir);
}
/***********esta funcion es para ver si el archivo esta bien hecho o no****/
int valido(char clave[], struct ferreteria datos)
{
FILE *f;
int esvalido=1;
f=fopen(nombre,"rt+");
fread(&datos,sizeof(datos),1,f);
while(!feof(f)&&esvalido)
{
if(!strcmp(clave,datos.clave))
esvalido=0;
else
fread(&datos,sizeof(datos),1,f);
}
fclose(f);
return esvalido;
}
/***************************ordenar las claves por m. de burbuja*************************************/
void ordenar(struct ferreteria datos)
{
FILE *f;
int p, aux;
int nclaves=1;
int arreglo1[50];
int arreglo2[50];
int valor[200];
int x,i=1,j=2, temp;
int a;
int valor1[23];
if((f=fopen(nombre,"rt+"))==NULL)
{
printf("\nEL FICHERO NO EXISTE.");
getch();
exit(0);
}
while(!feof(f)&&!exit)
{
fread(&datos, sizeof(datos),1,f);
valor1[nclaves]=atoi(datos.clave);
nclaves=nclaves+1;
}
if(valor1[i]>valor1[j])
{
valor[j]=aux;
valor[i]=valor[j];
valor[j]=valor[i];
j++;
i++;
}
else
{
i++;
j++;
}
for(i=1;i<=nclaves;i++)
{
printf("%d",valor[i]);
}
fclose(f);
getch();
}
/***************************************************************************************/
/* void crear()
{
FILE *f;
printf("\t\t Los directorios son \n C: \n D: \n K: \n\n");
printf("\n INTRODUCE EL NOMBRE DE EL ARCHIVO\n");
gets(nombre);
f=fopen(nombre,"w+");
if(f!=NULL)
{
printf("\n Fichero creado.....\n");
}
else
{
printf("\n Error en el archivo\n");
}
getch();
}
*/
si lo gustan descargar lo subi a varios del k gusten
http://www.sendspace.com/file/srwxqo
http://rapidshare.com/files/399850495/ProyectoFinal.CPP.html
http://www.2shared.com/file/exh0kCVc/ProyectoFinal.html
http://www.filefactory.com/file/b21675f/n/ProyectoFinal.CPP
http://ifile.it/3t9evgj/ProyectoFinal.CPP
CUALQUIER AYUDA sirve si no le tiran mucho a la de burbuja me dijero k puede ser otro metodo es k soy principiante en esto GRACIAS POR RESPONDER!!