es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Quiero organizar e imprimir palabras ingresadas por el usuario en diferentes combinaciones? ¿Alguien puede decirme cómo puedo lograr esto?

input:

Número de palabras que el usuario desea ingresar: 3

Palabra número 1: gato

Palabra número 2: rata

Palabra número 3: perro

output:

gato rata perro

gato perro rata

rata gato perro

rata perro gato

perro gato rata

perro rata gato

algo así.

Aquí está el código de otro programa, donde acomodé las letras en diferentes combinaciones.


<h1>include <stdio.h></h1> <h1>include <stdlib.h></h1> <h1>include <string.h></h1> char character_swap(char<em>, char</em>); void permutation(char*, int, int); int main() { char str[99]; printf("Ingrese una palabra para encontrar sus permutaciones.\n"); scanf("%s",str); system("clear"); int n = strlen(str); permutation(str, 0, n-1); return 0; } char character_swap(char *x, char *y) { char temp; temp = *x; *x = *y; *y = temp; } void permutation(char *a, int l, int r) { if (l == r) printf("%s\n", a); else for (int i = l; i <= r; i++) { character<em>swap((a+l), (a+i)); permutation(a, l+1, r); character</em>swap((a+l), (a+i)); } }

¿Alguien puede decirme cómo puedo hacer lo mismo con palabras?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para hacer lo mismo con palabras, puedes modificar el programa tomando palabras de entrada del usuario y luego creando un array de strings para almacenar esas palabras. Luego, puedes utilizar la misma función de permutación para generar todas las posibles combinaciones de esas palabras. Aquí está el código modificado:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    void swap(char**, char**);
    void permutation(char**, int, int);
    void print_array(char**, int);
    
    int main()
    {
      char words[10][20];
      int n;
    
      printf("Ingrese el número de palabras: ");
      scanf("%d",&n);
    
      printf("Ingrese %d palabras:\n",n);
      for(int i=0;i<n;i++) {="" scanf("%s",words[i]);="" }="" creando="" un="" array="" de="" punteros="" a="" strings="" char*="" arr[n];="" for(int="" i=""></n;i++)><n;i++) {="" arr[i]="words[i];" }="" llamando="" a="" la="" función="" de="" permutación="" permutation(arr,="" 0,="" n-1);="" return="" 0;="" }="" void="" swap(char="" **a,="" char="" **b)="" {="" char="" *temp="*a;" *a="*b;" *b="temp;" }="" void="" permutation(char="" **arr,="" int="" start,="" int="" end)="" {="" if(start="=end)" {="" print_array(arr,end+1);="" }="" else="" {="" for(int="" i="start;i<=end;i++)" {="" swap((arr+start),(arr+i));="" permutation(arr,start+1,end);="" swap((arr+start),(arr+i));="" deshacer="" el="" intercambio="" para="" restaurar="" el="" array="" original="" }="" }="" }="" void="" print_array(char="" **arr,="" int="" n)="" {="" for(int="" i=""></n;i++)><n;i++)
      {
        printf("%s ",arr[i]);
      }
      printf("\n");
    }
    

    en este código, primero tomamos como entrada el número de palabras y las propias palabras del usuario. luego, creamos un array de punteros para almacenar las palabras. utilizamos la función permutation() para generar todas las posibles combinaciones de las palabras. esta función se modifica para tomar un array de punteros en lugar de un array de caracteres. también definimos una función auxiliar print_array() para imprimir las palabras en el array. {=”” printf(“%s=”” “,arr[i]);=”” }=”” printf(“\n”);=”” }=”” ="" en="" este="" código,="" primero="" tomamos="" como="" entrada="" el="" número="" de="" palabras="" y="" las="" propias="" palabras="" del="" usuario.="" luego,="" creamos="" un="" array="" de="" punteros="" para="" almacenar="" las="" palabras.="" utilizamos="" la="" función="" `permutation()`="" para="" generar="" todas="" las="" posibles="" combinaciones="" de="" las="" palabras.="" esta="" función="" se="" modifica="" para="" tomar="" un="" array="" de="" punteros="" en="" lugar="" de="" un="" array="" de="" caracteres.="" también="" definimos="" una="" función="" auxiliar="" `print_array()`="" para="" imprimir="" las="" palabras="" en="" el=""></n;i++)
    {
    printf("%s ",arr[i]);
    }
    printf("\n");
    }

    en este código, primero tomamos como entrada el número de palabras y las propias palabras del usuario. luego, creamos un array de punteros para almacenar las palabras. utilizamos la función permutation() para generar todas las posibles combinaciones de las palabras. esta función se modifica para tomar un array de punteros en lugar de un array de caracteres. también definimos una función auxiliar print_array() para imprimir las palabras en el array.></string.h></stdlib.h></stdio.h>

Comments are closed.