mv programadores!

Merluza

Hola, tengo que hacer un programa que dibujo esto, en funcion del nº de lienas que ponga..

*

**




Mv le hace el efecto contrario, en vez de pegado a la pared izq, seria pegado a la pared derecha..

Tengo esto..

   #include<stdio.h>
            main(){

                    int lineas;
                    int linea;

                            printf("Introduce el nº de lineas de la piramide\n");
                            scanf("%d", &lineas);

                                    int esp;
                                    int ast;

                                            for( linea=1; linea<=lineas; linea++ ) {

                                                    ast==linea;
                                                    esp==lineas-ast;

El problema lo tengo aqui, que no se como hacer para que pinte 1,2,3 o los * que sean etc..

PD: ya vendre en poco tiempo a poneros un hexagono hueco por dentro xd

Ferdeejea

program holamundo <input, output>;
begin
writeln('Hola mundo.');
end.

Elbrush

Yo creo que esto va en el foro de http://www.mediavida.com/verforo.php?fid=9

Merluza

#2 si tan facil es, ayudame y acabamos antes.

MTX_Anubis

tienes que hacer otro for dentro del que tienes

for (int i=0;i<lineas;i++){
for (int j=0;j<=i;j++) dibuja asterisco;
nueva_linea
}

Si quieres meter espacioes y hacerlos alineados a la derecha, no cambia mucho. Simplemente es pensar un poco, la primera linea tiene 'lineas' espacios - 1, la segunda lineas -2, la tercera lineas-3 y así... Después de los espacios pintas los asteriscos :P

Gnos1s
#include<stdio.h>
main(){

// Las variables se declaran siempre al principio
// Si te das cuenta después, la añades arriba, no donde caíste en ese momento
int i, j, lineas, ast, esp;

printf("Introduce el nº de lineas de la piramide\n");
scanf("%d", &lineas);

// Acostúmbrate a empezar desde 0 los iteradores
for(i=0; i<lineas; i++ ) {
  esp=lineas-(i+1);
  ast=lineas-esp;
  for(j=0;j<esp;j++) printf(" ");
  for(j=0;i<ast;j++) printf("*");
  printf("\n");
}
}

Se trata de que te calientes tu la cabeza, no de que te lo hagamos nosotros, si no no aprendes.

bLaKnI

C++:

#include <stdio.h>
#include <iostream>
#include <string>

using namespace std;

void main(){
	int lineas=10;
	string ast = "*";
	for(int i=0; i<lineas; i++){
		cout << ast << endl;
		ast += "*";
	}
}

resultado:

*
**









Presione una tecla para continuar . . .

Python:

nlins=10
cad = "*"

for i in range(0,nlins):
    print cad
    cad+="*"

danao

entre con las esperanza de encontrar Bash perl o awk y me encuentro con C...........ODIO EL CCCCCCCCC!!!!!!

JosepRS

Se trata de que te calientes tu la cabeza, no de que te lo hagamos nosotros, si no no aprendes.

De lo mejorcito que se lee por el foro en años.

Gnos1s

#7 Lo pide en C, no en C++, y encima no pide eso, si no alineado a la derecha. No se trata de ver quién la tiene más larga. Para eso tendrías que haberlo puesto en ensamblador. Se trata de ayudar, no liar.

#8 En bash es prácticamente igual. Perl y awk no los controlo; espero ponerme dentro de poco.

BLZKZ

#7 y para que haces un include <stdio.h> si usas los de iostream?

En fin..

bLaKnI

Y yo que se...
Cosas que pasan. (la verdad es que se lo he visto a el, y lo he dejado por si queria justificarlo...).
Ya me he imaginado que no le serviria ya que no estará compilando con un g++, sino con gcc o no le dejaran programarlo en C++. Simplemente, se lo he dejado y ya está.

XaPu69

Crea una variable llamada espacios y la vas decrementando en funcion del aumento de los asteriscos, es decir, una por linea. Cuentas los espacios, y desde ahi hasta el final de la linea imprimes asteriscos, decrementas la variable y otra vez.

Gnos1s

#13 Eso ya es un paso más de complejidad, quedaría algo más críptico para alguien que realiza una asignación poniendo ==.

Merluza

Muchas gracias a todos, la verdad esque tienes razon en lo de calentarme la cabeza, pero esque no sabia por donde salir...

Tengo que hacer un hexagono hueco, es decir, con asteriscos y espacio por medio, y ahi ya me la calentare, pero me tocara volver a pediros consejo porque no lo saco ni de coña..!

Saludos y gracias.

S

#15 te voy adelantando ayuda para el hexagono, realmente solo tienes que hacer una mitad

Gnos1s

Como consejo, te recomiendo que no pienses en la figura como un bloque, si no como distintas partes. Seguramente puedes descomponer por zonas (lo que se traduce en bucles), uno detrás de otro.

Las figuras estas sirven para que saques patrones en base a altura/anchura. Cuando hagas un par, ya te sale la que quieras.

NeB1

bueno, solo una cosa, has dicho que debe de estar alineado a la derecha, así que yo el bucle lo haría así:

for( i = 0 ; i < nlineas ; i = i + 1 ){
for( j = 0 ; j < ( nlineas - i ) ; j++){
printf(" ");
}
for( j = 0 ; j < i ; j++){
printf("");
}
}
/
si lo dejas así, la primera fila saldrá vacía, se imprimirán 10 espacios, pero es fácil de resolver, no?*/

no me he parado mucho a pensarlo, pero diría yo que es así.

P.D: realmente sí que tienes que intentar calentarte tu la cabeza que esto es bastante fàcil, y lo del hexágono te va a costar muxísimo si esto no lo logras tu solo (que conste que no quiero flamearte). Yo de tí buscaría otra forma alternativa más de hacer la piramide esta, para que te vayas soltando.

(si es C no gastes lo de "j++", pon "j=j+1")

Thanar

paso de esto XD yo java

Gnos1s

No lo liéis más xD.

Ya le ha quedado claro. Si tiene problemas con el hexágono que lo diga, pero que se coja un papel y un lapiz y se ponga a sacar una regla general.

Merluza

me sigue sin salir ... xdd cawen dios que tonto soy

no para nunca el bucle.. sigue y sigue..

*
*
*
*
*
*
*
o bien con espacios... :SS:

S

siempre te quedara empresariales o magisterio

Merluza

XDDD

xsi en algebra soy un fenomeno eh.. esto es la primera vez que me pongo con ello y... cxd

peterkakarot

public static void main (String args[])
{ int n = 9; // Para cualquier n>=1 impar
for (int i=1; i<=n; i++)
{

for (int j=1; j<=Math.abs((n/2+1)-i); j++) System.out.print(" ");


        for (int t=1; t<=n-2*(Math.abs((n/2+1)-i)); t++) System.out.print("*");
        
        System.out.println();
    }        
    
} // del main
NeB1

es C tronco, no lo lies con java xD.

A ver, te lo explico en palabras.

Que es lo que buscas? que cada linea de la piramide se impriman más o menos * y espacios. por lo tanto, hemos de recorrer cada una de las lineas (de ahí el primer:
for(i=0;i<nlineas;i++).
Vale, cuando acabará ese bucle? cuando llegue a la última linea, no puede quedarse pillado ese bucle si nlineas es mayor que 0.

vale, ahora ya estamos dentro de ese for. Ahora que? pues dependiendo del nº de la linea en que estemos, imprimiremos maxlineas - nlineaactual espacios (si tiene 10 pisos y estamos en la segunda, imprimiermos 10 - 2 = 8 espacios), traducido es un:
for(j=0; j< nlineas - i; j++) printf(" "); /fijate que nlineas es el máximo de lineas que tenemos y "i" es la linea actual/ vale, cerramos ese for.

Por último en cada piso después de haberse imprimido los espacios quieres que se impriman tantos asteriscos, como el número de linea sea en ese momento ->
for(j=0;j<i;j++) printf(""); /se ejecutará "i" veces el printf del asterisco*/

VALE AHORA NOTAS PARA PROGRAMADOR NOVICIO (EEEH Q NO TE HE LLAMADO NOOB) SI EL PROGRAMA SE QUEDA EN BUCLE INFINITO, LO PRIMERO QUE TIENES QUE HACER, ES METER UN PRINTF DIFERENTE DENTRO DE CADA FOR

for(i=0;i<nlineas;i++){
printf("bucle1");
for(j=0;j<(nlineas-i);j++){
printf("bucle2");
printf(" ");
}
for(j=0;j<i;j++){
printf("bucle3");
printf("*");
}
}

VALE? ASÍ SI EL BUCLE QUE FALLA ES EL BUCLE 2 VERÁS POR PANTALLA:
BUCLE2 BUCLE2 BUCLE2 BUCLE2 BUCLE2 BUCLE2 BUCLE2 BUCLE2 BUCLE2 BUCLE2
OKI? LO SIGUIENTE EN MIRAR ES PORQUE NO ACABA, IMPRIME LOS VALORES DE J, DE I I DE NLINEAS, PARA VER SI SON VALORES COHERENTES, O POR ALGUNA RAZÓN J VALE 5234234234234 O ALGO ASÍ.

Netzach
If
Posteo en el foro adeducado
Then
Netzach será feliz
JON-K0

public static final java.util.Scanner input =
new java.util.Scanner (System.in);
public static void main(String[] args) {
System.out.println("Valor entero");
int n=input.nextInt();
int i=0;

while (i!=n+1){
int j=0;
while (j!=i){
System.out.print("*");
j++;}
System.out.println();
i++;

albertoste

Sois unos ofuscados xDD

Merluza

#include<stdio.h>
main(){

            int altura, linea, ast, i;

                            printf("altura \n");
                            scanf("%d", &altura);

                                    for(linea=1; linea<=altura; linea++ ) {
                                            ast==altura-linea;
                                                    for(i=0; i<ast; i++) {
                                                            printf("X");
                                                            printf("\n");
                                                    }
                                    }

}

Por dios, que alguien me explique porque esa mierda de bucle, escribe esto:

X
X
X
X
X
X
X

Y no esto, en funcion de la altura.

XXXX
XXX
XX
X

Llevo con el mismo problema toda la tarde y no logro averiguarlo, no poniendo el printf en cada bucle para ver ni ostias en vinagre, no lo veo por ningun lado..

golon

printf("X");
}
printf("\n");
}

Así no?

Usuarios habituales