[ Foro de C ]

AYUDA URGENTE

18-Dec-2023 18:45
Invitado (Carlos)
0 Respuestas

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

typedef struct {
   int fila;
   int columna;
} Coordenadas;

void buscar(char** palabras, char** sopa, int num, int lado1, int lado2) {
   for (int p = 0; p < num; p++) {
       int longitud_palabra = strlen(palabras[p]);

       for (int i = 0; i < lado2; i++) {
           for (int j = 0; j < lado1; j++) {
               if (sopa[i][j] == palabras[p][0]) {
                   int coincidencias = 0;
                   while (coincidencias < longitud_palabra && sopa[i][j + coincidencias] == palabras[p][coincidencias]) {
                       coincidencias++;
                   }

                   if (coincidencias == longitud_palabra) {
                       printf("La palabra \"%s\" ha sido encontrada en las siguientes coordenadas:\n", palabras[p]);
                       printf("Letra '%c' en coordenada de la columna %d, coordenada de la fila %d\n", palabras[p][0], j, i);
                       printf("\n");
                       break;  // Detener la búsqueda para esta palabra una vez encontrada
                   }
               }
           }
       }
   }
}

int main() {
   int num;
   scanf("%d", &num);

   char** palabras = malloc(num * sizeof(char*));
   for (int i = 0; i < num; i++) {
       palabras[i] = malloc(21 * sizeof(char));  // Aumentar el tamaño de la palabra para incluir el carácter nulo
       scanf("%s", palabras[i]);
   }

   int lado1, lado2;
   scanf("%i %i", &lado1, &lado2);

   char** sopa = malloc(lado2 * sizeof(char*));
   for (int i = 0; i < lado2; i++) {
       sopa[i] = malloc((lado1 + 1) * sizeof(char));
       for (int j = 0; j < lado1; j++) {
           scanf(" %c", &sopa[i][j]);
       }
       sopa[i][lado1] = '\0';
   }

   buscar(palabras, sopa, num, lado1, lado2);

   for (int i = 0; i < num; i++) {
       free(palabras[i]);
   }
   free(palabras);

   for (int i = 0; i < lado2; i++) {
       free(sopa[i]);
   }
   free(sopa);

   return 0;
}

ESTA SOPA DE LETRAS DA MAL, ALGUIEN ME LA PUEDE CORREGIR?




(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)