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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


  Mostrar Temas
Páginas: [1]
1  Programación / Programación C/C++ / Listas y Sublistas..Ayuda!! en: 9 Mayo 2012, 08:43 am
Buenas Gente
Saludos a todos otra vez recurro a este buen foro que me ayudo la otra vez
mi problema es el siguiente estoy haciendo un programa de listas y sublistas que maneja conjuntos tengo un código pero me marca un error a la hora compilar si alguien me puede ayudar.! gracias!

Citar
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <alloc.h>

//estructuras...
struct sublista{
int dato;
struct sublista*siguiente;
};

struct lista{
char nom[50];
struct lista*sig;
struct sublista*sub;
};


FILE*in;
FILE*pro;

char cad[100];
char cad2[100];
char cad3[100];
char c[1];


struct sublista*R=NULL;
void insertar_sublista (int dato)
{
struct sublista *p, *n;
unsigned int a = 0, b = 0;


if (R == NULL)
{
n = (struct sublista*)malloc(sizeof(struct sublista));
while(a < strlen(cad2))
{
n -> dato = dato;
a++;
}
n -> siguiente = NULL;
//n -> sub = NULL;
R = n;
}
else
{
p = R;
while(p -> siguiente != NULL)
{
p = p -> siguiente;
}
n = (struct sublista*)malloc(sizeof(struct sublista));
while(b < strlen(cad2))
{
n -> dato = dato;
b++;
}
n -> siguiente = NULL;
//n -> sub = NULL;
p -> siguiente = n;
}
}


struct lista*r=NULL;
void insertar_lista (char nom[20])
{
struct lista *p, *n;
unsigned int a = 0, b = 0;


if (r == NULL)
{
n = (struct lista*)malloc(sizeof(struct lista));
while(a < strlen(cad2))
{
n -> nom[a] = nom[a];
a++;
}
n -> sig = NULL;
n -> sub = NULL;
r = n;
}
else
{
p = r;
while(p -> sig != NULL)
{
p = p -> sig;
}
n = (struct lista*)malloc(sizeof(struct lista));
while(b < strlen(cad2))
{
n -> nom = nom;
b++;
}
n -> sig = NULL;
n -> sub = NULL;
p -> sig = n;
}
}


//empieza a cortar en el archivo
void cortar()
{
char nom[50];
unsigned int i = 0, j = 1;
strcpy (cad3, "");
strcpy (nom,"");


fgets(cad,100,in);

while (i < strlen (cad))
{
if (cad!='(')
{
c[0]=cad;
strcat (cad3, c);
i++;
j++;
}
else
{
i=strlen (cad);
}
}
while (j < strlen (cad))
{
if(cad[j]!=')')
{
if (cad[j]!=',')
{
c[0]=cad[j];
strcat (cad2,c);

}//","

else
{
strcpy(nom,cad2);
insertar_lista(nom);
strcpy(cad2, " ");
}//")"
}//termina if
j++;
}//fin ciclo while
}//funcion


void mostrar()
{
int c;
while ( (c = fgetc(in)) != EOF)
   {
      fputc(c, pro);
   }
}


void sublista_union(struct sublista*a,*b) //EN ESTA LINEA ME MARCA EL ERROR QUE ME DICE "EXPECTED" A QUE SE REFIERE ESTE ERROR NO LE ENTIENDO.
{
struct sublista*p,*t;
int l=0;
t=a;
p=b;
   while(p!=NULL)
   {
      while(t!=NULL)
      {
         if(p->dato==t->dato)
         {
            l=1;
         }//if
         t=t->siguiente;
      }//while
         if(l==0)
         {
            insertar_sublista(t,p->dato);
         }//if
      p=p->siguiente;
      t=a;
   }//while
return(t);
}

void lista_union(struct lista*j,*k)
{
struct lista*p,*t;
int l=0;
t=j;
p=k;
   while(p!=NULL)
   {
      while(t!=NULL)
      {
         if(p->nom==t->nom)
         {
            l=1;
         }//if
         t=t->sig;
      }//while
         if(l==0)
         {
            insertar_lista(t,p->nom);
         }//if
      p=p->sig;
      t=j;
   }//while
return(t);
}



void main()
{
in=fopen("maestro.txt","r+");
pro=fopen("pro.txt","w+");

cortar();
mostrar();

fclose(in);
fclose(pro);
getch();
}
2  Programación / Programación C/C++ / Insertar datos en Archivo Binario en: 16 Abril 2012, 00:33 am
Hola a todos, soy nuevo programando C/C++ y en este foro pero leo los temas y me han ayudado bastante pero ahora quisiera pedirles ayuda, nos dejaron un proyecto en la escuela les detallo a continuacion cual es mi problema:

Tengo un archivo de texto con contenido mas o menos asi:
cargar(P001CGL,golpes en bumper frontal,1999,azul)
encontrar(P904DCL)
mostrar

y asi se repite unas 20 lineas y con diferentes datos

tengo que hacer que mi programa corte linea por linea y cada vez que encuentre la palabra CARGAR o MOSTRAR o ENCONTRAR o ELIMINAR cree un archivo binario e inserte los datos también tengo que crear otro archivo donde este ordenado por un indice. hice un codigo pero no me escribe nada en los archivos si alguien me puede ayudar..
Gracias..
Espero haberme explicado y les dejo mi codigo por si alguien me puede ayudar.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <fstream.h>
#include <ctype.h>

