Duda bucles for anidados

Iniciado por ArnauCC, 9 Noviembre 2018, 17:37 PM

0 Miembros y 3 Visitantes están viendo este tema.

ArnauCC

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?

AlbertoBSD

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!
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

ArnauCC

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

ArnauCC

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");
}

AlbertoBSD

#4
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';
}
}
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

ArnauCC

Ese codigo me funciona mal, al poner por ejemplo un 5 hace esto:
*
**
***
****
*****
***
**
*

falta una linea despues que llegue al maximo de asteriscos

AlbertoBSD

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
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

zonahurbana

 ;-) 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.
Nunca dejar de aprender es importante, más allá del ritmo que se siga ...