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 :

Problème boucle tableau ?


Sujet :

C

  1. #1
    Membre averti Avatar de jbarreau-mainson
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    446
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 446
    Points : 412
    Points
    412
    Par défaut Problème boucle tableau ?
    Bonjour à tous, voici mon problème :

    je souhaite saisir des chiffres dans deux tableaux par l'intermediaire d'une boucle.

    Voici ce que j'ai tappé :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
       void print1(void){
     
    int i=0, j=0;
    int reste=0;
    int nombre=0;
    int cpt=0;
    int num[30];
    float pos[30];
     
    	puts("* Saisissez le nombre souhaité");
     
        while (reste>0){
            for ( i=0 ; i<=nombre ; i++ ){
                puts("Saisissez le numero : ");
                scanf("%d",&num[i]);
                for( j=0 ; j<=nombre ; j++ ){
                    puts("Saisissez la position : ");
                    scanf("%f",&pos[j]);
                    cpt++;
                    reste=nombre-cpt;
     
                    if ( reste==1 ){
                        purge();
                        printf("-> Il reste encore %d nombres a designer \n", reste);
                        puts("");
                    }
     
                    if ( reste>1 ){
                        purge();
                        printf("-> Il reste encore %d nombre a designer \n", reste);
                        puts("");
                    }
                }
            }
        }
     
        void purge(void)
    {
    	int c;
    	while ((c = getchar()) != '\n' && c != EOF); /* mange le tampon */
    }
    Mais je ne sors pas de la boucle quand il faut.
    Après de moultes tentatives je me tourne vers vous

  2. #2
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Voir commentaires :

    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
       void print1(void){     
    ....
    int reste=0;
    int nombre=0;
    int cpt=0;
    ... 
        while (reste>0){      // reste ==0 : on n'entre pas dans la boucle
            for ( i=0 ; i<=nombre ; i++ ){  // nombre est toujours égal à 0
    ...
                for( j=0 ; j<=nombre ; j++ ){
    ...
                    cpt++;
                    reste=nombre-cpt; //donc reste ne peut qu'être négatif ou nul
    ...
        }
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  3. #3
    Membre averti Avatar de jbarreau-mainson
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    446
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 446
    Points : 412
    Points
    412
    Par défaut
    Ok j'avais entre autre oublié de copier ça :

    puts("* Saisissez le nombre souhaité");
    scanf("%d", &nombre);
    Et donc j'ai modifié la condition de la boucle while :

    while (cpt!=nombre){
    ... }

  4. #4
    Membre averti Avatar de jbarreau-mainson
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    446
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 446
    Points : 412
    Points
    412
    Par défaut
    Donc voila le code modifié mais ca ne fonctionne pas :'(

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    void print1(void){
     
    int i=0, j=0;
    int reste=0;
    int nombre=0;
    int cpt=0;
    int num[30];
    float pos[30];
     
    	puts("* Saisissez le nombre souhaité");
                 scanf("%d", &nombre); 
     
        while (cpt!=nombre){ 
            for ( i=0 ; i<=nombre ; i++ ){
                puts("Saisissez le numero : ");
                scanf("%d",&num[i]);
                for( j=0 ; j<=nombre ; j++ ){
                    puts("Saisissez la position : ");
                    scanf("%f",&pos[j]);
                    cpt++;
                    reste=nombre-cpt;
     
                    if ( reste==1 ){
                        purge();
                        printf("-> Il reste encore %d nombres a designer \n", reste);
                        puts("");
                    }
     
                    if ( reste>1 ){
                        purge();
                        printf("-> Il reste encore %d nombre a designer \n", reste);
                        puts("");
                    }
                }
            }
        }
     
        void purge(void)
    {
    	int c;
    	while ((c = getchar()) != '\n' && c != EOF); /* mange le tampon */
    }

  5. #5
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    J'ai du mal à bien comprendre ce que tu veux. Cela correspond-il à tes besoins?

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    #include <stdio.h>
    #include <stdlib.h>
     
    #define TAILLE_TAB 30
     
    void purge(void)
    {
        int c;
        while ((c = getchar()) != '\n' && c != EOF); /* mange le tampon */
    }
     
    void print1(void)
    {
        int i;
        int nombre = 0;
        int num[TAILLE_TAB] = {0};
        float pos[TAILLE_TAB] = {0.0};
        int rv = 0;
     
        /* -tc- on securise sommairement la saisie*/
        do
        {
            printf("* Saisissez le nombre souhaite (max. %d) : ", TAILLE_TAB);
            fflush(stdout);
            rv = scanf("%d", &nombre);
            purge();
        }
        while (rv != 1 || nombre < 0 || nombre > TAILLE_TAB);
     
     
     
        for ( i = 0 ; i < nombre ; i++ )
        {
            do
            {
                printf("Saisissez le %d%s numero : ", i + 1, (i>0)?"eme":"er");
                fflush(stdout);
                rv = scanf("%d", num + i);
                purge();
            }
            while (rv != 1);
     
            do
            {
                printf("Saisissez la %d%s position : ", i + 1, (i>0)?"eme":"ere");
                fflush(stdout);
                rv = scanf("%f", pos + i);
                purge();
            }
            while (rv != 1);
        }
    }
     
    int main(void)
    {
        print1();
        return 0;
    }
    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  6. #6
    Membre averti Avatar de jbarreau-mainson
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    446
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 446
    Points : 412
    Points
    412
    Par défaut
    Merci beaucoup !
    C'est exactement ce que je voulais !!!

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

Discussions similaires

  1. Problème boucle tableau
    Par Bissmark dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 26/01/2012, 18h56
  2. [CS4] Parser tableau : problème boucle for.
    Par nanou777 dans le forum ActionScript 3
    Réponses: 5
    Dernier message: 16/04/2011, 20h36
  3. [phpToPDF] Boucle dans un tableau
    Par breizhlama dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 03/05/2010, 16h45
  4. Problème de tableau
    Par tom06440 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 26/04/2005, 20h30
  5. Problème de tableau
    Par krfa1 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 08/02/2005, 11h09

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