Fecha y hora actual: Martes 20 Ago 2019 09:35
Índice del Foro

Foros de programación informática, diseño gráfico y Web

En esta comunidad intentaremos dar soporte de programación a todos los niveles, desde principiantes a profesionales de la informática, desarrollo de programas, programación web y mucho más.

Estructuras Externas

Responder al Tema

Te han sido de utilidad algo de éste hilo?

Si, por supuesto

0%
 0%  [ 0 ]

La verdad es que no

0%
 0%  [ 0 ]

"Lo que diga la rubia"

0%
 0%  [ 0 ]
Total de votos: 0

Índice del Foro > C, C#, Visual C++ > Estructuras Externas

Autor Mensaje
badyalberto
Usuario Iniciado


Registrado: 12 Abr 2009
Mensajes: 11

Mensaje Publicado: Sábado 16 May 2009 14:26

Título del mensaje: Estructuras Externas

Responder citando

Código:

#include<stdio.h>

int main(){
    FILE *a,*b,*c;
    char cadena1[100],cadena2[100];
    char carac1,carac2;
    a=fopen("ordenat1.txt","r");
    b=fopen("ordenat2.txt","r");
    c=fopen("conjunt.txt","w");
   
    while (fgets(cadena1,100,a) && fgets(cadena2,100,b)){
          if (strcmp(cadena1,cadena2)<0){
             fputs(cadena1,c);
             printf("%s",cadena1);
          }
          if (strcmp(cadena1,cadena2)>0){
             fputs(cadena2,c);
             printf("%s",cadena2);
             
          }
    }
    fclose(a);
    fclose(b);
    fclose(c);
getchar();
getchar();
}

Necesito ordenar una palabras atraves de dos ficheros, pero no se como hacer para q me lea la palabra anterior, si entra en el primer if o en el segundo, pq si no la printa una vez q la printe despues y no se salte la palabra, no se si me explico xDDD

Volver arriba
Ver perfil del usuario Enviar mensaje privado
WhiteSkull
CoAdmin


Registrado: 20 Mar 2009
Mensajes: 3136
Ubicación: y*width+x

Mensaje Publicado: Domingo 17 May 2009 21:13

Título del mensaje: Re: Estructuras Externas

Responder citando

A ver bady... tu programa funciona, lo único es que escoge UNA de las dos cadenas capturadas, y a ti lo que te interesa es coger los datos de un fichero y de otro y meterlo todo junto en un fichero aparte, pero que esté ordenado alfabeticamente, no?... ésto con un script de Linux, lo haces cómo si nada... pero a la manera que lo haces no es tan sencillo ,pero quizás si... yo lo haría de la siguiente forma, ésto es sólo teoría:

  1. Capturaría todas las cadenas tanto la de un fichero como del otro, todas dentro de un puntero o array, sin ordenar...
  2. Luego usaría ese bonito algoritmo que creastes aquí, Ejercicios con PUNTEROS en C (NOVEL) ,para ordenar todas las cadenas, guardándolas eso si nuevamente en otro puntero o array
  3. Y por último, lo más fácil, copio todo el puntero al fichero conjunt.txt


que te parece! , todavía no lo he programado y ya se que funcionará Fumao

Volver arriba
Ver perfil del usuario Enviar mensaje privado Visitar sitio web del autor
badyalberto
Usuario Iniciado


Registrado: 12 Abr 2009
Mensajes: 11

Mensaje Publicado: Lunes 18 May 2009 21:04

Título del mensaje: Re: Estructuras Externas

Responder citando

Código:

#include<stdio.h>
#include<string.h>
#define PARAULA 100
#define TAM 50

void llegeix (FILE *a, FILE *b, int *i, char *vector[PARAULA]);
void inicialitza(char *vector[PARAULA]);

int main(){
    FILE *a,*b,*c;
    int elems=0,j,k,*i;
    char *aux;
    char vector[PARAULA];
    a=fopen("ordenat1.txt","r");
    b=fopen("ordenat2.txt","r");
    c=fopen("conjunt.txt","w");
    inicialitza(&vector);
    llegeix(&a,&b,&i,&vector);
     
    while(vector[elems]!='\0' && elems<50) //recorre la array hasta el final
        elems++;
    for(j=0;j<elems-1;j++){
        for(k=j+1;k<elems;k++)
        if(strcmp(vector[j],vector[k])>0){
           aux=vector[j];
           vector[j]=vector[k];
           vector[k]=aux;
        }
    }
    for(j=0;j<i;j++)
         fputs(vector[i],c);
    fclose(a);
    fclose(b);
    fclose(c);
getchar();
getchar();
}

void llegeix (FILE *a, FILE *b, int *i,char *vector[PARAULA]){
     char cadena1[100],cadena2[100];
     while (fgets(cadena1,100,a)){
           strcpy(cadena1,vector[i]);
           i++;
     }
     while (fgets(cadena2,100,b)){
           strcpy(cadena2,vector[i]);
           i++;
     }
}
void inicialitza(char *vector[PARAULA]){
    int i;
    for(i=0;i<PARAULA;i++)
        vector[i]='\0';
}



He echo algo asi, pero me dice 29 array subscript is not an integer

Volver arriba
Ver perfil del usuario Enviar mensaje privado
WhiteSkull
CoAdmin


Registrado: 20 Mar 2009
Mensajes: 3136
Ubicación: y*width+x

Mensaje Publicado: Martes 19 May 2009 13:50

Título del mensaje: Re: Estructuras Externas

Responder citando

Eso no tienes ni pies ni cabeza, a ver, si no sabes usar bien los punteros, usa vectores sencillos, luego cuando el programa consta de varias partes, intenta que cada una haga lo que tenga que hacer, no puedes pintar un cuadro y luego preguntarte QUE ES? Primero haz un boceto de lo que quieres y siempre comprobando que funciona... Así que lo primero que harás será hacerlo mediante vectores, una vez que funcione, lo adaptaremos con funciones (para que quede más bonito), aunque podemos prescindir de ellas, y ya para acabar convertirás todos los vectores en punteros, OK?

Código:

#include<stdio.h>
#include<string.h>
// Defnimos las constantes
#define PARAULA 100
#define TAM 50

// Declaramos los punteros de los ficheros
FILE *Fichero1,*Fichero2,*Conjunto;

int main()
{
    // Declaramos las variables
    char cadena1[PARAULA],cadena2[PARAULA],
         cadenas[TAM][PARAULA];
    int i=0;
   
    // Primero ) cargamos los ficheros y guardamos las cadenas
    Fichero1=fopen("ordenat1.txt","r");
    Fichero2=fopen("ordenat2.txt","r");
   
    while (fgets(cadena1,100,Fichero1) && fgets(cadena2,100,Fichero2))
    {
       strcpy(cadenas[i++], cadena1);
       strcpy(cadenas[i++], cadena2);     
    }
    fclose(Fichero1);fclose(Fichero2);
   
    // Segundo ) Ordenamos las cadenas


    // Tercero ) Guardamos el fichero
    for (int l=0;l<i;l++) // DEPURACION: compruebo que es correcto lo que alamcena
        printf("%s",cadenas[l]);
   
    fflush(stdin);getchar();
}
/*****************************************************************************/


Venga anímate bady, te lo he puesto en bandeja, hazme las cosas bien y así conseguirás pogramar cómo un ELITE ajajajaj Ok

Volver arriba
Ver perfil del usuario Enviar mensaje privado Visitar sitio web del autor
Responder al Tema
Mostrar mensajes anteriores:   
Ir a:  
Todas las horas están en GMT + 2 Horas

Temas relacionados

Tema Autor Foros Respuestas Publicado
El foro no contiene ningún mensaje nuevo

estructuras en c++

laephy C, C#, Visual C++ 0 Lunes 18 Feb 2019 23:20 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Estructuras complejas en MIPS

Ojimetro Programación en general 0 Martes 07 Abr 2015 20:57 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Entre estructuras y ficheros me quieren matar, ...

Francisjavi C, C#, Visual C++ 3 Lunes 15 Dic 2014 11:08 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Duda con estructuras en C (Urgente)

jamatbar C, C#, Visual C++ 4 Sábado 04 Ene 2014 17:32 Ver último mensaje
El foro no contiene ningún mensaje nuevo

estructuras y sizeof()

marcela C, C#, Visual C++ 3 Miércoles 16 Oct 2013 22:26 Ver último mensaje
Panel de Control
No puede crear mensajes, No puede responder temas, No puede editar sus mensajes, No puede borrar sus mensajes, No puede votar en encuestas,