Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: ArnauCC en 9 Noviembre 2018, 17:37 pm



Título: Duda bucles for anidados
Publicado por: ArnauCC en 9 Noviembre 2018, 17:37 pm
Hola buenas a todos, tengo que hacer un ejercicio usando solamente dos bucles for y condicionales. El ejercicio consiste de lo siguiente:
El usuario introduce un numero, y tiene que mostrarse una figura así:
Numero: 4
*
**
***
****
***
**
*
Llevo horas intentandolo y no consigo hacer la parte decreciente bien, alguien puede ayudarme?


Título: Re: Duda bucles for anidados
Publicado por: AlbertoBSD en 9 Noviembre 2018, 18:15 pm
Pues lo hice con While, pero si entienes como se forman estos, lo podras migrar facilmente a for

Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. int main() {
  5. char temporal[20];
  6. int  N,i,j,k;
  7. printf("Cantidad: ");
  8. fgets(temporal,20,stdin);
  9. N = strtol(temporal,NULL,10);
  10. k=1;
  11. i = 0;
  12. while(i < (N+ (N-1))) {
  13. j = 0;
  14. while(j < ((i<N)? (i+1):(N-k) )) {
  15. putc('*',stdout);
  16. j++;
  17. }
  18. k+=(i>=N);
  19. putc('\n',stdout);
  20. i++;
  21. }
  22.  
  23. }
  24.  

Saludos!


Título: Re: Duda bucles for anidados
Publicado por: ArnauCC en 9 Noviembre 2018, 18:19 pm
Tu codigo funciona perfectamente, pero estamos en un nivel muy inicial de c++ y no hemos trabajado esas funciones, asi que no puedo entregarlo asi


Título: Re: Duda bucles for anidados
Publicado por: ArnauCC en 9 Noviembre 2018, 18:21 pm
El ejercicio es pasar este codigo que he hecho a uno que solo use dos bucles for:
#include <iostream>
using namespace std;

void main()
{
   setlocale(LC_CTYPE, "Spanish");
   int num;
   cout << "Número: ";
   cin >> num;

   for (int i = 1; i <= num; i++)
   {
      for (int j = 1; j <= i; j++)
      {
         cout << "*";
      }
      cout << endl;
   }
   for (int i = num; i >= 1; i--)
   {
      for (int j = 1; j <= i; j++)
      {
         cout << "*";
      }
      cout << endl;
   }


   system("pause");
}


Título: Re: Duda bucles for anidados
Publicado por: AlbertoBSD en 9 Noviembre 2018, 18:37 pm
Nivel avanzado de C?

Tengo 15 años programando en C y C++, y nunca he visto ni se, para que se utiliza la funcion "setlocale".... ni mi interesa saber para que es.


Código
  1. #include<iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main() {
  6. int  N,i,j,k;
  7. cout<< "Cantidad: ";
  8. cin>>N;
  9. k=1;
  10. i = 0;
  11. while(i < (N+ (N-1))) {
  12. j = 0;
  13. while(j < ((i<N)? (i+1):(N-k) )) {
  14. cout<<'*';
  15. j++;
  16. }
  17. k+=(i>=N);
  18. cout<<'\n';
  19. i++;
  20. }
  21. }
  22.  



Todavia lo quieres con FOR?

Código
  1. #include<iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main() {
  6. int  N,i,j,k;
  7. cout<< "Cantidad: ";
  8. cin>>N;
  9. k=1;
  10. for(i = 0; i < (N+ (N-1)); i++,k+=(i>=N) ) {
  11. for(j = 0; j < ((i<N)? (i+1):(N-k) );j++) {
  12. cout<<'*';
  13. }
  14. cout<<'\n';
  15. }
  16. }


Título: Re: Duda bucles for anidados
Publicado por: ArnauCC en 9 Noviembre 2018, 18:48 pm
Ese codigo me funciona mal, al poner por ejemplo un 5 hace esto:
*
**
***
****
*****
***
**
*

falta una linea despues que llegue al maximo de asteriscos


Título: Re: Duda bucles for anidados
Publicado por: AlbertoBSD en 9 Noviembre 2018, 18:53 pm
Hola ArnauCC, el codigo lleva un error para que tu lo corrigas, ya se te dio un codigo que funciona y uno que no, si realmente te interesara aprender, estarias investigando. que hace o que no hace las partes del codigo que no entiendes, te aseguro que asi aprenderás mas.

Saludos


Título: Re: Duda bucles for anidados
Publicado por: zonahurbana en 10 Noviembre 2018, 00:45 am
 ;-) Muy buena sugerencia Alberto.

15 años es mucha experiencia... creo que sólo usé C++ unos 5 meses, pero es todo un gusto que haya sido el 1er lenguaje que vi.