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

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


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

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Ayuda con ejercicio en C
« en: 29 Septiembre 2016, 02:30 am »

..


« Última modificación: 2 Octubre 2016, 02:51 am por claudio321 » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Ayuda con ejercicio en C
« Respuesta #1 en: 29 Septiembre 2016, 05:22 am »

es un problema para sentarse a pensar, porque es complicado para un nivel basico...

tienes que usar 3 ciclos anidados...

el primero para repetir cada patron desde la letra de inicio (en tu ejemplo X) hasta la vuelta y comprobar si el largo de la cadena mayor es mayor que 1

el segundo para seleccionar la letra a dibujar y hace cada linea (este se divide en 2, la "ida" y la "vuelta"

el tercero es quien imprime cada letra

para la letra la teoria es simple... no te importa que posición representa cada letra en la tabla ascii, lo que te importa es que no se escape de A y Z, así que la letra que recibes la llevas a una escala entre 0 y 25... esto es tan simple como

Código:
char escala = letra_recibida - 'A';

así si recibes un "A", "escala" será 9 y si recibes "Z" será 25

para que no se te desborde debes usar el operador de modulo... como sabes que son 26 letras

Código:
char letra = (letra_recibida + modificador) % 26

esto hará que si la letra es Z y se le suma 1, (modificador que te lo da el segundo ciclo) la letra volverá a 0

por ultimo para imprimir debes volver a su condicion ascii original, si no se imprimirá "basura"

Código:
char letra_imprimible = letra + 'A';


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
dato000


Desconectado Desconectado

Mensajes: 3.034



Ver Perfil
Re: Ayuda con ejercicio en C
« Respuesta #2 en: 29 Septiembre 2016, 17:11 pm »

Realmente tiene que imprimir un patrón tan absurdo y tan largo originado tan desordenadamente, exactamente como en el ejemplo?? porque el problema no es la sintaxis del código, sino la abstracción de la lógica (el requerimiento o como debe funcionar el programa) lo que lo hace tan complicado.

digo si tuviera que imprimirse en escenarios separados como por ejemplo:

Citar
Digite la letra: X
digite la cantidad de repeticiones: 5

X
 YY
   ZZZ
     AAAA
       BBBBB
     AAAA
   ZZZ
 YY
X

Citar
Digite la letra: X
digite la cantidad de repeticiones: 5

V
 W
  XX
   YYY
     ZZZZ
   YYY
  XX
 W
V

Citar
Digite la letra: X
digite la cantidad de repeticiones: 5

T
 UU
  VVV
 UU
T

seria algo más comprensible, pero si hay que hacerlo con un patrón así de extenso y que haga esa serie de pasos, amigo, yo diria que te estan tomando el pelo, o que simplemente estas exagerando las cosas, clarificanos ese asunto.
En línea


MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Ayuda con ejercicio en C
« Respuesta #3 en: 29 Septiembre 2016, 20:46 pm »

No, no es tan difícil. Revisa otra vez el patrón. Tiene su lógica, y todo se saca con bucles anidados. Easy.
En línea

dato000


Desconectado Desconectado

Mensajes: 3.034



Ver Perfil
Re: Ayuda con ejercicio en C
« Respuesta #4 en: 29 Septiembre 2016, 23:36 pm »

No, no es tan difícil. Revisa otra vez el patrón. Tiene su lógica, y todo se saca con bucles anidados. Easy.

si es verdad, lo que me queda la duda es si realmente ese es el patrón que se necesita en cada impresión, o si son escenarios como lo estoy suponiendo. porque parece que cambia en casi un aleatorio de XYZABAZYX ---> VWXYZYXWV ---> TUVUT

se me hace demasiado dispar para realizar un control apropiado.
En línea


MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Ayuda con ejercicio en C
« Respuesta #5 en: 29 Septiembre 2016, 23:55 pm »

Tiene su lógica. Si te fijas a cada inicio del triángulo, o punta de flecha, como se quiera llamar, es una letra menos del grupo anterior.

Esta es la salida y ejecución del programa:

Del ejemplo:
Código:
Indica la letra por la que empezar: X
Indica el tamaño de la cadena más larga: 5
X
 YY
  ZZZ
   AAAA
    BBBBB
   AAAA
  ZZZ
 YY
X
W
 XX
  YYY
   ZZZZ
  YYY
 XX
W
V
 WW
  XXX
 WW
V
U
 VV
U
T


------------------
(program exited with code: 0)
Press return to continue

Otra configuración. Más extremo.
Código:
Indica la letra por la que empezar: A
Indica el tamaño de la cadena más larga: 10
A
 BB
  CCC
   DDDD
    EEEEE
     FFFFFF
      GGGGGGG
       HHHHHHHH
        IIIIIIIII
         JJJJJJJJJJ
        IIIIIIIII
       HHHHHHHH
      GGGGGGG
     FFFFFF
    EEEEE
   DDDD
  CCC
 BB
A
Z
 AA
  BBB
   CCCC
    DDDDD
     EEEEEE
      FFFFFFF
       GGGGGGGG
        HHHHHHHHH
       GGGGGGGG
      FFFFFFF
     EEEEEE
    DDDDD
   CCCC
  BBB
 AA
Z
Y
 ZZ
  AAA
   BBBB
    CCCCC
     DDDDDD
      EEEEEEE
       FFFFFFFF
      EEEEEEE
     DDDDDD
    CCCCC
   BBBB
  AAA
 ZZ
Y
X
 YY
  ZZZ
   AAAA
    BBBBB
     CCCCCC
      DDDDDDD
     CCCCCC
    BBBBB
   AAAA
  ZZZ
 YY
X
W
 XX
  YYY
   ZZZZ
    AAAAA
     BBBBBB
    AAAAA
   ZZZZ
  YYY
 XX
W
V
 WW
  XXX
   YYYY
    ZZZZZ
   YYYY
  XXX
 WW
V
U
 VV
  WWW
   XXXX
  WWW
 VV
U
T
 UU
  VVV
 UU
T
S
 TT
S
R


------------------
(program exited with code: 0)
Press return to continue
« Última modificación: 30 Septiembre 2016, 00:02 am por MAFUS » En línea

dato000


Desconectado Desconectado

Mensajes: 3.034



Ver Perfil
Re: Ayuda con ejercicio en C
« Respuesta #6 en: 30 Septiembre 2016, 00:26 am »

ah capto, va retrocendiendo en el valor de la letra, y recomienza el ciclo, eso era lo que no entendia claro, buen punto señor.

Cuando llegue a mi casa le dare un intento por curiosidad.

---

EDITADO: vamos a probar, esta mucho más complicado de lo que parece, solo hice la escala porque realmente estar validando ciclo letra por letra requiere siempre más tiempo de lo que suponia, y ya es tarde, pero bueno aquí dejo una base, no es lo mejor de lo mejor, pero al menos podriamos darnos una idea:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6.    char letraInicial;
  7.    int tamanyo;
  8.    printf("Digite la letra inicial: ");
  9.    scanf("%c", &letraInicial);
  10.  
  11.    printf("Tamaño de la cadena más larga: ");
  12.    scanf("%i", &tamanyo);
  13.  
  14.    if(letraInicial >= 'A' && letraInicial <= 'Z')
  15.    {
  16.        printf("\n %c", letraInicial);
  17.        printf("\n %i \n\n", tamanyo);
  18.    }
  19.    else
  20.    {
  21.        printf("\n Letra no valida \n");
  22.    }
  23.  
  24.    int contador = 0;
  25.    while(tamanyo>0){
  26.        printf("\n %c", letraInicial);
  27.        letraInicial++;
  28.        if(letraInicial == '[')
  29.        {
  30.            letraInicial = 'A';
  31.        }
  32.  
  33.  
  34.  
  35.        contador++;
  36.        if(contador == tamanyo)
  37.        {
  38.            break;
  39.        }
  40.    }
  41.  
  42.    letraInicial--;
  43.    while(tamanyo>0){
  44.  
  45.        letraInicial--;
  46.        if(letraInicial == '@')
  47.        {
  48.            letraInicial = 'Z';
  49.        }
  50.        printf("\n %c", letraInicial);
  51.  
  52.        tamanyo--;
  53.        if(tamanyo == 1)
  54.        {
  55.            break;
  56.        }
  57.    }
  58.  
  59.  
  60.  
  61.    return 0;
  62. }
  63.  
  64.  

« Última modificación: 30 Septiembre 2016, 04:14 am por dato000 » En línea


Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Ayuda] Ejercicio C 100
Ejercicios
Dem0ny 2 6,006 Último mensaje 19 Diciembre 2007, 22:45 pm
por Dem0ny
Ayuda co un ejercicio de C#
.NET (C#, VB.NET, ASP)
hitori batusai 2 5,320 Último mensaje 22 Febrero 2008, 01:53 am
por hitori batusai
Ayuda con ejercicio de VB
Programación Visual Basic
guada_sp 5 3,311 Último mensaje 8 Marzo 2008, 02:54 am
por ‭‭‭‭jackl007
[Ejercicio] Aca tienen un ejercicio para practicar « 1 2 3 »
Programación Visual Basic
Dreamaker 20 15,642 Último mensaje 5 Septiembre 2010, 02:57 am
por TGa.
Ayuda ejercicio de Pascal, cuando uno no lo ve claro pide ayuda
Programación General
manu3742 1 3,203 Último mensaje 31 Marzo 2011, 15:43 pm
por d(-_-)b
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines