ce que tu veux faire c'est demander la largeur du rectangle, puis sa hauteur et donner ces deux nombres à la fonction qui va en calculer l'aire. Et bien, fais exactement cela
⇒ on commence par demander la largeur du rectangle en la stockant dans une variable, tout pareil pour la hauteur, puis on calcule l'aire que l'on stocke aussi dans une variable et que l'on affiche par la suite
Ici, ta fonction est simple et peut en effet être remplacée par un simple calcul. Mais elle pourrait être beaucoup plus complexe et pouvoir être utilisée avec plusieurs valeurs possibles. Tu verras assez vite l'utilité des fonctions.
Le Tout est souvent plus grand que la somme de ses parties.
Maintenant si tu trouves que remplacer une simple multiplication par une fonction est «overkill» oui … sans doute, mais :
une fonction permet de rajouter des vérifications par exemple :
double aireRectangle(double longueur, double hauteur)
{
if (longueur<0) {
// on gère l'erreur
} else if (hauteur<0) {
// idem
} else {
// on est certain que les données sont correctes
}
}
de réutiliser d'autres fonctions (bon ici l'exemple est bidon) :
ce que tu veux faire c'est demander la largeur du rectangle, puis sa hauteur et donner ces deux nombres à la fonction qui va en calculer l'aire. Et bien, fais exactement cela
⇒ on commence par demander la largeur du rectangle en la stockant dans une variable, tout pareil pour la hauteur, puis on calcule l'aire que l'on stocke aussi dans une variable et que l'on affiche par la suite
Hello merci pour ta réponse, excellent ça fonctionne !!! Je ne savais pas qu'on pouvait déclarer des variables n'importe où dans le main je pensais qu'il fallait les déclarer uniquement au début du programme... par contre ce n'est pas indispensable de les initialiser à 0 ?!
Je trouve cette façon de faire plus propre mais c'est chacun ses préférences j'imagine ? Par contre j'ai toujours des soucis pour savoir où il faut mettre un point virgule ou pas... & j'ai aussi de la peine avec le scanf j'oublie très souvent le & avant la variable, car je ne sais pas à quoi il se réfère ?!
J'ai répondu à White Crow mais mon message a été supprimé car considéré comme spam pffffffffffffff... je l'ai juste édité deux fois pour corriger des fautes d'orthographe & plus rien !!!
Hello merci pour ta réponse, excellent ça fonctionne !!! Je ne savais pas qu'on pouvait déclarer des variables n'importe où dans le main je pensais qu'il fallait les déclarer uniquement au début du programme... par contre ce n'est pas indispensable de les initialiser à 0 ?!
Je trouve cette façon de faire plus propre mais c'est chacun ses préférences j'imagine ? Par contre j'ai toujours des soucis pour savoir où il faut mettre un point virgule ou pas...
C'est effectivement mieux de déclarer les variables là où en a besoin. Les initialiser à 0 n'est pas nécessaire, mais c'est sans doute mieux si tu débute. En effet une variable locale (non static, mais oublie ça si tu ne sais pas ce que c'est) déclarée sans valeur initiale peut contenir n'importe quelle valeur aléatoire. Il faut mettre un ; à la fin de chaque instruction.
Sebiohazard a écrit:
j'ai aussi de la peine avec le scanf j'oublie très souvent le & avant la variable, car je ne sais pas à quoi il se réfère ?!
En fait dans ce contexte le & signifie «adresse de», c'est un opérateur qui renvoie l'adresse mémoire de son argument. Si tu donnes une variable comme paramètre à une fonction, alors seule la valeur de cette variable sera transmise, pas «la variable elle-même» ⇒ tu ne peux la modifier dans la fonction. En revanche si tu donnes une adresse tu peux modifier ce qui y est.
Si tu donnes une variable comme paramètre à une fonction, alors seule la valeur de cette variable sera transmise, pas «la variable elle-même» ⇒ tu ne peux la modifier dans la fonction. En revanche si tu donnes une adresse tu peux modifier ce qui y est.
Hello !
Merci pour ton aide, je viens d'apprendre cela avec le chapitre sur les pointeurs... j'avoue que cela m'est très difficile à assimiler, je galère pour comprendre l'exemple donné dans le cours avec le " Découpe heure " !!!
C'est frustrant car au début j'apprenais plus au moins rapidement, mais à présent (& c'est normal j'imagine) cela devient toujours plus compliqué... & j'ai toujours de la peine à savoir s'il faut une parenthèse ou un point virgule... il n'y a pas un mémo technique ?
C'est frustrant car au début j'apprenais plus au moins rapidement, mais à présent (& c'est normal j'imagine) cela devient toujours plus compliqué... & j'ai toujours de la peine à savoir s'il faut une parenthèse ou un point virgule... il n'y a pas un mémo technique ?
Bah heu …
Tu mets des parenthèse pour encadrer la liste des arguments que tu donnes à une fonction, pour encadrer les tests dans les if/while et pour le for il y a une syntaxe précise …
OK mais pourquoi ne mettrait-on pas un point virgule comme ceci:
if (x > y);
y = x; // il faut (fin affectation et if)
Sinon concernant les pointeurs y a-t-il une autre approche car toujours aussi incompréhensible pour moi ?!
1. Parce que ça serait équivalent à
if (x > y) {}
y = x;
Explication : les structures de contrôle comportent une instruction
if (condition) instruction
while (condition) instruction
for( instruction; condition; expression) instruction
switch(expression) instruction (*)
et ces instructions peuvent être
des instructions simples (affectation, appel de fonction, etc)
un bloc avec des accolades
ou une instruction vide, terminée par un point virgule
et donc
if (x < y) ;
qui comporte, après la condition, une instruction vide qui ne fait rien, est équivalent à
if (x < y) {}
un "corps", (c'est le case de la partie "else" du fi, de ce qui sera répété dans le while, de l'instruction du switch (*), ...
On se sert parfois de cette particularité pour écrire des horreurs du genre
for(i=0;(d[i]=s[i])!='\0';i++);
mais bon, il vaut mieux éviter. Le C, c'est plein de petits symboles styles cacas de mouche, et le point-virgule à la fin de ++); n'est pas la chose la plus lisible du monde, on peut le louper facilement.
Donc, préférences personnelles de style, utiliser l'espacement horizontal, et être explicite sur le fait que le corps est vide
for (i = 0; (d[i] = s[i]) != '\0' ; i++) {}
comme ça je ne me demande pas si j'ai mis un point virgule volontairement ou par erreur.
(*) est-ce bien raisonnable d'aborder ce douloureux sujet ?
corps de la boucle while,
- Edité par michelbillaud 8 avril 2021 à 19:54:45
Cours sur les fonctions
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Le Tout est souvent plus grand que la somme de ses parties.