2017-10-20 47 views
1
void dibuja(int lineas, char caracter){ 
int i=0,j=0; 
cout<<lineas<<caracter; 
for(i = 1; i == lineas; i++){ 

    for(j=i; j<=lineas; j++){ 
     cout<<caracter; 
    } 

    cout<<endl; 
} 
} 

J'ai donc ce code et quand j'essaie de l'exécuter, le compilateur ne renvoie aucune erreur mais la fonction ne pénètre pas dans la boucle. Il imprime des lignes et des caractères mais pas le triangle qu'il est censé faire.Ma fonction n'entre pas dans la boucle for et je ne sais pas pourquoi

+0

'c' ou' C++ 'décidez-vous. – Michi

Répondre

1

a

boucle for est rien de plus qu'une boucle while idéalisé. une boucle telle que

for (init_expression; loop_condition; iterator_expression) 
    loop_statement; 

est égal à

{ 
    init_expression; 

    while (loop_condition) 
    { 
     loop_statement; 
     iterator_expression; 
    } 
} 

Si vous le voyez comme ça, il pourrait être plus facile de comprendre que vos boucles boucle for tout i == lineas est true. Lequel avec votre expression d'initialisation ne sera que si lineas est égal à 0, et alors il boucle une seule fois parce que l'itération suivante (quand i est égal à 1) la condition ne sera plus vraie.

1

Il vous semble dire

for(i = 1; i != lineas; i++){ 

au lieu de

for(i = 1; i == lineas; i++){ 
1

La boucle prendre comme deuxième "argument" la condition de la boucle ... Comme "boucle while ..." et parce que vous avoir i == lineas il ne va jamais à l'intérieur de la boucle.

Vous devez utiliser i <= lineas ou i != lineas

1

Vous probable voulu écrire for(i = 1; i != lineas; i++) ou for(i = 1; i < lineas; i++) dans votre boucle.

Vous pouvez penser à la condition que « exécuter les instructions dans la boucle for, tant que la condition est vraie. Comme i ne est pas égal lineas au début, la boucle ne soit pas exécuté du tout.