Error en programa en C (Resuelto)

Iniciado por joanj94, 2 Enero 2014, 13:11 PM

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

SoyelRobert

#10
el problema que yo le veo al codigo de leosansan es que el problema pide explicitamente que las palabras a buscar anagramas sean introducidas por fichero o teclado... podría solucionarse así?

Código (cpp) [Seleccionar]

#include <stdio.h>

    struct Palabras{
    char letras[10]; //letras de cada palabra, maximo 10 letras
    };
    struct Palabras Tpalabras[6]; //vector con informacion de todas las palabras, maximo 6.

    void main(void){

    int ch, i, j;

    puts("introduzca sus palabras a buscar separadas por espacios y un punto en la ultima para indicar que se han acabado: ");

    for(i=0;i<6;i++){
        for(j=0;j<10;j++){
            if(ch=getchar() != '.') break;
            else{
                if(ch=getchar()!= ' ')Tpalabras[i].letras[j]=getchar();
                else continue;
            }
        }
    }

.
.
.
.
.




Es solo una idea, usar estructuras para guardar todas las palabras y usar un par de fors para ir guardando cada letra en una casilla de un array para despues comprobar si las palabras del texto pueden ser una permutación de dichas letras.  :huh: :huh: :huh:

es lo unico que se me ha ocurrido
getting louder!

amchacon

#11
No hay ninguna diferencia entre leer de teclado y un fichero. Podrías incluso cambiar el stdin (fichero del teclado) hacia un txt para que se lea directamente con las mismas funciones:

Código (cpp) [Seleccionar]
stdin = freopen("archivo.txt", "r", stdin);

Por cierto la indentación no es la adecuada. No es tabular todo el código, sino tabular los bloques. La idea esque puedas reconocer cual es cada bloque (entiendase por bloque un condicional, una función, un bucle...):

Código (cpp) [Seleccionar]
#include <stdio.h>

struct Palabras
{
  char letras[10]; //letras de cada palabra, maximo 10 letras
};
struct Palabras Tpalabras[6]; //vector con informacion de todas las palabras, maximo 6.

void main(void)
{
  int ch, i, j;

  puts("introduzca sus palabras a buscar separadas por espacios y un punto en la ultima para indicar que se han acabado: ");

  for(i=0;i<6;i++)
  {
      for(j=0;j<10;j++)
      {
          if(ch=getchar() != '.') break;
          else
          {
              if(ch=getchar()!= ' ')Tpalabras[i].letras[j]=getchar();
              else continue;
          }
      }
  }
}


Cada llave abierta son 4 espacios a la derecha más que tabular, y cada llave cerrada son 4 espacios menos para tabular.
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

joanj94

#12
No he dado estructuras, como mucho si a eso os referis son tablas multidimensionales como la de los anagramas que es anagramas[10][50] (10 palabras de 50 letras)

Y un fallo que tengo, es que las palabras las lee bien excepto si terminan con .
Ej: linux(espacio). me leera bien la palabra, pero si pongo linux. no la lee bien, de hecho hace como si no hubiera leido nada y la deja a 0


joanj94

Cita de: amchacon en  2 Enero 2014, 16:05 PM


Y bueno tu problema es:
while(d_c!='.')


Me congratula decir que conseguir que el programa funcionase bien lo que era leer palabras, cambiando ese condicional por:
while(strlen(txt)!=0)
Y modificando la funcion de lectura para que devolviera bien. Ahora el problema ya es otro que es en la funcion de comparar, porque segun parece ordena bien las palabras, pero nose porque algunas ocasiones no funciona la comparacion, voy a seguir provando y si veo que no me sale vuelvo a decir algo, pero esto ya en un post nuevo porque este quedo muy desfasao para el problema actual ya.

Muchas gracias por vuestro tiempo :D