Petit exercice
Résolu/Fermé
ninrin
Messages postés
9
Date d'inscription
jeudi 3 mai 2018
Statut
Membre
Dernière intervention
16 mai 2018
-
Modifié le 3 mai 2018 à 02:17
ninrin Messages postés 9 Date d'inscription jeudi 3 mai 2018 Statut Membre Dernière intervention 16 mai 2018 - 15 mai 2018 à 01:44
ninrin Messages postés 9 Date d'inscription jeudi 3 mai 2018 Statut Membre Dernière intervention 16 mai 2018 - 15 mai 2018 à 01:44
A voir également:
- Petit exercice
- Excel trier du plus grand au plus petit - Guide
- Petit 1 comme ² ✓ - Forum Windows
- Comment écrire un chiffre en petit caractè ✓ - Forum Bureautique
- Petit colis distribution - Forum Consommation & Internet
- J'ai un petit 1 dans messenger qui s'affiche mais pas de message comment effacer ce 1 - Forum Facebook Messenger
1 réponse
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
3 mai 2018 à 10:29
3 mai 2018 à 10:29
Salut ninrin,
Tu devrais sérieusement revoir ton cours ou ton manuel de C.
Ton prototype pour main est erroné et ne correspond pas aux prototypes standards acceptables en C (
Déclare tes variables dans le code de la fonction main, à l'intérieur des accolades.
Prend l'habitude de terminer tes printf avec un retour à la ligne
getchar va retourner sous forme d'entier le code ASCII d'un caractère lu, ce n'est donc pas ce que tu veux, utilise scanf.
Une fois que tu as ton entier, tu le multiplies par lui-même en ligne 5.. je ne vois pas où est ton problème.
Pour ton 2ème code, si ce que tu dois faire c'est juste afficher le contenu des chaînes à la suite, avec printf, tu peux indiquer un nombre variable de spécificateurs et un nombre correspondant d'arguments. Tu peux aussi faire plusieurs printf avec un seul spécificateur et un seul argument correspondant et sans retour à la ligne, sauf pour le dernier, mais c'est un peu bourrin.
Je suppose que tu devras rajouter des espaces pour que la phrase se lise correctement.
Dal
Tu devrais sérieusement revoir ton cours ou ton manuel de C.
Ton prototype pour main est erroné et ne correspond pas aux prototypes standards acceptables en C (
int main(int argc, char **argv)ou
int main(void), vois ton cours ou ton manuel.
Déclare tes variables dans le code de la fonction main, à l'intérieur des accolades.
Prend l'habitude de terminer tes printf avec un retour à la ligne
\nou une instruction
fflush(stdout);si tu ne veux pas faire de retour à la ligne, pour t'assurer que ton texte sera bien affiché.
getchar va retourner sous forme d'entier le code ASCII d'un caractère lu, ce n'est donc pas ce que tu veux, utilise scanf.
Une fois que tu as ton entier, tu le multiplies par lui-même en ligne 5.. je ne vois pas où est ton problème.
Pour ton 2ème code, si ce que tu dois faire c'est juste afficher le contenu des chaînes à la suite, avec printf, tu peux indiquer un nombre variable de spécificateurs et un nombre correspondant d'arguments. Tu peux aussi faire plusieurs printf avec un seul spécificateur et un seul argument correspondant et sans retour à la ligne, sauf pour le dernier, mais c'est un peu bourrin.
Je suppose que tu devras rajouter des espaces pour que la phrase se lise correctement.
Dal
3 mai 2018 à 17:47
int main(void)
{
int nb, carr ;
printf("Entrez un nombre:\n");
scanf(nb);
carr= nb*nb;
printf("Son carre est: %d\n", carr);
return 0;
}
J'ai surement foiré quelque part, car lorsque que je lance compil, il m'affiche bien "entrez un nombre:" et tape ensuite 2 et valide avec la touche "entrer". Et là il m'affiche "son carre est 1073758208. Ce qui est impossible comme résultat. Tu a une idée du problème? Je suis certain que sa vient de la ligne de scanf et de carr.
Pour la 2ème partie: concaténation, le résultat est fabuleux (je trouve), voici comment je m'y suis pris:
int main(void)
{
char t1[] = "belle Marquise";
char t2[] = "vos beaux yeux";
char t3[] = "me font mourir";
char t4[] = "d'amour";
printf("%s %s %s %s\n", t1, t2, t3, t4);
printf("%s %s %s %s\n", t3, t2, t4, t1);
printf("%s %s %s %s\n", t2, t3, t1, t4);
printf("%s %s %s %s\n", t4, t1, t2, t4);
return 0;
}
3 mai 2018 à 17:50
Ca devrait marcher comme ça
Bonne journée
Modifié le 3 mai 2018 à 18:18
Modifié le 3 mai 2018 à 18:40
l'esperluette étant l'opérateur permettant effectivement d'obtenir l'adresse mémoire où est stocké le contenu de la variable.
le lien que je donnais vers la documentation de scanf comporte des exemples http://www.cplusplus.com/reference/cstdio/scanf/
@ninrin: scanf est une instruction très puissante et complexe à bien maîtriser
au minimum, il faudrait vérifier la valeur de retour de scanf pour s'assurer que quelque chose qui est un nombre entier décimal (en base 10) a bien été trouvé sur stdin et se plaindre si ce n'est pas le cas, sinon on aura des résultats imprévisibles si l'utilisateur tape "toto" au lieu d'un nombre (scanf échouera, et ton programme ne le saura pas et continuera avec une valeur de nb non initialisée pouvant contenir n'importe quoi).
il faudrait aussi vérifier si on n'excède pas la capacité du type int, compte tenu de la taille maximale d'un int (dans ce cas, pour la saisie, plutôt que scanf, on utiliserait fgets pour récupérer une chaîne et strtol pour convertir la saisie en entier avec vérification), et aussi utiliser des types plus grands, etc.
cela dit, peut-être qu'on n'attend pas tout cela de toi si tu débutes tout juste :-)
Dal
Modifié le 9 mai 2018 à 23:37
le prochain l'exercice consiste à imbriber plusieurs else if, if etc... avec des opération logique comme suit :
Variables age, perm, acc, assur en entier
Variable situ en caractère
Début
C1 ← age >= 25
Sinonsi ((Non(C1) et C2) ou (C1 et Non(C2)) alors
Si acc = 0 alors
situ ← "Orange"
SinonSi acc = 1 alors
situ ← "Rouge"
Sinon
situ ← "Refusé"
FinSi
Sinon
Si acc = 0 alors
TRADUCTION C:
int main(void)
{
int age, perm, acc, assur;
char situ;
int C1 = 25;
if (age >=C1);
else if (!C1 && C2 || C1 && !C2)
{
if acc = 0 {
situ = "orange";
}
else if acc = 1 {
situ = "rouge";
}
else {
situ = "refusé";
}
}
return;
else if (acc = 0)
1er problème, j'ai un doute concernant ma déclaration en C, de ma variable C1 age >= 25, car j'ai pas bien saisis l'algorithme.
2ème problème, l'applicaton me dit qu'il y a erreur sur la ligne else if (!C1 && C2 || C1 && !C2), j'ai dû me tromper quelque part?
3ème, j'ai un doute pour "finsi" de l'algorithme, j'ai juste mis "return;" en C, c'est bon ? Car je vois parfois sur des sites "return 1.0;" par exemple.
4ème, j'ai un doute pour "Sinon
Si acc = 0 alors" de l'algorithme , j'ai mis direct "else if" en C. J'aurais peut-être dû mettre "else { if (acc = 0) }" ???
Voila n'hésitez pas à me faire remarqué les erreurs ^^.