elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Crear parejas de letras en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Crear parejas de letras en C  (Leído 2,381 veces)
w_walter

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Crear parejas de letras en C
« en: 2 Diciembre 2016, 22:20 pm »

Buenas soy nuevo en el foro y tenia una duda para un trabajo de clase. El tema es que tengo que crear 10 parejas de letras separadas por un espacio y que éstas letras no se repitan. No consigo hacer que no se repitan algunas.

Mi codigo es el siguiente:
Código
  1. #include<stdlib.h>
  2. #include<time.h>
  3. #include<stdio.h>
  4. #include <windows.h>
  5. int main()
  6. {
  7.    int i, m, num;
  8.    int b=0;
  9.    int j=0;
  10.    int aux=0;
  11.    char auxiliar[21];
  12.    char vector[26];
  13.    char LETRA ='A';
  14.    srand((unsigned)time(NULL));
  15.  
  16.  
  17.    for(i=0; i<=26; i++)
  18.    {
  19.        vector[i]=LETRA;
  20.        LETRA++;
  21.    }
  22.  
  23.    for(i=0; i<=26; i++)
  24.    {
  25.        num=65+rand()%26;
  26.  
  27.        vector[i]=num;
  28.  
  29.        for(m=0; m<i; m++)
  30.        {
  31.            while(vector[m]==vector[i])
  32.            {
  33.                vector[i]=65+rand()%26;
  34.            }
  35.        }
  36.    }
  37.  
  38.    for(i=0; i<=26; i++)
  39.    {
  40.        if(vector[i]!=65+i)
  41.        {
  42.            while(j<21 && aux==0)
  43.            {
  44.            if(vector[i]==auxiliar[j])
  45.                {
  46.                    aux=1;
  47.                }
  48.                j++;
  49.            }
  50.  
  51.            if(aux==0)
  52.            {
  53.                auxiliar[b]=65+i;
  54.                auxiliar[b+1]=vector[i];
  55.                b=b+2;
  56.            }
  57.        }
  58.  
  59.        j=0;
  60.        aux=0;
  61.    }
  62.    j=0;
  63.  
  64.    for(i=0; i<10; i++)
  65.    {
  66.        printf("%c%c ",vector[j],vector[j+1]);
  67.        j=j+2;
  68.    }
  69.  
  70.  
  71.    return 0;
  72.  
  73. }


« Última modificación: 2 Diciembre 2016, 22:44 pm por w_walter » En línea

0xFer


Desconectado Desconectado

Mensajes: 400



Ver Perfil
Re: Crear parejas de letras en C
« Respuesta #1 en: 2 Diciembre 2016, 23:22 pm »

Son 20 letras:

Código
  1. char letras[20];

Ahora para generar las letras de forma aleatoria y que ninguna se repita, la parte de tu código donde intentas hacer lo anterior sólo comprueba que la letra en i no sea igual a la letra en i - 1, una solución podría ser:

Código
  1. for(i=0; i<20; i++)
  2.    {
  3.     bool seRepite = true;
  4.  
  5.     while( seRepite ){
  6.  
  7.     letras[i] = 65+rand()%26;
  8.     seRepite = false;
  9.  
  10.     for( m = 0; m < i; m++)
  11.     if( letras[m]==letras[i] ){
  12.     seRepite = true;
  13.     break;
  14. }
  15. }
  16.    }

Bien, ahora tienes un arreglo letras que solo tienes que imprimir de 2 en 2.



En línea

Código
  1. int getRandomNumber(){
  2.    return 4; //chosen by fair dice roll
  3.              //guaranteed to be random
  4. }
w_walter

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Crear parejas de letras en C
« Respuesta #2 en: 2 Diciembre 2016, 23:55 pm »

Muchas gracias por la respuesta!! funciona bien pero al intentar ponerle la condición de que las primeras letras de las 10 parejas tienen que estar en orden alfabético  vuelve a repetirlas. No sé si me he explicado. La idea es que las letras aparezcan "AH BE DK". No pueden aparecer de la manera "EH AB".
En línea

lfgmespino

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Crear parejas de letras en C
« Respuesta #3 en: 29 Diciembre 2016, 18:13 pm »

Código
  1. #include<stdlib.h>
  2. #include<time.h>
  3. #include<stdio.h>
  4.  
  5.  
  6. int usado(char, char*);
  7.  
  8. int main()
  9. {
  10.    int i;
  11.    char vector[26]={0};
  12.    char newChar;
  13.  
  14.  
  15.    srand((unsigned)time(NULL));
  16.  
  17.  
  18.    for(i=0; i<26; i++)
  19.    {
  20.        do {
  21.        newChar = 'A'+rand()%26;
  22.         } while(usado(newChar, vector));
  23.        vector[i] = newChar;
  24. }
  25.  
  26.    for(i=0; i<10; i++)
  27.    {
  28.        if (vector[i*2] < vector[i*2+1]) {
  29.        printf("%c%c ",vector[i*2],vector[i*2+1]);
  30.        } else printf("%c%c ",vector[i*2+1],vector[i*2]);
  31.    }
  32.  
  33.  
  34.    return 0;
  35.  
  36. }
  37.  
  38. int usado(char ch, char* array)
  39. {
  40. int i;
  41.  
  42. while (*(array+i) && ch != *(array+i) ) i++;
  43.  
  44. if (*(array+i)) return 1;
  45. return 0;
  46. }
  47.  
En línea

do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: Crear parejas de letras en C
« Respuesta #4 en: 29 Diciembre 2016, 19:09 pm »

Repetir un bucle en el que se generan datos aleatorios sobre una lista mientras haya una repetición es extremadamente ineficiente.

Lo que deberías de hacer es:
Código:
alfabeto="A...Z";

para i desde 0 hasta 19
  indice_aleatorio=aleatorio_entre_0_y_longitud_alfabeto

  si i != indice_aleatorio
    intercambiar(alfabeto[i], alfabeto[indice_aleatorio]
  fin si
fin para

ordenar los indices pares(desde 0 hasta 19) en orden ascendente

para i desde cero hasta 9
  mostrar alfabeto[2 * i] y alfabeto[2 * i + 1]
fin para
« Última modificación: 29 Diciembre 2016, 19:11 pm por do-while » En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Facebook refleja las parejas de hecho
Noticias
wolfbcn 0 1,740 Último mensaje 18 Febrero 2011, 22:25 pm
por wolfbcn
algoritmo para combinar parejas
.NET (C#, VB.NET, ASP)
diego_lp 2 3,742 Último mensaje 8 Abril 2011, 02:26 am
por seba123neo
Parejas
Programación C/C++
HeXmiT 4 2,984 Último mensaje 1 Junio 2011, 22:07 pm
por HeXmiT
Los estereotipos machistas perviven en las parejas de adolescentes
Foro Libre
wolfbcn 4 2,533 Último mensaje 27 Noviembre 2011, 20:05 pm
por ShotgunLogic
Una aplicación sólo para parejas
Noticias
wolfbcn 0 1,434 Último mensaje 29 Marzo 2012, 02:35 am
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines