Programmer une table de multiplication [C] [Fermé]

Signaler
Messages postés
13
Date d'inscription
samedi 6 janvier 2018
Statut
Membre
Dernière intervention
13 mars 2018
-
Messages postés
3441
Date d'inscription
vendredi 9 janvier 2015
Statut
Membre
Dernière intervention
29 janvier 2021
-
Bonjour,


Je suis à mes débuts en programmation et je suis face à un exercice où il nous est demandé la chose suivante :

"Créer un programme qui demande d'entrer un entier entre 1 et 9 puis qui affiche sa table de multiplication".

Si l'on entre 5 le programme affichera donc :

1 X 5 = 5
2 X 5 = 10
...
9 X 5 = 45

En me basant sur mes connaissances je suis arrivé à ce code là, mais il est incomplet et je stagne, j'aurais donc aimé avoir votre avis. Je pense qu'il y a un trc à ajouter avec "for" ou "while" mais je bloque.

#include <stdio.h>

int main ( )  {
int nombre;

while ((nombre < 1) || (nombre > 9)) {
printf ("Entrez un nombre entre 1 et 9 à multiplier : ");
scanf ("%d", &nombre);
}

printf ("Voici la table de multiplication de %d", nombre);
nombre = 1;
while (nombre <= 10) {

}



A voir également:

3 réponses

Messages postés
3441
Date d'inscription
vendredi 9 janvier 2015
Statut
Membre
Dernière intervention
29 janvier 2021
706
Bonjour !

Je vais répondre... en Java :-D \o/

Bah oui, chacun son code, à toi de comprendre mais tkt c'est documenté ;-)

Info sur le do while en C


// méthode main
public static void main() {
    // déclaration de l'attribut nombre
    int nombre;

    // on met un do while parce que le test DOIT ÊTRE exécuté APRES la saisie de l'utilisateur
    // Aussi, parce que l'on ne sait pas combien de tentatives l'utilisateur va faire, le while (ou do-while) est justifié.
    // Dans tes boucles définies : privilégie le for. Y a qu'en Basic sur une Graph 100(+) que le for est moins
    // performant que le while (sur une Graph 35+/75/85/95 c'est déjà plus le cas)
    // Ah et puis ça permet de mieux comprendre la logique du code pour un autre 
    // qui le relit derrière ;-)
    do {
        // je te pique ta ligne de code en espérant qu'elle soit bonne
        scanf ("%d", &nombre);
        // Idem
        // Attention : la table de multiplication c'est de 1 à 10 ;-)
        while ((nombre < 1) || (nombre > 10)) 
    }
    //Idem
    printf ("Voici la table de multiplication de %d", nombre);
    // On est sur un intervalle de 1 à 10, donc vu qu'il est défini on utilise un for
    // vu que le test est <, c'est du strictement inférieur : le 11 est exclu
    // Note que le for est écrit en Java ;-)
    for (int vIncrement = 1 ; i < 11 ; i++) {
        // Je ne sais pas comment tu fais pour chainer les variables... essaie de creuser ;-)
        printf ("Voici la table de multiplication de %d = %d x %e = %f", nombre, vIncrement, nombre*vIncrement);
    }
}


Voilà voilà, j'espère que t'as de meilleures pistes ;-)

EDIT : J'ai corrigé des coquilles.
La vie quotidienne peut vite vous rendre accro et vous faire perdre aux jeux-vidéos ! 
Un peuple sacrifiant sa liberté pour plus de sécurité perd les deux.
Messages postés
13
Date d'inscription
samedi 6 janvier 2018
Statut
Membre
Dernière intervention
13 mars 2018

Merci de ta répons,e elle m'apporte quelques pistes, après je suis encore pas assez au point pour passer du Java en C, je vais attendre de voir si quelqu'un peut répondre sur le langage C du coup ^^'
Messages postés
3441
Date d'inscription
vendredi 9 janvier 2015
Statut
Membre
Dernière intervention
29 janvier 2021
706
J'avais oublié la dernière accolade ;-)
Messages postés
13
Date d'inscription
samedi 6 janvier 2018
Statut
Membre
Dernière intervention
13 mars 2018

Ah mince j'avais modifié vIncrement exprès ^^'

Et non ça passe toujours pas mais même le compilateur voit pas ce qui bloque. Est-ce que ça viendrait pas du "do while" ?
Messages postés
3441
Date d'inscription
vendredi 9 janvier 2015
Statut
Membre
Dernière intervention
29 janvier 2021
706
normalement non, je relis mais je vois rien
Tu codes sous Visual studio ? Code:blocks ? Bizarre qu'il remonte pas le problème...
Messages postés
3441
Date d'inscription
vendredi 9 janvier 2015
Statut
Membre
Dernière intervention
29 janvier 2021
706
Là je télécharge Netbeans, mais vu ma co en carton ça prend des plombes --' 15 minutes pour 220 Mo quoi
Messages postés
13
Date d'inscription
samedi 6 janvier 2018
Statut
Membre
Dernière intervention
13 mars 2018

J'ai trouvé, encore merci à toi, en dernier post tu as la version finale du code si tu veux ! :)
Messages postés
13
Date d'inscription
samedi 6 janvier 2018
Statut
Membre
Dernière intervention
13 mars 2018

Après quelques essais j'ai la version finale !!!

#include <stdio.h>

int main ( ) {
int nombre;
int vIncrement;

do {
printf ("Entrer un chiffre à multiplier entre 1 et 10\n");
scanf ("%d", &nombre);
} while ((nombre < 1) || (nombre > 11));

for (vIncrement = 1 ; vIncrement < 11 ; vIncrement ++) {
printf ("Voici la table de multiplication de %i = %i x %i = %i \n", nombre, nombre, vIncrement, nombre * vIncrement);
}}
Messages postés
3441
Date d'inscription
vendredi 9 janvier 2015
Statut
Membre
Dernière intervention
29 janvier 2021
706
Le point-virgule à la fin du while, c'est ça ? :-)
Alors, ça marche bien ? J'ai de la conf CygWin qui m'attend sur Netbeans, chui pas ops pour tester ca :-D
Messages postés
13
Date d'inscription
samedi 6 janvier 2018
Statut
Membre
Dernière intervention
13 mars 2018

En fait il fallait replacer le int vIncrement au début de mon code. Et oui le compilateur demandait un point virgule après while. Encore merci en tout cas ^^
Messages postés
3441
Date d'inscription
vendredi 9 janvier 2015
Statut
Membre
Dernière intervention
29 janvier 2021
706
Parfait \o/ Tu peux passer en résolu ;-)