struct regv
{
char placa[10];
char descripcion[100];
char modelo[5];
char color[20];
}vehiculo;

struct regvehiculo
{
struct regv vehiculo;
}regmaestro[3];

struct auxiliar
{
char placa[10];
char descripcion[100];
char modelo[5];
char color[20];
char eliminar[1];
}aux;

struct index
   {
   char placa[7];
   int poss;
   }ind;


FILE *entrada;
FILE *salida;
FILE *procesos;
FILE *indice;

char linea[100];
char linea2[100];
char linea3[100];
char c[1];
int pos=0;
int pos1=0;

void leer()
{
   int d;
   entrada = fopen ("vehiculos.txt", "r");
   if (entrada==NULL)
{
    cout<<"Error al abrir el archivo \n";
}
else
{
   cout<<"Leyendo Archivo...";
}
   salida = fopen ("maestro.txt", "w+");
   while ( (d = fgetc(entrada)) != EOF)
   {
      fputc(d, salida);
   }
fclose(salida);
}

//proceso = fopen("registro.txt","w+");

//cortara el archivo...
void cortar()
{

int a=0,b=1,opc=0;

strcpy(linea3,"");
strcpy(vehiculo.placa,"");
strcpy(vehiculo.descripcion,"");
strcpy(vehiculo.modelo,"");
strcpy(vehiculo.color,"");

fgets(linea,100,entrada);

while(a<strlen(linea))
{
   if(linea[a]!='(')
   {
      c[0]=linea[a];
      strcat(linea3,c);
      a++;
   }
   else
   {
      a=strlen(linea);
   }
}//fin de while
while(b<strlen(linea))
{
   if(linea!=')')
   {
      if(linea!=',')
      {
         c[0]=linea;
         strcat(linea2,c);
         b++;
      }
   else
   {
   opc++;
   switch(opc)
      {
         case 1:    strcpy(regmaestro[pos].vehiculo.placa,linea2);
                  strcpy(linea2, " ");
                  break;

         case 2:   strcpy(regmaestro[pos].vehiculo.descripcion,linea2);
                  strcpy(linea2," ");
                  break;

         case 3:   strcpy(regmaestro[pos].vehiculo.modelo,linea2);
                  strcpy(linea2," ");
                  break;

      }//switch
   }//else
   }//if
   else
   {
      strcpy(regmaestro[pos].vehiculo.color,linea2);
      strcpy(linea2," ");
      break;
   }
}//fin de while
}

//ordena los datos del archivo
void ordenar()
{
for(int i=0;i<2;i++)
{
   for(int j=i+1;j<=3;i++)
   {
      strcpy(aux.placa," ");
      strcpy(aux.descripcion," ");
      strcpy(aux.modelo," ");
      strcpy(aux.color," ");
      if(strcmp(regmaestro.vehiculo.placa, regmaestro[j].vehiculo.placa)>0)
         {
         strcpy(aux.placa, regmaestro[j].vehiculo.placa);
         strcpy(aux.descripcion, regmaestro[j].vehiculo.descripcion);
         strcpy(aux.modelo, regmaestro[j].vehiculo.modelo);
         strcpy(aux.color, regmaestro[j].vehiculo.color);

         strcpy(regmaestro[j].vehiculo.placa," ");
         strcpy(regmaestro[j].vehiculo.descripcion," ");
         strcpy(regmaestro[j].vehiculo.modelo," ");
         strcpy(regmaestro[j].vehiculo.color," ");

         //posicion 1...
         strcpy(regmaestro[j].vehiculo.placa, regmaestro.vehiculo.placa);
         strcpy(regmaestro[j].vehiculo.descripcion, regmaestro.vehiculo.descripcion);
         strcpy(regmaestro[j].vehiculo.modelo, regmaestro.vehiculo.modelo);
         strcpy(regmaestro[j].vehiculo.color, regmaestro.vehiculo.color);

         strcpy(regmaestro.vehiculo.placa," ");
         strcpy(regmaestro.vehiculo.descripcion," ");
         strcpy(regmaestro.vehiculo.modelo," ");
         strcpy(regmaestro.vehiculo.color," ");

         //posicion 2...
         strcpy(regmaestro.vehiculo.placa,aux.placa);
         strcpy(regmaestro.vehiculo.descripcion,aux.placa);
         strcpy(regmaestro.vehiculo.modelo,aux.modelo);
         strcpy(regmaestro.vehiculo.color,aux.color);
         }//fin del if
   }//segundo for
}//primer for
}

//indice del archivo
void inde()
{
   strcpy(ind.placa,regmaestro[0].vehiculo.placa);
   fwrite(&ind,sizeof(index),1,indice);
   pos1++;
   ind.poss=pos1++;
   fwrite (&ind.poss,sizeof(index),0,indice);
}

void insertar()
{
indice = fopen("indice.dat", "ab+");
procesos = fopen("procesos.dat", "ab+");
pos++;

if(pos==3){
inde();
fseek (salida,0,SEEK_END);
fwrite(&regmaestro,sizeof(regv),3,procesos);
pos=0;
}

fclose(indice);
fclose(procesos);
}




void main()
{
leer();
cortar();
insertar();
fclose(procesos);
fclose(indice);

}
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines