IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Tableaux de multiplication


Sujet :

C

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2024
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2024
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Tableaux de multiplication
    Bonjour à tous ,

    Je débute en programmation et j'essaye de reproduire ce tableau. (Pour tous entier inférieur ou égal à 10 saisi, il affiche les tables de multiplication jusqu'à 10 inférieurs à l'entier saisie le minimum étant la table 1 . ) Nom : Capture.PNG
Affichages : 169
Taille : 25,8 Ko

    Pour le moment, j'ai fait le programme ci-dessous, mais il me fait l'inverse, il affiche les tables de multiplication supérieur à l'entier saisie est ce que quelqu'un a le programme que je devrais utiliser s'il vous plaît ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #include <stdio.h>
    int main()
     
    {
      int nbr, i ;
     
      printf(" Entrez un entier: ");
      scanf("%i",&nbr);
     
      while (nbr <= 10){
        for (i = 1; i <= 10; i++)
        {
          printf(" %i ", nbr * i);
        }
        printf("\n ==========\n");
        nbr++;
      }
      return 0;
    }

  2. #2
    Expert éminent
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 586
    Points : 7 724
    Points
    7 724
    Par défaut
    Bonjour,

    Tu as écris un while qui part de nbr pour aller jusqu'à 10, le code affiche donc la fin de la table.
    Ce que tu veux, c'est partir de 1 pour aller jusqu'au nbr_max_fourni.
    Ton code doit avoir au moins 3 variables, avec 2 variables c'est impossible:
    - le nombre max à atteindre fourni par l'utilisateur
    - le nombre courant qui va aller de 1 jusqu'au nombre saisi par l'utilisateur.
    - la variable i utilisée dans la boucle intérieure.

    La boucle extérieure peut s'écrire par une boucle for plutôt qu'un while, elle ressemblerait alors à:
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    for ( int nbr = 1 ; nbr < nbr_max_fourni ; nbr++ )
    Et c'est une très mauvaise idée de déclarer les variables au début d'une fonction, il est est plus sûr de le faire juste avant leur utilisation.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2024
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2024
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Merci beaucoup pour votre aide , j'ai rajouté un égal au nbr <= nbr_max_fourni ; est-il possible d'aligner les nombres comme sur ma capture dans mon premier message? Mon tableau s'affiche comme ça sur visual studio code : Nom : Capture.PNG
Affichages : 136
Taille : 6,0 Ko

    mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    #include <stdio.h>
    int main()
     
    {
    int nbr_max_fourni ;
     
    printf(" Saisissez un entier : ");
    scanf("%i",&nbr_max_fourni );
     
    for ( int nbr = 1 ; nbr <= nbr_max_fourni ; nbr++ ){
    for (int i = 1; i <= 10; i++)
    {
    printf(" %i ", nbr * i);
    }
    printf("\n") ;
    }
    return 0;
    }

    Est-il possible de placer le int nbr_max_fourni plus tard dans le code ?

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 675
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 675
    Points : 10 689
    Points
    10 689
    Par défaut
    Citation Envoyé par lcisse2 Voir le message
    est-il possible d'aligner les nombres comme sur ma capture dans mon premier message?
    Le truc le plus simple c'est d'utiliser le formatage de printf printf("%4i", (nbr * i));.
    Comme ton max c'est 10, 10x10 = 100 soit 3 chiffres, donc 4 avec l'espace entre les colonnes (<- sauf le nombre le + à gauche)
    printf, documentation sur cplusplus.com en anglais

    Sinon il faut compter le nombre de chiffres. Ton cas est facile puisque ton maximum c'est 100.
    Avec 1 case on fait : <10, tu affiches 3 espaces + le nombre - < 100, tu affiches 2 espaces + le nombre - sinon tu affiches 1 espace + le nombre.

    Sinon pour compter le nombre de chiffres, il faut faire des divisions successives par 10.
    Par exemple : 857 -> étape 1: 85, 1 chiffre -> étape 2: 8, 2 chiffres -> étape 3 : fin puisque 8 < 10 donc 3 chiffres.

    Citation Envoyé par lcisse2 Voir le message
    st-il possible de placer le int nbr_max_fourni plus tard dans le code ?
    Je ne comprends pas bien ta question … mais oui en faisant 1 fonction void afficher_tables_multiplication(size_t nb_tables).

    Citation Envoyé par dalfab Voir le message
    Ton code doit avoir au moins 3 variables, avec 2 variables c'est impossible:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        size_t nb=10, i;
     
        for(i=1; i <= nb; ++i) {
            printf("%3lu%4lu%4lu%4lu%4lu%4lu%4lu%4lu%4lu%4lu\n",
                i,       (i * 2), (i * 3), (i * 4), (i * 5),
                (i * 6), (i * 7), (i * 8), (i * 9), (i * 10));
        }

  5. #5
    Expert éminent
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 586
    Points : 7 724
    Points
    7 724
    Par défaut
    Citation Envoyé par lcisse2 Voir le message
    Merci beaucoup pour votre aide , j'ai rajouté un égal au nbr <= nbr_max_fourni ; est-il possible d'aligner les nombres comme sur ma capture dans mon premier message?
    Le format de printf a quelques possibilités. En utilisant "%3i " ou "%3d " on affiche les entiers sur au moins 3 caractères, tu auras tes nombres correctement alignés.
    Citation Envoyé par lcisse2 Voir le message
    Est-il possible de placer le int nbr_max_fourni plus tard dans le code ?
    La variable doit être créée avant son utilisation, tu l'as placée au bon endroit.

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2024
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2024
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Merci , j'ai réussi

  7. #7
    Membre expérimenté Avatar de edgarjacobs
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 676
    Points : 1 710
    Points
    1 710
    Par défaut
    Sinon pour compter le nombre de chiffres, il faut faire des divisions successives par 10
    Ou utiliser log10(i)+1; (#include <math.h> [et -lm pour le link avec gcc sous linux] )
    On écrit "J'ai tort" ; "tord" est la conjugaison du verbre "tordre" à la 3ème personne de l'indicatif présent

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Tableaux] Récupération multiples checkbox
    Par masseur dans le forum Langage
    Réponses: 2
    Dernier message: 30/07/2007, 18h34
  2. [Tableaux] Liste multiple et affichage de données
    Par Triforce dans le forum Langage
    Réponses: 3
    Dernier message: 06/06/2007, 22h46
  3. Réponses: 1
    Dernier message: 21/03/2007, 16h21
  4. [Tableaux] seleted multiple insert puis update
    Par digger dans le forum Langage
    Réponses: 2
    Dernier message: 10/07/2006, 16h32
  5. [Tableaux] Affichage multiple 0_o
    Par oceane751 dans le forum Langage
    Réponses: 4
    Dernier message: 25/04/2006, 23h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo