Hola tengo una duda y es que estoy intentando hacer una sopa de letras, introduzco la palabra a encontrar:
Ejemplo: moto
Luego que introduzca 16 caracteres (ya que es una matriz 4x4):
lola
moto
coco
pepe
Ahora tiene que mostrar la matriz y luego buscar la palabra y decirme en que fila empieza y acaba y lo mismo en columna.
El problema lo tengo en las funciones buscar horizontal derecha izquierda, vertical arriba abajo y diagonal superior y inferior. Si alguien me puede ayudar. Gracias de antemano!
Código C++:
Ver original#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#define MIDA 4
void llegirParaula(char paraula[MIDA]);
void llegirSopa(char sopa[MIDA][MIDA]);
void mostrarSopa(char sopa[MIDA][MIDA]);
void hor_dre(char sopa[MIDA][MIDA], char paraula[]);
void ver_dal(char sopa[MIDA][MIDA], char paraula[]);
void hor_esq(char sopa[MIDA][MIDA], char paraula[]);
void ver_bai(char sopa[MIDA][MIDA], char paraula[]);
int main()
{
char paraula[MIDA];
char sopa[MIDA][MIDA];
printf("Introdueix una cadena acabada en \'\\n\': "); llegirParaula(paraula);
printf("Introdueix els 64 caracters de la sopa: \n"); llegirSopa(sopa);
mostrarSopa(sopa);
printf("\nParaula a cercar: %s\n", paraula
);
hor_dre(sopa, paraula);
/*
ver_dal(sopa, paraula);
hor_esq(sopa, paraula);
ver_bai(sopa, paraula);
*/
}
void llegirParaula(char paraula[MIDA]){
char c;
int i = 0;
while(c != '\n' && i < MIDA){
paraula[i] = c;
i = i + 1;
}
paraula[i] = '\0';
}
void llegirSopa(char sopa[MIDA][MIDA]) {
int f, c;
char car;
f = 0;
while (f < MIDA) {
c = 0;
while (c < MIDA) {
sopa[f][c] = car;
c = c + 1;
}
}
f = f + 1;
}
}
void mostrarSopa(char sopa[MIDA][MIDA]){
int f, c;
for(f = 0; f < MIDA; f++){
for(c = 0; c < MIDA; c++){
}
}
}
void hor_dre(char sopa[MIDA][MIDA], char paraula[]){
int f, c, k;
char car;
bool trobat = false;
for(f = 0; f < MIDA && !trobat; f++)
{
for(k = 0, c=0; c < MIDA && !trobat; c++){
if(strcmp(paraula
, sopa
[f
]) == 0){ trobat = true;
}
}
if(trobat)
printf("\t|| La paraula [%s] es troba en la sopa ||\n", paraula
); else
printf("\t|| La paraula [%s] no hi es ||\n", paraula
); }
void ver_dal(char sopa[MIDA][MIDA], char paraula[])
{
int f, c, k, ok;
char car;
for(c=0; c < MIDA; c++)
{
for(k = 0, f=0; f < MIDA; f++){
if(strcmp(paraula
, sopa
[c
]) == 0){ ok = 1;
}
}
if(ok != 0)
printf("\t|| La paraula [%s] es troba en la sopa ||\n", paraula
); else
printf("\t|| La paraula [%s] no hi es ||\n", paraula
); }
void hor_esq(char sopa[MIDA][MIDA], char paraula[]){
int f, c, k, ok;
char car;
for(f=0; f < MIDA; f++)
{
for(k = 0, c=0; c < MIDA; c--){
if(strcmp(paraula
, sopa
[f
]) == 0){ ok = 1;
}
}
if(ok != 0)
printf("\t|| La paraula [%s] es troba en la sopa ||\n", paraula
); else
printf("\t|| La paraula [%s] no hi es ||\n", paraula
); }
void ver_bai(char sopa[MIDA][MIDA], char paraula[])
{
int f, c, k, ok;
char car;
for(c=0; c < MIDA; c++)
{
for(k = 0, f=0; f < MIDA; f--){
if(strcmp(paraula
, sopa
[c
]) == 0){ ok = 1;
}
}
if(ok != 0)
printf("\t|| La paraula [%s] es troba en la sopa ||\n", paraula
); else
printf("\t|| La paraula [%s] no hi es ||\n", paraula
); }