elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


  Mostrar Temas
Páginas: [1]
1  Programación / Programación C/C++ / Me pordían hechar una mano (programa en c++) en: 5 Marzo 2012, 23:50 pm
Bueno ante todo, quiero decir que soy nuevo en el foro, y me disculpo por eso...
pero lamentablemente después de andar en la web ya no doy más :S (en ese punto donde me quiero dar cabezasos contra el teclado de mi ordenador xD)

bueno quiero pedirles ante todo una ayuda con un programa que tengo, armado aun sin terminar, ya que tiene unos errores y además unas complicaciones que se me dá

descripción sobre lo que hace mi programa

bueno mi programa esta basado en borland c++, lo que hace es que de un fichero de texto, llamado tronitos.txt, hay una serie de instrucciones que tiene que cumplir mi programa por ejemplo
función insertar (021,martillo,20,30,gt)
siendo los campos separados por comas
codigo
descripcion
peso
precio
lugar

según la instrucción dada es lo que hará mi programa, entre ellas esta buscar (); eliminar (); modificar ();

bueno, pues decía que del archivo tronitos.txt tengo que pasarlo a otro que diga maestro.txt <---nombre que le dado; la idea es que la opcion de insertar me inserte todos los registros pero como he utilizado uno de prueba un registro

Citar
insertar(021,martillo,20,30,gt)
mi programa funciona con solo una línea, pero al ponerle 2 lineas no lee la siguiente línea por ende no la inserta;

Citar
insertar(021,martillo,20,30,gt)
insertar(02,ASASD,40,3,gt)


bueno otro de los problemas que tengo es que tengo que colocarlo en cierta posición claro la posición ya la tengo pero no se como usarla para colocarla en dicha posición en el archivo... dejo mi codigo fuente y al final el archivo tronitos....
olvidaba mencionar que mi archivo solamente tiene que tener 77 registros; se que colacionarán algunas eso aun lo tengo que hacer, por método de hahs que claro aun no tengo idea de como hacerlo :S


Código:
#include <stdio.h>
#include <fstream.h>
#include <string.h>
#include <ctype.h>
#include <iostream.h>
#include <conio.h>

char arreglo[77];
int pos;

struct ingreso
{
   clrscr ();
   char codigo[5];
   char descripcion [25];
   char precio [20];
   char peso [10];
   char ciudad [10];
   };
struct ingreso reg;

FILE * entrada;
FILE * salida;
FILE * proceso;//aqui se guarda los procesos insertar, buscar, eliminar
char c[1];
char a[20];
char linea[100];
char linea2[30];
char linea3[10];

void lectura ()
{
do
{

//cout<<"Nombre del archivo\n";  //auno no funciona
//gets(a);
entrada = fopen ("tronitos.txt", "rt+");
if (entrada== NULL)
    {
         clrscr ();
      cout<<"el archivo no existe\n";
         getch ();
      }
   }while (entrada==NULL);

   proceso = fopen ("procesos.dat", "wb+");
   salida = fopen ("maestro.txt", "w+");
   clrscr ();
;
}


void cortar ()
{

strcpy (reg.codigo, "");
strcpy (reg.descripcion, "");
strcpy (reg.precio,"");
strcpy (reg.peso, "");
strcpy (reg.ciudad, "");
strcpy (linea3, "");
strcpy (linea2, "");
strcpy (linea, "");

int i=0, j=1, k=0;

fgets(linea,100,entrada);

while (i < strlen (linea))
{
   if (linea[i]!='(')
    {
      c[0]=linea[i];
       strcat (linea3, c);
       i++;
         j++;
      }
    else
    {
          i=strlen (linea);
      }
    }
while (j < strlen (linea))
{
   if(linea[j]!=')')
    {
      if (linea[j]!=',')
      {
         c[0]=linea[j];
         strcat (linea2,c);

         }//termina el segundo if que busca las comas ","

      else
      {
         k++;
         switch (k)
          {
            case 1: strcpy (reg.codigo,linea2);
            strcpy (linea2, "");
                     break;

            case 2: strcpy (reg.descripcion, linea2);
            strcpy (linea2, "");
                     break;

            case 3: strcpy (reg.precio,linea2);
            strcpy (linea2, "");
                     break;

            case 4: strcpy (reg.peso, linea2);
                    strcpy (linea2, "");
                    break;
            }//switch
         }//else interno que maneja switch
    }//termina el primer if que busca el parentesis abierto
       else
        {
         strcpy (reg.ciudad,linea2);
         strcpy (linea2, "");

         }
       j++;
   }//fin ciclo while
}




void lugar ()
{
unsigned int x, y=0, z=0;
char * cod = reg.codigo;

for (x=0; x<strlen(cod); x++)
{
   y=cod[x];
   z+=y;
   }//fin for

z-=9;
pos=z%77;
}//fin funcion lugar

void insertar ()
{
fseek (salida, pos*sizeof(struct ingreso), SEEK_SET);
fwrite(&reg, sizeof(reg),1,salida);



}



void menu ()
{


char palabra[40];
while (!feof(entrada))
{
   fgets (linea,100,entrada);
   if (strcmp (linea, "\n")!=0)
    {

      strcpy (palabra, linea3);

      if (strcmp (palabra, "insertar")==0)
      {
         insertar ();
         }//segundo if
         else
          {
            if (strcmp (palabra, "buscar")==0)
            {
            //buscar();
            }

            else
            {
               if (strcmp (palabra, "mostrar\n")==0)
                {
                  //mostrar ();
                  }
                  else
                  {
                     if (strcmp (palabra, "eliminar")==0)
                      {
                        //eliminar ();
                        }
                        else
                        {
                           if (strcmp (palabra,"modificar")==0)
                            {
                              //modificar ();
                              }

                           }
                     }
            }
            }
      }//primer if

   }//while

}//fin ciclo

int main()
{
long Nregistros;

lectura ();

cortar();
lugar ();
menu ();



fclose(entrada);
fclose (salida);
fclose (proceso);
getch ();
return 0;

si alguien me ayudaría enserio se los agradecería

archivo tronitos
Citar
adfasdfsadfsadfsadfsafsf
sdafsadfsdfsadfsdafsfsfsfsafsafsf
!"##$%&//(((((()))=?¡????)="!#$$%

insertar(021,martillo,20,30,gt)
insertar(022,bb,20,30,gt)
insertar(023,cc,20,30,gt)
insertar(024,dd,20,30,gt)
insertar(025,ee,20,30,gt)
insertar(026,ff,20,30,gt)
insertar(027,gg,20,30,gt)
insertar(028,hh,20,30,gt)
insertar(029,ii,20,30,gt)
insertar(030,jj,20,30,gt)
insertar(03122,kk,20,30,gt)
insertar(03222,ll,20,30,gt)
insertar(03322,mm,20,30,gt)
insertar(03422,nn,20,30,gt)
insertar(03522,oo,20,30,gt)
insertar(02236,pp,20,30,gt)
insertar(02237,qq,20,30,gt)
insertar(02382,ss,20,30,gt)
insertar(02239,tt,20,30,gt)
insertar(050,uu,20,30,gt)
insertar(025,vv,20,30,gt)
insertar(02402,zz,20,30,gt)
insertar(02412,aaa,20,30,gt)
insertar(02422,bbb,20,30,gt)
insertar(02432,ccc,20,30,gt)
insertar(02442,ddd,20,30,gt)
insertar(02452,eee,20,30,gt)
insertar(02462,ffff,20,30,gt)
insertar(02472,ggg,20,30,gt)
insertar(02482,hhh,20,30,gt)
insertar(02492,iii,20,30,gt)
insertar(02502,jjj,20,30,gt)
insertar(02512,kkk,20,30,gt)
insertar(02522,lll,20,30,gt)
insertar(02532,mmm,20,30,gt)
insertar(02542,nnn,20,30,gt)
insertar(02552,ooo,20,30,gt)
insertar(02562,ppp,20,30,gt)
insertar(02572,qqq,20,30,gt)
insertar(02582,sss,20,30,gt)
insertar(02592,ttt,20,30,gt)
insertar(02602,kkkk,20,30,gt)
insertar(02612,llllll,20,30,gt)
insertar(02622,mmmmmm,20,30,gt)
insertar(02632,nnnnnn,20,30,gt)
insertar(02642,jjjjjj,20,30,gt)
insertar(02652,wwwwww,20,30,gt)
insertar(02662,yyyyyy,20,30,gt)
insertar(02672,zzzzzz,20,30,gt)
insertar(02682,ññññññ,20,30,gt)
insertar(02692,xxxxxx,20,30,gt)
insertar(02702,oooooo,20,30,gt)
insertar(02712,aaaaaa,20,30,gt)
insertar(02722,eeeeee,20,30,gt)
insertar(02732,uuuuuu,20,30,gt)
insertar(02742,iiiiii,20,30,gt)
insertar(02752,vvvvvv,20,30,gt)
insertar(02762,cccccc,20,30,gt)
insertar(02772,rrrrrr,20,30,gt)
insertar(02782,ddddddddd,20,30,gt)
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines