La Web del Programador: Comunidad de Programadores
https://www.lawebdelprogramador.com/foros/C-Visual-C/593680-Sopa-de-letras-en-Turbo-C.html

Sopa de letras en Turbo C++

Sopa de letras en Turbo C++

Publicado por Arnoldo (1 intervención) el 07/02/2006 02:57:11
Saludos.

Les agradecería que me proporcionaran, ya sea un website, el algoritmo o el código de fuente de algún programa en C que arme una sopa de letras, y que se aproxime a algo como lo que a continuación necesito:

1. Que llene una matriz de 'n' renglones por 'c' columnas, cada celdilla con una letra al azar.
2. Que el usuario introduzca 'n' palabras de 'l' tamaño.
3. Que se acomoden las palabras en un sentido elegido por el usuario, que puede ser:
a) Diagonales
1) Ascendentes.
2) Descendentes.
b) Horizontales.
c) Verticales.
- Estos dos últimos pueden estar en sentido lateral o invertido.
4. Si las palabras no caben en un sentido determinado, informarlo al usuario.
5. Imprimir la sopa de letras.

No les pido que me hagan mi trabajo, lo que les pido en todo caso son ideas de cómo armar este programa, ya que apenas estoy conociendo el lenguaje de Turbo C++ y además lo tengo que hacer orientado a objetos, con clases, procedimientos y funciones.

Por cualquier ayuda dada a mi petición, estoy a sus órdenes.

Sopa de letras en Turbo C++

Publicado por Gustavo Cortes Gomez (1 intervención) el 06/03/2006 02:55:51
El problema que me planteas es un tanto tedioso de resolver pero,ya que se tiene que hacer una busqueda tanto por filas , columnas y combinacion de ambas para que se de una solucion.. te doy un pequeña solucion que es esta que hice:
1.- busca la palabra de izquierda a derecha (encaso de que este escrita haci)
2.-busca la palabra de derecha a izquierda(en caso de que este escrita al revez)
3.-busca la palabra de abajo hacia arriba
4.-busca la palabra de arriba hacia abajo
5.-TU TURNO DE PROGRAMAR CON LO YA HECHO TE TOCA HACER LA S DIAGONALES....SI TIENES DUDAS SOBRE COMO HACER ESTAS FALTANTES BUSCAME ,...EN MI DIRECCION DE CORREO ELECTRONICO

// Sopa.cpp por: GUSTAVO CORTES GOMEZ
// Siempre que encuentre la palabra la cambia de color (OK ¡¡¡¡ )
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <ctype.h>
#include <string.h>
void derecha(void);
void izquier(void);
void bajada(void);
void subida(void);
////////////// MIS VARIABLES GLOBALES /////////////////////
char sop[10][10]={'M','M','L','E','E','N','A','E','V','E',
'E','R','H','O','N','G','O','S','T','R',
'X','X','O','T','I','R','R','A','C','A',
'I','S','A','P','P','O','T','A','P','S',
'C','C','M','L','A','A','I','Z','O','T',
'O','A','A','U','A','N','U','L','P','U',
'S','O','M','B','R','E','R','O','M','P',
'C','N','E','A','R','R','I','I','O','O',
'W','O','J','E','N','O','C','P','Z','E',
'A','A','Z','A','A','L','N','Y','T','D'};
int a=0,b=0,suma=0,tot=0,acum=0,bsuma=0;
char can[20],vol[20],op;
////////////////////////////////////////////////////////////////
void main()
{
int f,c,i;
clrscr();
do
{
textbackground(BLACK);
textcolor(WHITE);//imprime mi sopa de letras
for(f=0;f<10;f++)
{
for(c=0;c<10;c++)
{
gotoxy((c+3)*2,(f+1)*2);cprintf("%c",sop[f][c]);
}
}
gotoxy(40,4);printf(" ");
gotoxy(33,7 );cprintf("HONGOS");
gotoxy(33,8 );cprintf("PLUMA");
gotoxy(33,9 );cprintf("SOMBRERO");
gotoxy(33,10);cprintf("TROMPO");
gotoxy(33,11);cprintf("LORENA");
gotoxy(33,12);cprintf("CONEJO");
gotoxy(33,13);cprintf("PATO");
gotoxy(35,15);cprintf("Cadena . ");
gotoxy(35,16);cprintf(" ");
gotoxy(35,16);cscanf("%s",&vol);
tot=strlen(vol);
for (i=0; i<tot; i++)
{
can[i] = toupper(vol[i]);
}
derecha();
textcolor(WHITE);
gotoxy(10,24);cprintf("Otra palabra ?(S/N) ");
gotoxy(10,25);scanf("%s",&op);
gotoxy(35,16);cprintf(" ");
gotoxy(10,25);cprintf(" ");
}while(op=='S'||op=='s');
}
void derecha(void)
{
int ci,cf,ff;
int pint;

a=0; textcolor(WHITE);
do//for(a=0;a<10;a++)
{

suma=0;
b=0;
do//for(b=0;b<10;b++)
{
if(sop[a][b]==can[suma])
{
suma=suma+1;
acum=acum+1;
if(acum==1){ci=b;}
}
else
{
acum=0;
}
if(acum==tot)
{ cf=b;ff=a;
break;
}
b++;
}while(b<10);
if(acum==tot)
{ cf=b;ff=a;
break;
}
a++;
}while(a<10);
////////////////////////////////////////////
if(acum==tot)
{
/* gotoxy(50,1);cprintf("columnaInici : %d",ci);
gotoxy(50,2);cprintf("columnaFinal : %d",cf);
gotoxy(50,3);cprintf("fila : %d",ff);*/
//gotoxy(40,2);cprintf("Si esta");
for(pint=ci;pint<=cf;pint++)
{
textcolor(RED);
gotoxy((pint+3)*2,(ff+1)*2);cprintf("%c",sop[ff][pint]);
}
}
else
{
izquier();
}
}
void izquier(void)
{
int ci,cf,ff;
int pint;
textcolor(WHITE);
a=0;
do
{
suma=0;
b=10;
do
{
if(sop[a][b]==can[suma])
{
suma=suma+1;
acum=acum+1;
if(acum==1){ci=b;}
}
else
{
acum=0; suma=0;
}
if(acum==tot)
{ cf=b;ff=a;
break;
}
b--;
}while(b>=0);
if(acum==tot)
{ cf=b;ff=a;
break;
}
a++;
}while(a<10);
////////////////////////////////////////////
if(acum==tot)
{
for(pint=ci;pint>=cf;pint--)
{
textcolor(GREEN);
gotoxy((pint+3)*2,(ff+1)*2);cprintf("%c",sop[ff][pint]);
}
//gotoxy(40,4);cprintf("Si esta");
}
else
{
bajada();
}
}
void bajada(void)
{
int ci,cf,ff;
int pint;
textcolor(WHITE);
a=0;
do
{
suma=0;
b=0;
do
{
if(sop[b][a]==can[suma])
{
suma=suma+1; acum=acum+1;
if(acum==1){ci=b;}
}
else
{
acum=0;
}
if(acum==tot)
{
cf=b;ff=a;
break;
}
b++;
}while(b<10);
if(acum==tot)
{ cf=b;ff=a;
break;
}
a++;
}while(a<10);
////////////////////////////////////////////
if(acum==tot)
{
for(pint=ci;pint<=cf;pint++)
{
textcolor(BLUE);
gotoxy((ff+3)*2,(pint+1)*2);cprintf("%c",sop[pint][ff]);
}
//gotoxy(40,3);printf("Si esta");
}
else
{
subida();
}
}
void subida(void)
{
int ci,cf,ff;
int pint;
textcolor(WHITE);
a=0;
do{
suma=0;
b=10;
do
{
if(sop[b][a]==can[suma])
{
suma=suma+1; acum=acum+1;
if(acum==1){ci=b;}
}
else
{
acum=0; suma=0;
}
if(acum==tot)
{ cf=b;ff=a;
break;
}
b--;
}while(b>=0);
if(acum==tot)
{ cf=b;ff=a;
break;
}
a++;
}while(a<10);
if(acum==tot)
{

for(pint=ci;pint>=cf;pint--)
{
textcolor(YELLOW);
gotoxy((ff+3)*2,(pint+1)*2);cprintf("%c",sop[pint][ff]);
}
// gotoxy(40,4);printf("Si esta");
}
else
{
gotoxy(40,4);printf("No se encuentra");

}
}

Sopa de letras en Turbo C

Publicado por ANA LILIANA (1 intervención) el 22/06/2011 00:13:18
oyes quiero saber es q corre pero como funciona q es lo q tengo q apretar para q salga la repuesta corecta

RE:Sopa de letras en Turbo C++

Publicado por JAVIER (1 intervención) el 12/12/2007 09:41:49
A MODO DE SUGERENCIA, USANDO UN FOR Y UN SWITCH SE PUEDE VARIAR LA MATRIZ.

RE:Sopa de letras en Turbo C++

Publicado por German Suárez (1 intervención) el 06/02/2008 15:26:17
Realiza el algoritmo siguiente y prueba

1.-tomar palabra
2.-generar dos números aleatorios ( coordenadas para situar la palabra)
3.-generar un número aleatorio ( para determinar la dirección)
4.-situar cada letra, pero comprobando que no hay nada debajo o que la letra es igual a la que se pretende colocar
5- si se sale de la matriz volver al punto 3, si falla con todas las direcciones, volver al punto 2
6.-Si falla, entonces se repite el proceso ( desde el punto 2).
7.- Si todo va bien vuelta al punto 1 hasta que se acaben las palabras.

Sopa de letras en Dev C++

Publicado por edwin garcia (1 intervención) el 07/05/2008 22:04:23
#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
char sopa[5][5];
char letra[5];

for(int fil=0; fil <5; fil++){
for(int col=0; col<5; col++){
sopa[fil][col]=getchar();
}
cout<<endl;
}
cout<<"digite palabra: ";
cin>>letra;
for(int fil=0; fil <5; fil++){
for(int col=0; col<5; col++){
if (letra[0]==sopa[fil][col]){
cout<<"fil: "<<fil<<"col: "<<col<<endl;
}
}
cout<<" "<<endl;
}
system("PAUSE");
return EXIT_SUCCESS;
}

RE:Sopa de letras en C#

Publicado por DAN (1 intervención) el 31/07/2008 23:46:56
por favor no kiero ke hagan mi trabajpo solo kiero ke me den una idea para poder ubicar las palabras ya tengo casi listo mi algoritmo solo me falta ese punto por favor mañana necesito entregar mi trabajo ok

Sopa de letras - algoritmo para optimizar?

Publicado por Jose (1 intervención) el 17/12/2009 17:56:22
Perdonen que resucite este viejo hilo.
Veo que sólo colocan una palabra al azar, procurando que esté en una posición válida.
¿Hay alguna manera de optimizar la sopa de letras, de manera que haga caber todas las palabras cruzándolas si es necesario?
Gracias.

RE:Sopa de letras en C#

Publicado por Axel (1 intervención) el 10/02/2010 06:16:39
me podrian dar el codigo para la sopa de letras?

Sopa de letras en Turbo C++

Publicado por aracelis (1 intervención) el 27/03/2014 03:37:48
hola en verdad necesito un codigo km ese.. es maravilloso..pero en c.. es k estoy fulll tanto en trabajo y estudios y no m ha dado chance de hacerlo.. agradecida si m pueden ayudar

RE:Sopa de letras en Turbo C++

Publicado por John Mejia (1 intervención) el 30/11/2010 15:57:39
hola compañero, tengo que hacer una sopa con las mismas caracteristicas que esa! agradeceria mucho si pudieras enviar el codigo al correo [email protected] puesto que estoy tan cargado de materias q no he podido hacerla! te lo agradeceria mucho !

Sopa de letras en Turbo C++

Publicado por angel (1 intervención) el 22/04/2015 06:17:47
hey disculpa las molestias es que te iba a decir que yo tambien ocupo hacer una igual que la tuya y queria ver si me puedes ayudar por favor!!! :(