Autor
|
Tema: Ejercicio iteraciones (Leído 5,521 veces)
|
i-node
Desconectado
Mensajes: 41
|
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; #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. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Para que nos entendamos.. No me sirve esto: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
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
Mensajes: 219
HardForo.com
|
Otra forma: #include <stdio.h> /* printf */ void print_n(char *c,int n) { int i; for (i=0;i<n;i++) } int main () { int i; for (i=0;i<8;i++){ print_n("* ",8); } return 0; }
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
Mensajes: 437
Si usas Direct3D, no eres mi amigo :P
|
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: #include <stdio.h> int main() { register unsigned int row, col; for(row = 0; row < 8; row++) { for(col = 0; col < 8; col++) { if(row%2 == 0) else } } return 0; }
|
|
|
En línea
|
| Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL |
|
|
|
|
geeke
Desconectado
Mensajes: 93
|
Usando puro C++ #include <iostream> #using std::cout; #using std::string; int main() { int n = 8; for(int i = 0; i < n; i++) cout << string(i % 2 ? 1 : 0, ' ') << string(n, '*') << "\n"; return 0; }
|
|
« Última modificación: 29 Abril 2016, 21:18 pm por Geeke »
|
En línea
|
|
|
|
class_OpenGL
Desconectado
Mensajes: 437
Si usas Direct3D, no eres mi amigo :P
|
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
Mensajes: 93
|
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
Mensajes: 41
|
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
Mensajes: 219
HardForo.com
|
Y no sabes la equivalencia entre cout() y printf() ? #include <iostream> int main () { int i,j; for (i=0;i<8;i++){ if (i % 2) std::cout << " "; // printf(" ") for (j=0;j<8;j++){ std::cout << "*"; std::cout << " "; // printf("* ") } std::cout << std::endl; // printf("\n") } return 0; }
|
|
« Ú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
Mensajes: 93
|
Algo así tal vez: #include <iostream> #include <iterator> int main() { int n = 8; for(int i = 0; i < n; i++) { if(i % 2) std::cout << " "; std::fill_n(std::ostream_iterator < const char* >( std::cout ), n, "* "); std::cout << std::endl; } return 0; }
|
|
« Última modificación: 29 Abril 2016, 23:16 pm por Geeke »
|
En línea
|
|
|
|
class_OpenGL
Desconectado
Mensajes: 437
Si usas Direct3D, no eres mi amigo :P
|
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 |
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
numero de iteraciones en una palabra
Programación C/C++
|
mapers
|
1
|
3,002
|
7 Diciembre 2010, 08:06 am
por Beakman
|
|
|
[Simple - reto] Iteraciones
Programación Visual Basic
|
_katze_
|
5
|
3,561
|
17 Junio 2011, 03:48 am
por _katze_
|
|
|
[simple - reto] iteraciones .net
.NET (C#, VB.NET, ASP)
|
_katze_
|
2
|
3,218
|
17 Junio 2011, 06:06 am
por _katze_
|
|
|
Iteraciones en metodologia XP
Dudas Generales
|
Hadess_inf
|
0
|
5,857
|
8 Noviembre 2012, 07:38 am
por Hadess_inf
|
|
|
[Duda] 2 iteraciones al mismo tiempo
Programación C/C++
|
RayHack
|
3
|
2,508
|
22 Diciembre 2013, 22:50 pm
por RayHack
|
|