Problème dans la boucle for.
Résolu
brie
-
lami20j Messages postés 21331 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
lami20j Messages postés 21331 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
Bonsoir, je souhaite afficher le contour d'un rectangle de taille N*M; mon programme ne fonctionnait pas correctement jusqua ce que je retire les acolades {} de ma dernière boucle for (que jai surligne en gras) dans mon code. Maintenant il fonctionne mais je n'ai toujours pas compris la subtilité entre: for (...) {instruction}
et for(...) instruction
Voici mon code:
#include <iostream>
using namespace std;
int main(void)
{
int i, j, longueur, hauteur;
cout<<"entrez la longueur du rectangle"<<endl;
cin>>longueur;
cout<<"entrez la hauteur du rectangle"<<endl;
cin>>hauteur;
for (i=0;i<longueur;i++)
cout<<"*";
cout<<endl;
for (i=1;i<hauteur-1;i++)
{
cout<<"*";
for (j=1;j<longueur-1;j++)
{
cout<<" ";
}
cout<<"*";
cout<<endl;
}
for (i=0;i<longueur;i++)
cout<<"*";
cout<<endl;
return 0;
}
Jespere avoir été suffisament clair pour que vous puissiez m'expliquer. Merci d'avance.
et for(...) instruction
Voici mon code:
#include <iostream>
using namespace std;
int main(void)
{
int i, j, longueur, hauteur;
cout<<"entrez la longueur du rectangle"<<endl;
cin>>longueur;
cout<<"entrez la hauteur du rectangle"<<endl;
cin>>hauteur;
for (i=0;i<longueur;i++)
cout<<"*";
cout<<endl;
for (i=1;i<hauteur-1;i++)
{
cout<<"*";
for (j=1;j<longueur-1;j++)
{
cout<<" ";
}
cout<<"*";
cout<<endl;
}
for (i=0;i<longueur;i++)
cout<<"*";
cout<<endl;
return 0;
}
Jespere avoir été suffisament clair pour que vous puissiez m'expliquer. Merci d'avance.
A voir également:
- Problème dans la boucle for.
- Downloader for pc - Télécharger - Téléchargement & Transfert
- Idm for mac - Télécharger - Téléchargement & Transfert
- Copytrans heic for windows - Télécharger - Visionnage & Diaporama
- Instagram for pc - Télécharger - Divers Communication
- Microsoft store download for pc - Guide
3 réponses
Salut,
quand je mets les accolades autour des 2 instructions jai une ligne verticale d'étoiles; et quand je ne mets pas les acolades jai une ligne horizontale.
Oui c'est ça.
avec accolades
i égal 0
for vérifie la condition
si ok
écrit une *
écrit un saute de ligne
i est incrémenté
i égal 1
for vérifie la condition
si ok
écrit une *
écrit un saute de ligne
i est incrémenté
i égal 2
.
.
.
jusqu'à quand i égal longueur
Ce qui donne ça
*
*
*
Sans accolades
i égal 0
for vérifie la condition
si ok
écrit une *
i est incrémenté
i égal 1
for vérifie la condition
si ok
écrit une *
i est incrémenté
i égal 2
.
.
.
jusqu'à quand i égal longueur
A la fin écrit un saut de ligne
Ce qui donne ça
********
quand je mets les accolades autour des 2 instructions jai une ligne verticale d'étoiles; et quand je ne mets pas les acolades jai une ligne horizontale.
Oui c'est ça.
avec accolades
i égal 0
for vérifie la condition
si ok
écrit une *
écrit un saute de ligne
i est incrémenté
i égal 1
for vérifie la condition
si ok
écrit une *
écrit un saute de ligne
i est incrémenté
i égal 2
.
.
.
jusqu'à quand i égal longueur
Ce qui donne ça
*
*
*
Sans accolades
i égal 0
for vérifie la condition
si ok
écrit une *
i est incrémenté
i égal 1
for vérifie la condition
si ok
écrit une *
i est incrémenté
i égal 2
.
.
.
jusqu'à quand i égal longueur
A la fin écrit un saut de ligne
Ce qui donne ça
********
Salut,
SI j'ai bien compris c'était comme ça avant?
En ce cas les instructions sont écrit jusqu'à quand i égal avec la longueur.
A chaque passage dans la boucle le programme écrire un * suivi d'un fin de ligne
Dans ce cas c'est seulement l'écriture du * qui se fera jusqu'à quand i égal longueur
Ensuite un saut de ligne sera écrit.
Si pour for il n'y a qu'un instruction alors les accolades ne sont pas obligatoires.
ou
En revanche s'il y a plusieurs instructions les accolades sont obligatoires
Si on ne mets pas les accolades alors on est dans le cas
lami20j
SI j'ai bien compris c'était comme ça avant?
for (i=0;i<longueur;i++) { cout<<"*"; cout<<endl; }
En ce cas les instructions sont écrit jusqu'à quand i égal avec la longueur.
A chaque passage dans la boucle le programme écrire un * suivi d'un fin de ligne
for (i=0;i<longueur;i++) cout<<"*"; cout<<endl;
Dans ce cas c'est seulement l'écriture du * qui se fera jusqu'à quand i égal longueur
Ensuite un saut de ligne sera écrit.
Si pour for il n'y a qu'un instruction alors les accolades ne sont pas obligatoires.
for(...) instruction1;
ou
for(...) { instruction1; }c'est la même chose
En revanche s'il y a plusieurs instructions les accolades sont obligatoires
for(...) { instruction1; instruction2; instructionN; }
Si on ne mets pas les accolades alors on est dans le cas
for(...) instruction1;
lami20j