Test Foro de elhacker.net SMF 2.1

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

#include<stdio.h>
#include<stdlib.h>

int main() {
char temporal[20];
int  N,i,j,k;
printf("Cantidad: ");
fgets(temporal,20,stdin);
N = strtol(temporal,NULL,10);
k=1;
i = 0;
while(i < (N+ (N-1))) {
j = 0;
while(j < ((i<N)? (i+1):(N-k) )) {
putc('*',stdout);
j++;
}
k+=(i>=N);
putc('\n',stdout);
i++;
}

}


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 (cpp) [Seleccionar]

#include<iostream>

using namespace std;

int main() {
int  N,i,j,k;
cout<< "Cantidad: ";
cin>>N;
k=1;
i = 0;
while(i < (N+ (N-1))) {
j = 0;
while(j < ((i<N)? (i+1):(N-k) )) {
cout<<'*';
j++;
}
k+=(i>=N);
cout<<'\n';
i++;
}
}




Todavia lo quieres con FOR?

#include<iostream>

using namespace std;

int main() {
int  N,i,j,k;
cout<< "Cantidad: ";
cin>>N;
k=1;
for(i = 0; i < (N+ (N-1)); i++,k+=(i>=N) ) {
for(j = 0; j < ((i<N)? (i+1):(N-k) );j++) {
cout<<'*';
}
cout<<'\n';
}
}
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.