A voir également:
- Code C++
- Code asci - Guide
- Code puk bloqué - Guide
- Code telephone oublié - Guide
- Code activation windows 10 - Guide
- Code gta 4 ps4 - Guide
6 réponses
Pacorabanix
Messages postés
3248
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
661
Modifié par Pacorabanix le 17/07/2011 à 23:11
Modifié par Pacorabanix le 17/07/2011 à 23:11
salut,
tu vois, ton rectangle tu le dessines avec le caractère '*' . Mais rien ne t'empêcherait de faire une autre fonction dessine rectangle qui dessine le rectangle avec par ex. le caractère '+' ou 'x' etc...
tu pourrais faire plusieurs fonctions :
etc...
mais c'est un peu moche.
finalement, ce caractère, tu pourrais très bien faire en sorte que ce soit un des paramètres que tu donnes à la fonction, comme la largeur et la longueur.
tu appellerais alors ta fonction depuis le main avec un troisième argument comme ceci :
tu comprends ?
et après, tu peux simplement demander le caractère dans le main, comme tu fais avec la largeur et la hauteur, dans une variable "caractere" par ex. , et tu appelles ta fonction avec cette variable :
tu vois, ton rectangle tu le dessines avec le caractère '*' . Mais rien ne t'empêcherait de faire une autre fonction dessine rectangle qui dessine le rectangle avec par ex. le caractère '+' ou 'x' etc...
tu pourrais faire plusieurs fonctions :
dessineRectangle(int l, int h) // ta fonction, qui dessine avec * dessineRectangleAvecPlus(int l, int h) // une autre qui dessine avec + dessineRectangleAvecX(int l, int h) // une autre qui dessine avec X
etc...
mais c'est un peu moche.
finalement, ce caractère, tu pourrais très bien faire en sorte que ce soit un des paramètres que tu donnes à la fonction, comme la largeur et la longueur.
tu appellerais alors ta fonction depuis le main avec un troisième argument comme ceci :
int main() { //. ... dessineRectangle(largeur, hauteur, '*'); dessineRectangle(largeur, hauteur, '+'); dessineRectangle(largeur, hauteur, 'X' ); // ... }
tu comprends ?
et après, tu peux simplement demander le caractère dans le main, comme tu fais avec la largeur et la hauteur, dans une variable "caractere" par ex. , et tu appelles ta fonction avec cette variable :
dessineRectangle(largeur, hauteur, caractere );
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
Modifié par KX le 17/07/2011 à 22:14
Modifié par KX le 17/07/2011 à 22:14
Je trouve bizarre ton utilisation de ta boucle...
ligne(0) ça fait penser à l'utilisation d'un constructeur par défaut d'un objet alors que int est type primitif et l'initialisation serait plutôt ligne=0
De plus je mettrai l'affichage de l'erreur à l'intérieur de la fonction...
Sinon je ne vois pas l'erreur, peut-être dans la fonction dessineRectangleun, mais tu ne l'as pas précisé...
La confiance n'exclut pas le contrôle
ligne(0) ça fait penser à l'utilisation d'un constructeur par défaut d'un objet alors que int est type primitif et l'initialisation serait plutôt ligne=0
De plus je mettrai l'affichage de l'erreur à l'intérieur de la fonction...
Sinon je ne vois pas l'erreur, peut-être dans la fonction dessineRectangleun, mais tu ne l'as pas précisé...
La confiance n'exclut pas le contrôle
@Pacorabanix :
"tu vois, ton rectangle tu le dessines avec le caractère '*' . Mais rien ne t'empêcherait de faire une autre fonction dessine rectangle qui dessine le rectangle avec par ex. le caractère '+' ou 'x' etc... "
Oui, c'est ce que je veux faire. J'avais rajouter une troisième fonction :
void dessineRectangleun(int l, int h)
{
for(int ligne(0); ligne < h; ligne++)
{
for(int colonne(0); colonne < l; colonne++)
{
cout << "o";
}
cout << endl;
}
}
Et donc, c'est pour ça qu'il y avait dessineRectangleun dans la fonction main.
Bah en fait, comme je l'attendais, ça a fait un rectangle de * et un autre en dessous de o. Or, je veux qu'on ait le choix pour le symbole à utiliser lors de la création du rectangle.
@KX : C'est le code d'un petit exemple sur le sdz, je n'ai rajouté que la condition.
Merci
"tu vois, ton rectangle tu le dessines avec le caractère '*' . Mais rien ne t'empêcherait de faire une autre fonction dessine rectangle qui dessine le rectangle avec par ex. le caractère '+' ou 'x' etc... "
Oui, c'est ce que je veux faire. J'avais rajouter une troisième fonction :
void dessineRectangleun(int l, int h)
{
for(int ligne(0); ligne < h; ligne++)
{
for(int colonne(0); colonne < l; colonne++)
{
cout << "o";
}
cout << endl;
}
}
Et donc, c'est pour ça qu'il y avait dessineRectangleun dans la fonction main.
Bah en fait, comme je l'attendais, ça a fait un rectangle de * et un autre en dessous de o. Or, je veux qu'on ait le choix pour le symbole à utiliser lors de la création du rectangle.
@KX : C'est le code d'un petit exemple sur le sdz, je n'ai rajouté que la condition.
Merci
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
18 juil. 2011 à 00:45
18 juil. 2011 à 00:45
Comme le disait Pacorabanix, plutôt que de faire une fonction par caractère différent, tu dois rajouter un argument à ta fonction pour préciser quel caractère tu affiches.
Tu n'as alors plus qu'à faire un cin supplémentaire pour récupérer ce caractère et l'utiliser dans la fonction...
Tu n'as alors plus qu'à faire un cin supplémentaire pour récupérer ce caractère et l'utiliser dans la fonction...
#include <iostream> void dessineRectangle(int x, int y, char c) { if (x<=0 || y<=0) { std::cerr << "Largeur et hauteur d'un rectangle doivent etre positives" << std::endl; return; } for (int i=0; i<x; i++) { for (int j=0; j<y; j++) std::cout << c; std::cout << std::endl; } } int main() { int x,y; char c; std::cout << "Largeur du rectangle : "; std::cin >> x; std::cout << "Hauteur du rectangle : "; std::cin >> y; std::cout << "Caractere du dessin : "; std::cin >> c; std::cout << std::endl; dessineRectangle(x,y,c); return 0; }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ha... je comprends mieux. Merci à vous deux, ça fait plaisir qu'il y ait des gens qui aident des novices comme moi :)
J'ai tout compris, cependant j'aurai deux questions :
int x,y; Ceux sont bien deux variable déclaré sans être initialisé ?
std::cin >> c; Pourquoi mets tu des std:: ? Ce n'est pas plus simple de mettre au début using namespace std; ?
Je pense qu'il doit bien avoir une raison..
J'ai tout compris, cependant j'aurai deux questions :
int x,y; Ceux sont bien deux variable déclaré sans être initialisé ?
std::cin >> c; Pourquoi mets tu des std:: ? Ce n'est pas plus simple de mettre au début using namespace std; ?
Je pense qu'il doit bien avoir une raison..
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
18 juil. 2011 à 08:26
18 juil. 2011 à 08:26
x,y et c sont initialisées au moment du cin, c'est d'ailleurs comme ça que tu faisais pour tes deux variables largeur et hauteur.
Pour le std ce n'est pas faux de mettre le using namespace dans ce code, cependant les espaces de noms permettent de lever des ambiguïtés, et cela pourrait t'amener à faire des erreurs le jour où tu devras manipuler plusieurs namespaces différents avec des noms de fonctions identiques. C'est une mauvaise habitude à prendre de toujours mettre le using namespace juste parce que c'est "plus pratique". En plus personnellement avec Visual Studio j'ai un complètement automatique, c'est à dire que dès que je tape std:: j'ai toute la liste des fonctions de l'espace de noms qui apparaissent, donc pour moi c'est ça le plus pratique ;)
Pour le std ce n'est pas faux de mettre le using namespace dans ce code, cependant les espaces de noms permettent de lever des ambiguïtés, et cela pourrait t'amener à faire des erreurs le jour où tu devras manipuler plusieurs namespaces différents avec des noms de fonctions identiques. C'est une mauvaise habitude à prendre de toujours mettre le using namespace juste parce que c'est "plus pratique". En plus personnellement avec Visual Studio j'ai un complètement automatique, c'est à dire que dès que je tape std:: j'ai toute la liste des fonctions de l'espace de noms qui apparaissent, donc pour moi c'est ça le plus pratique ;)