Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Duda cadena de caracteres

Estas en el tema de Duda cadena de caracteres en el foro de C/C++ en Foros del Web. Cita: Escribir un programa que lea una palabra (maximo 20 caracteres) y escriba todas las palabras que se pueden generar ciclicamente a partir de ella ...
  #1 (permalink)  
Antiguo 02/07/2010, 11:33
 
Fecha de Ingreso: julio-2010
Mensajes: 1
Antigüedad: 13 años, 10 meses
Puntos: 0
Duda cadena de caracteres

Cita:
Escribir un programa que lea una palabra (maximo 20 caracteres) y escriba todas las palabras que se pueden generar ciclicamente a partir de ella (por ejemplo, "programa" --> "rogramap", "ogramapr", "gramapro", "ramaprog", "amaprogr", "maprogra", "aprogram")
Tengo el codigo y mas o menos me sale, xo aparecen caracteres q no tengo ni idea de donde salen... a ver si alguien me ayuda :)

Código:
char text[20], aux[20];
    int tam;
    
    printf ("Dame una palabra --> ");
    gets(text);
    tam = strlen(text);
    
    for ( int i = 0; i < tam-1; i++)
    {
        for ( int j = 0; j <= tam; j++)
        {
                if ( j == tam)
                    aux[tam-1] = text[0];
                else
                    aux[j] = text[j+1];
        }
        
        for ( int j = 0; j <= strlen(aux); j++)
            text[j] = aux[j];
            
        for ( int j = 0; j <= strlen(aux); j++)
            putchar(aux[j]);
        printf ("\n");
    }
  #2 (permalink)  
Antiguo 02/07/2010, 12:06
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 11 meses
Puntos: 61
Respuesta: Duda cadena de caracteres

Sera que accedes a aux[tam] y aux[tam] no "existe" pues en un arreglo los indices validos van de 0 al tamaño -1 ?
  #3 (permalink)  
Antiguo 02/07/2010, 12:09
 
Fecha de Ingreso: enero-2008
Mensajes: 229
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: Duda cadena de caracteres

El número de palabras que puedes generar es igual a n!/(n-k)!,

donde
n el número de letras,
y
k es el número de elementos que vas a utilzar para formar la palabra

por ej en tu caso tienes un 8 caracteres(si consideras dos veces la a). Ahora si tu quieres formar todas las palabaras tendrias k formar 8!/(8-8)! = 40320 palabras

Con respecto a tu pregunta, el error es muy simple al terminar de crear una permutación, le agregas '\0'

por ej creas la cadena rogramap,
texto[strlen(text)] = '\0';
Debes tomar en cuenta que para leer 20 caracteres los arreglos deben ser 21 elementos ya el ultimo es utilizado para colocar '\0' que indica que es el final de la cadena.

Etiquetas: caracteres, cadenas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:07.