Comunidad MUNDOTE



Autor Tema: Ayuda Programita de un Proyecto  (Leído 293 veces)

Rilax

  • Uploaders
  • Guia Profesional
  • *
  • Mensajes: 777
  • Karma: +128/-0
Ayuda Programita de un Proyecto
« : 16 de junio de 2010, 08:06:29 pm »
Hola a todos, bueno quieresa ver si me echan la mano para aser 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 asen 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: %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>valor1[j])
       {
        valor[j]=aux;
        valor=valor[j];
        valor[j]=valor;
        j++;
        i++;
       }
     else
      {
       i++;
       j++;
      }

      for(i=1;i<=nclaves;i++)
       {
        printf("%d",valor);
       }

    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();
   }
    */

Diaz_savE

  • Uploaders
  • Guia Profesional
  • *
  • Mensajes: 730
  • Karma: +85/-0
  • Que Linda Hinata Con Traje De Kyubi
    • Email
Re:Ayuda Programita de un Proyecto
« Respuesta #1 : 17 de junio de 2010, 12:30:55 am »
hace muchote que no manejo C++...   pero vamos a darle una chacada...


Rilax

  • Uploaders
  • Guia Profesional
  • *
  • Mensajes: 777
  • Karma: +128/-0
Re:Ayuda Programita de un Proyecto
« Respuesta #2 : 19 de junio de 2010, 08:29:01 pm »
algo que ayas visto o podido aser?

 

Copyright © Diseño Staff Mundote