Rilax

Rilax
18 de Junio del 2010
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)

#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: %sn", 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("nnn");
printf("nnttCONTROL DE FERRETERIAnn");
// printf("nnt0. CREARn" );
printf("ttt1. ALTASn" );
printf("ttt2. MOSTRAR TODOn" );
printf("ttt3. CONSULTARn" );
printf("ttt4. MODIFICAR n" );
printf("ttt5. BAJASn" );
printf("ttt6. INTEGRANTESn");
printf("ttt7. ORDENARnn" );
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("tt LOS DIRECTORIOS SON n C: n D: n K: nn");

printf("n INTRODUCE EL NOMBRE DE EL ARCHIVOn");

gets(nombre);
f=fopen(nombre,"at+");
//control=fopen("contro.doc","w+");
clrscr();
if(!f)
{
printf("ERROR EN LA APERTURA DE EL ARCHIVOn");
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,"tt producto"); /* l_______l__________l________l_______l */
// fprintf(control,"tt precio");
// fprintf(control,"tt marcan"); /*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 EXISTEn");
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,"%stt",datos.articulo);
fprintf(control,"%stt",datos.precio);
fprintf(control,"%sttn",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 EXISTEn");
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 ARCHIVOn");
getch();
exit(1);
}
while(fread(&datos,sizeof(datos),1,f))
{
printf("ARTICULO: %sn", datos.articulo);
printf("CLAVE: %sn", datos.clave);
printf("PRECIO: %sn", datos.precio);
printf("MARCA: %sn", 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("ttttBUSCARn");
printf("tttt------n");
printf("ttt1. ARTICULOn");
printf("ttt2. CLAVEn");
printf("ttt3. PRECIOn");
printf("ttt4. MARCAnn");
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): %sn", datos.articulo);
printf("ARTICULO (nuevo): ");
gets(datos.articulo); fflush(stdin);
printf("CLAVE (antiguo): %sn", datos.clave);
printf("CLAVE (nuevo): ");
gets(datos.clave); fflush(stdin);
printf("PRECIO (antiguo): %sn", datos.precio);
printf("PRECIO(nuevo): ");
gets(datos.precio); fflush(stdin);
printf("MARCA (antiguo): %sn", 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 BUSCAn");
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 ARCHIVOn");
getch();
exit(1);
}
if(!f_temp)
{
printf("ERROR EN LA APERTURA DEL ARCHIVO TEMPORALn");
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("INTEGRANTESnn");
printf("ttttARTURO GONZALEZn");
printf("ttttCARLOS ABRAHAMn ");
printf("ttttMAYRA SANTANAn");
printf("ttttCLAUDIA ACU¥An");
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 ARCHIVOn");
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 %sn", datos.articulo);
printf("CLAVE: %sn", datos.clave);
printf("PRECIO: %sn", datos.precio);
printf("MARCA: %snn", datos.marca);
encontrado=1;
}
}
if(!encontrado)
printf("NO SE HA ENCONTRADO EL REGISTRO SOLICITADOn");
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 ARCHIVOn");
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: %sn", datos.articulo);
printf("CLAVE: %sn", datos.clave);
printf("PRECIO: %sn", datos.precio);
printf("MARCA: %snn", datos.marca);
encontrado=1;
}
}
if(!encontrado)
printf("NO SE HA ENCONTRADO EL REGISTRO SOLICITADOn");
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 ARCHIVOn");
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: %sn", datos.articulo);
printf("CLAVE: %sn", datos.clave);
printf("PRECIO: %sn", datos.precio);
printf("MARCA: %snn", datos.marca);
encontrado=1;
}
}
if(!encontrado)
printf("NO SE HA ENCONTRADO EL REGISTRO SOLICITADOn");
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 ARCHIVOn");
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: %sn", datos.articulo);
printf("CLAVE: %sn", datos.clave);
printf("PRECIO: %sn", datos.precio);
printf("MARCA: %snn", datos.marca);
encontrado=1;
}
}
if(!encontrado)
printf("NO SE HA ENCONTRADO EL REGISTRO SOLICITADOn");
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("tt Los directorios son n C: n D: n K: nn");
printf("n INTRODUCE EL NOMBRE DE EL ARCHIVOn");

gets(nombre);
f=fopen(nombre,"w+");
if(f!=NULL)
{
printf("n Fichero creado.....n");
}
else
{
printf("n Error en el archivon");
}
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!! ;););)