ayuda con este ejercicio, por favor

Iniciado por alexandra.vargas, 5 Enero 2014, 22:50 PM

0 Miembros y 1 Visitante están viendo este tema.

alexandra.vargas

Hola, soy alexandra vargas y tengo  que hacer este ejercicio en lenguaje c,  utilizando "archivos de texto", si alguien pudiera a ayudarme apelando a su sabiduría en la programación.  El ejercicio dice asi:


Por favor ayuda, tengo que entregarlo el jueves 9 de enero del 2014
en el dev-c


Se lee un archivo de texto, cuyo tamaño tiene como mínimo 200 palabras distintas y como máximo 300 palabras distintas. Todas las palabras distintas son reconocidas y almacenadas en una matriz
E   S   T   O            
E   S                  
U   N                  
E   J   E   M   P   L   O   
                     

SE TIENE  además un segundo archivo de texto, que es la copia del primero, salvo que tiene  100 a 150 apalabras con errores ortográficos, estos errores oscilan entre 1 y n caracteres mal escritos por palabras (siendo n el largo de alguna de las palabras).
Su programa deberá autocorregir el segundo archivo de texto considerando que el primero las tiene correctas. Cuando una palabra con error puede ser corregida con más de una del texto original (el primero de los archivos), se deberá consultar al usuario mostrando la palabra con el error, y todas las alternativas posibles. De esta manera el usuario podrá elegir la alternativa que debe quedar en el texto corregido.
El programa deberá imprimir todas las palabras distintas del original, el texto con errores, y el texto corregido, permitiendo al usuario elegir entre estas alternativas mediante un menú.

do-while

Solo te quedan tres días y no sabes por donde empezar. Suerte. Por cierto, no se hacen trabajos. Si no pones el código que llevas hecho no podemos decirte donde tienes los errores.

Además, faltan datos. ¿Que tipo de errores hay en el segundo fichero? ¿ transposicion? ¿sustitucion? ¿inserción?  ¿deleción? ¿Cualquiera de los anteriores?

¡Saludos!
- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!


leosansan

Cita de: alexandra.vargas en  6 Enero 2014, 03:21 AM
ayudame tu!!!

¡¡¡Y encima con esas!!!

¿Y un cafetito también no se te apetece?

Perdona, igual no lo sabes por no haberte leído las reglas del foro: no se hacen tareas desde cero, sólo se resuelven dudas sobre un código que previamente has tenido que hacer tú. ¿Lo pillas?.

:rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes:

Y para cuando postees el código elige las etiquetas GeSHi y toma la C++ y en medio de las etiquetas Code que aparecen "pegas" tu código. Al no hacerlo de esta manera parte del código no sale correcta, especialmente las matrices.

;-)  ;-) Felices Navidades y Próspero Año Nuevo.  ;-)  ;-)

¡¡¡¡ Saluditos! ..... !!!!





do-while

#5
Cita de: alexandra.vargas en  6 Enero 2014, 03:21 AM
ayudame tu!!!

Igual en carne y hueso tienes escote suficiente como para pedir así las cosas y que las hagan. Lastima que en el foro no podamos apreciarlo.

Volviendo al tema:
Cita de: alexandra.vargas en  6 Enero 2014, 03:21 AM
ayudame tu!!!

Deja que me lo piense... uhm.... NO

Buenas noches y suerte con tu trabajo.

Cita de: leosansan en  6 Enero 2014, 14:18 PM
¿Y un cafetito también no se te apetece?

Ya que insistes tanto con el tema, vale. C/Falsa Nº 123 (Que grandes Los Simpson)
Un cortadito con leche del tiempo, por favor, y un solo azucarillo si puede ser.

¡Saludos!
- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!

jaxoR

Cita de: do-while en  7 Enero 2014, 00:19 AM
Igual en carne y hueso tienes escote suficiente como para pedir así las cosas y que las hagan. Lastima que en el foro no podamos apreciarlo.

Apoyo la moción, con toda violencia.

alexandra.vargas

Muchas gracias, por su buena buena onda y comentarios, ha sido muy lindo leerlos, pero miren esto es lo que llevo

LA IDEA QUE EL PROGRAMA EN UN ARCHIVO DE TEXTO TENGO 200 PALABRAS ESCRIBAS CORRECTAMENTE Y EN OTRO ARCHIVO DE TEXTO TENGO 150 PALABRAS MAL ESCRITAS Y BIEN ESCRITAS Y QUE ESTE ME CORRIJA LAS PALABRAS MAL ESCRITAS.

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

char pbueno[300];
char pmalo[300];

void deletrearcorre(char[], char[]);//deletrear letra por letra
int noletra(char c);// caracter que no correspondfa
void remover(char pmalo[]);// remover puntuaciones ,.
void mayuscula( char pmalo[]);// mayuscula
void minusculabueno( char pbueno[]); //parecido
int largomalo( char pmalo[]);//medir palabra delñ articulo
void nextpmaloWord(char pmalo[], char pmaloWord[],  int pmaloLength, char dictionaryWord[], char pbueno[]);

int main(void) {
    FILE* palabras;//llamo los textos el bueno y el malo
    FILE* palabras2;
    int bytes_read;
    char* p;
    char* z;
    char caracter, caracter2;
    char mat1[300][40], mat2[300][40];

    palabras = fopen("palabras.txt", "r");
    if (palabras == 0) {
        printf("no se puede abrir archivo  \"palabras.txt\"\n");
        return -1;
    }

    palabras2 = fopen("palabras2.txt", "r");
    if (palabras2 == 0) {
        printf("no se puede abrir archivo  \"palabras2.txt\"\n");
        return -1;
    }

   
   
   /* leo el diccionario */
    z = pbueno;
    printf("                palabras bien escritas \n\n");
    printf("%s", z);
    z = fgets(z, 1000, palabras);
    printf("%s", z);
   
   
   
    while (z != 0) {
        z = fgets(z, 1000, palabras);
       printf("%s", z);
   
       while (*z != '\0') {
      z += 1;
        }
        z = fgets(z, 1000, palabras);
       
    }
   
   

    /* read pmalo */
    p = pmalo;
    bytes_read = fread(p, 1, 1000, palabras2);
    printf("\n               palabras mal escritas \n");
    printf("%s", p);
   
    p += bytes_read;
    while (bytes_read != 0) {
        bytes_read = fread(p, 1, 1000, palabras2);
        p += bytes_read;
    }
    *p = 0;

    deletrearcorre(pmalo, pbueno);
}   



int pmaloPosition =0; //posisicoon la palanbra del articulo
int dictionaryPosition = 0;




void deletrearcorre(char pmalo[], char pbueno[]) {
    char pmaloWord[50];
    char dictionaryWord[50];
    int pmaloLength = largomalo(pmalo);
    remover(pmalo);
    mayuscula(pmalo);
    minusculabueno(pbueno);
    nextpmaloWord(pmalo, pmaloWord, pmaloLength, dictionaryWord, pbueno);
   

}

void nextDictionaryWord(char pbueno[], char dictionaryWord[]){
    int i;
    for(i =0; pbueno[dictionaryPosition] != '\n'; i++){
        dictionaryWord = pbueno[dictionaryPosition];
        dictionaryPosition++;
    }
}
int noletra(char c){
    if ( (c>='a'&&c<='z') || (c>='A'&&c<='Z'))
        return 1;
    return 0;
}

void remover(char pmalo[]){
    int i, j=0;
    for ( i =0; pmalo != 0; i++){
        if (noletra(pmalo)){
            pmalo[j] = pmalo;
            j++;
        }
        else if (!noletra(pmalo)){
            pmalo[j] = ' ';
            j++;
        }       
    }
}

void mayuscula( char pmalo[]){
    int i=0;
    for( i; pmalo != 0; i++){
        if ( pmalo >= 'A' && pmalo <='Z')
            pmalo = pmalo + 32;
    }
}

void minusculabueno( char pbueno[]){
    int i=0;
    for(i; pbueno != 0; i++){
        if (pbueno >= 'A' && pbueno <= 'Z'){
            pbueno = pbueno + 32;
        }
    }
}


int largomalo( char pmalo[] ){
    int count=0;
    while (pmalo[count] != 0)
        count++;
    return count;
}

void nextpmaloWord(char pmalo[], char pmaloWord[],  int pmaloLength, char dictionaryWord[], char pbueno[]){
    int j, i;
comienzo:
    while(!noletra(pmalo[pmaloPosition])){
        if (pmalo[pmaloPosition] == 0){
            return;
        }
        pmaloPosition++;
    }
    for(j=0; pmalo[pmaloPosition] != ' ' || pmaloPosition == pmaloLength; j++){
        pmaloWord[j] = pmalo[pmaloPosition];
        pmaloPosition++;
    }   

    if (strlen(pmaloWord)<2){
        goto comienzo;
    }
    pmaloWord[j+1] = 0;
    //dictionary search
        while (!strncmp(pmaloWord, dictionaryWord,strlen(pmaloWord))){
            nextDictionaryWord(pbueno, dictionaryWord);
        }
        if(strncmp(pmaloWord, dictionaryWord,strlen(pmaloWord)))
           
        printf(pmaloWord);
}