C/Visual C - programa urgente

 
Vista:

programa urgente

Publicado por Rusmely (3 intervenciones) el 31/05/2003 16:16:05
Un programa en C que lea el contenido de un archivo tipò texto y extraiga cada palabra ( cadena de caracteres ) y determine si la paylabra es o no palìndromo (si se lee igual de derecha a izquierda). El programa tambien debe imprimir cada palabra. POR FAVOR EXPLIQUENME

Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Programa para leer un archivo y verificar palíndromos

Publicado por Alejandro (1286 intervenciones) el 01/07/2025 20:34:02
Rusmely, a continuación, te presento un programa en C que realiza las tareas que mencionaste: leer un archivo de texto, extraer cada palabra y determinar si cada palabra es un palíndromo. También imprimirá cada palabra en la consola.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
 
#define MAX_WORD_LENGTH 100
 
// Función para verificar si una palabra es un palíndromo
int esPalindromo(const char *palabra) {
    int longitud = strlen(palabra);
    for (int i = 0; i < longitud / 2; i++) {
        if (palabra[i] != palabra[longitud - 1 - i]) {
            return 0; // No es palíndromo
        }
    }
    return 1; // Es palíndromo
}
 
int main() {
    FILE *archivo;
    char palabra[MAX_WORD_LENGTH];
 
    // Abrir el archivo en modo lectura
    archivo = fopen("texto.txt", "r");
    if (archivo == NULL) {
        printf("Error al abrir el archivo.\n");
        return 1;
    }
 
    // Leer palabras del archivo
    while (fscanf(archivo, "%s", palabra) != EOF) {
        // Convertir a minúsculas para una comparación insensible a mayúsculas
        for (int i = 0; palabra[i]; i++) {
            palabra[i] = tolower(palabra[i]);
        }
 
        // Imprimir la palabra
        printf("Palabra: %s - ", palabra);
 
        // Verificar si es palíndromo
        if (esPalindromo(palabra)) {
            printf("Es un palíndromo.\n");
        } else {
            printf("No es un palíndromo.\n");
        }
    }
 
    // Cerrar el archivo
    fclose(archivo);
    return 0;
}

Explicación del programa:



1. Inclusión de bibliotecas: Se incluyen las bibliotecas necesarias para manejar archivos (`stdio.h`), manipulación de cadenas (`string.h`), y funciones de conversión de caracteres (`ctype.h`).

2. Definición de constantes: Se define `MAX_WORD_LENGTH` para establecer la longitud máxima de las palabras que se leerán.

3. Función `esPalindromo`: Esta función toma una cadena como argumento y verifica si es un palíndromo. Compara los caracteres desde el inicio y el final de la cadena, avanzando hacia el centro. Si encuentra una discrepancia, devuelve 0 (no es palíndromo); si no, devuelve 1 (es palíndromo).

4. Función `main`:
- Se abre un archivo llamado `texto.txt` en modo lectura.
- Se verifica si el archivo se abrió correctamente.
- Se utiliza un bucle `while` para leer cada palabra del archivo. La función `fscanf` se usa para extraer palabras.
- Cada palabra se convierte a minúsculas para asegurar que la comparación sea insensible a mayúsculas.
- Se imprime la palabra y se llama a la función `esPalindromo` para verificar si es un palíndromo, imprimiendo el resultado correspondiente.
- Finalmente, se cierra el archivo.

Notas:


- Asegúrate de que el archivo `texto.txt` esté en el mismo directorio que el programa o proporciona la ruta completa al archivo.
- Este programa considera solo palabras y no maneja puntuaciones. Si deseas incluir puntuaciones, necesitarías implementar una lógica adicional para filtrarlas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar