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

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


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

Desconectado Desconectado

Mensajes: 41


Ver Perfil
Ejercicio iteraciones
« en: 29 Abril 2016, 18:29 pm »

Hola,

Estoy aprendiendo C++ y llevo toda la tarde devanandome los sesos, pensando cual es la forma mas elegante de realizar este ejercicio. Solo se me ha ocurrido esta, pero estoy seguro de que hay una forma menos guarra de hacerlo.

Solo se pueden utilizar estas tres instrucciones de salida:

cout << "*";
cout << " ";
cout << endl;

Código:
#include <iostream>

using std::cout;
using std::cin;

int main() {
        for(int linea = 1;linea <= 8;linea++) {
                if(linea % 2 != 0)
                        for(int i = 0; i <= 15; i++)
                                if(i % 2 == 0)
                                        cout << '*';
                                else
                                        cout << ' ';

                else
                        for(int i = 0; i <= 16; i++)
                                if(i % 2 == 0)
                                        cout << ' ';
                                else
                                        cout << '*';
                cout << "\n";
        } // Fin de bucle for
        return 0;
} // Fin de main

El resultado ha de ser exactamente igual al de este ejercicio.

Código:
* * * * * * * * 
 * * * * * * * *
* * * * * * * *
 * * * * * * * *
* * * * * * * *
 * * * * * * * *
* * * * * * * *
 * * * * * * * *

Para que nos entendamos.. No me sirve esto:

Código:
* * * * * * * *
 * * * * * * *
* * * * * * * *
 * * * * * * *
* * * * * * * *
 * * * * * * *
* * * * * * * *
 * * * * * * *

Seguro que es culpa mia que no doy para mas, pero se tiene que poder hacer de una manera mas elegante que como lo he hecho yo seguro.

Muchas gracias!


« Última modificación: 29 Abril 2016, 21:52 pm por i-node » En línea

HardForo

Desconectado Desconectado

Mensajes: 219


HardForo.com


Ver Perfil WWW
Re: Ejercicio iteraciones
« Respuesta #1 en: 29 Abril 2016, 19:42 pm »

Otra forma:

Código
  1. #include <stdio.h>      /* printf */
  2.  
  3. void print_n(char *c,int n) {  
  4. int i;
  5. for (i=0;i<n;i++)
  6.   printf ("%s",c);
  7. }
  8.  
  9. int main ()
  10. {
  11. int i;
  12. for (i=0;i<8;i++){
  13. if (i % 2) printf(" ");
  14. print_n("* ",8);
  15. printf("\n");
  16. }
  17.  
  18.  return 0;
  19. }
  20.  

Obvio se pude reducir el numero de lineas de codigo y no faltará quien lo haga con un solo bucle hasta 64 y un mod


« Última modificación: 29 Abril 2016, 20:16 pm por boctulus » En línea

HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *
class_OpenGL


Desconectado Desconectado

Mensajes: 437

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
Re: Ejercicio iteraciones
« Respuesta #2 en: 29 Abril 2016, 20:15 pm »

Otra forma bastante intuitiva es imprimir fila por fila, y cuando se imprima una columna, que sea columna por columna; en función de si la fila que se está imprimiendo es par o impar, pues una columna equivale a "* " o " *" respectivamente:

Código
  1. #include <stdio.h>
  2.  
  3. int main() {
  4. register unsigned int row, col;
  5. for(row = 0; row < 8; row++) {
  6. for(col = 0; col < 8; col++) {
  7. if(row%2 == 0)
  8. printf("* ");
  9. else
  10. printf(" *");
  11. }
  12.  
  13. printf("\n");
  14. }
  15.  
  16. return 0;
  17. }
En línea

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
geeke

Desconectado Desconectado

Mensajes: 93


Ver Perfil
Re: Ejercicio iteraciones
« Respuesta #3 en: 29 Abril 2016, 21:10 pm »

Usando puro C++

Código
  1. #include <iostream>
  2. #using std::cout;
  3. #using std::string;
  4.  
  5. int main()
  6. {
  7.    int n = 8;
  8.    for(int i = 0; i < n; i++)
  9.        cout << string(i % 2 ? 1 : 0, ' ') << string(n, '*') << "\n";
  10.    return 0;
  11. }
« Última modificación: 29 Abril 2016, 21:18 pm por Geeke » En línea

class_OpenGL


Desconectado Desconectado

Mensajes: 437

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
Re: Ejercicio iteraciones
« Respuesta #4 en: 29 Abril 2016, 21:25 pm »

using no es una directiva de preprocesador, así que los '#' sin inválidos xD

Además, ese código no realiza la función que pide el enunciado. Lo que hace ese código es imprimir n asteriscos precedida de un espacio si el número de línea en la que se imprime es par, pero el enunciado dice que debe de haber un espacio entre cada asterisco.
En línea

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
geeke

Desconectado Desconectado

Mensajes: 93


Ver Perfil
Re: Ejercicio iteraciones
« Respuesta #5 en: 29 Abril 2016, 21:39 pm »

Jaja es verdad lo que provocan las prisas y el escribir desde el móvil, con respecto al enunciado no me había fijado en ése detalle cuando llegue a casa lo reviso
En línea

i-node

Desconectado Desconectado

Mensajes: 41


Ver Perfil
Re: Ejercicio iteraciones
« Respuesta #6 en: 29 Abril 2016, 21:51 pm »

Chicos. Siento el fallo. El enunciado del problema dice que solo se pueden utilizar estas instrucciones de salida:

cout << "*";
cout << " ";
cout << endl;

Lo añado en el OP tambien.
En línea

HardForo

Desconectado Desconectado

Mensajes: 219


HardForo.com


Ver Perfil WWW
Re: Ejercicio iteraciones
« Respuesta #7 en: 29 Abril 2016, 21:56 pm »

Y no sabes la equivalencia entre cout() y printf() ?

Código
  1. #include <iostream>    
  2.  
  3. int main ()
  4. {
  5. int i,j;
  6. for (i=0;i<8;i++){
  7. if (i % 2) std::cout << " "; // printf(" ")
  8. for (j=0;j<8;j++){
  9. std::cout << "*"; std::cout << " "; // printf("* ")
  10. }
  11. std::cout << std::endl; // printf("\n")
  12. }
  13.  
  14.  return 0;
  15. }
  16.  
« Última modificación: 29 Abril 2016, 22:01 pm por boctulus » En línea

HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *
geeke

Desconectado Desconectado

Mensajes: 93


Ver Perfil
Re: Ejercicio iteraciones
« Respuesta #8 en: 29 Abril 2016, 23:10 pm »

Algo así tal vez:

Código
  1. #include <iostream>
  2. #include <iterator>
  3.  
  4. int main()
  5. {
  6.    int n = 8;
  7.    for(int i = 0; i < n; i++)
  8.    {
  9.        if(i % 2) std::cout << " ";
  10.        std::fill_n(std::ostream_iterator < const char* >( std::cout ), n, "* ");
  11.        std::cout << std::endl;
  12.    }
  13.    return 0;
  14. }
« Última modificación: 29 Abril 2016, 23:16 pm por Geeke » En línea

class_OpenGL


Desconectado Desconectado

Mensajes: 437

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
Re: Ejercicio iteraciones
« Respuesta #9 en: 29 Abril 2016, 23:26 pm »

Eso no es un poco romperse la cabeza cuando hay soluciones más simples?? XDD
No digo que esté mal, pero dudo que eso lo acepte un profesor que está enseñando a un alumno en su primer trimestre XDD
En línea

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
numero de iteraciones en una palabra
Programación C/C++
mapers 1 3,002 Último mensaje 7 Diciembre 2010, 08:06 am
por Beakman
[Simple - reto] Iteraciones
Programación Visual Basic
_katze_ 5 3,561 Último mensaje 17 Junio 2011, 03:48 am
por _katze_
[simple - reto] iteraciones .net
.NET (C#, VB.NET, ASP)
_katze_ 2 3,218 Último mensaje 17 Junio 2011, 06:06 am
por _katze_
Iteraciones en metodologia XP
Dudas Generales
Hadess_inf 0 5,857 Último mensaje 8 Noviembre 2012, 07:38 am
por Hadess_inf
[Duda] 2 iteraciones al mismo tiempo
Programación C/C++
RayHack 3 2,508 Último mensaje 22 Diciembre 2013, 22:50 pm
por RayHack
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines