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 :

Besoin d'aide ( Tableaux )


Sujet :

C++

  1. #1
    Membre averti
    Inscrit en
    Février 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Février 2008
    Messages : 54
    Par défaut Besoin d'aide ( Tableaux )
    Bonsoir tous le monde ,
    J'ai besoin que quelqu'un m'explique comment verifier si un nombre est deja entré dans un tableau (tab) pour que ce dernier ne soit pas repeté ...
    Je m'explique , On remplie le tableux par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	const int N = 3; 
    	int x , tab[N]; 
    	for (int i=0 ; i<N ; i++ ) 
    	{   
    		cout<< "entrez  un nombre entre 1 et 10" <<endl; 
    		cin>>x ; 
    }
    Apres ca , supposons qu'on ait déjà entré une série des nombres et l'index soit arrivé à la valeur "i" . Quand le ième nombre est entré on verifie s’il existe un nombre ayant la même valeur dans le tableau.
    J'espere que je me suis bien explique ..
    Je suis vraiment bloqué la , et ca sera un grand plaisir si quelqu'un puisse m'aider !!
    J'ai pensé a faire initier une boucle de vérification, imbriquée dans la première boucle pour tous les nombres de 0 à i-1.

    Cordialement ,
    crazyvirus .

  2. #2
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 82
    Par défaut
    bonsoir,

    oui il te suffit de parcourir ton tableau et de comparer successivement les valeurs avec la nouvelle valeur rentrée .

    ps: ton code c'est du c++

  3. #3
    Membre averti
    Inscrit en
    Février 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Février 2008
    Messages : 54
    Par défaut
    Je sais , mais une idée en code sera apprecié ! !

  4. #4
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    863
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 863
    Par défaut
    Pouvez-vous rajouter une boucle for ainsi
    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
     
    unsigned char trouve;
    for (int i=0 ; i<N ; i++ ) 
    {   
      cout<< "entrez  un nombre entre 1 et 10" <<endl; 
      cin>>x ; 
      trouve = 0;
      for (int j=0 ; j<N ; j++ ) 
      {   
        if (tab[j] == x)
        {
          trouve = 1;
          break;
        }
      }
    }

    Je confirme que c'est du C++. Pour une prochaine fois, allez sur le forum C++.

  5. #5
    Membre averti
    Inscrit en
    Février 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Février 2008
    Messages : 54
    Par défaut
    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
    #include <iostream>
    using namespace std ; 
    int main()
    {
    	const int N = 3; 
    	int x , tab[N]; 
    	unsigned char trouve;
    for (int i=0 ; i<N ; i++ ) 
    {   
      cout<< "entrez  un nombre entre 1 et 10" <<endl; 
      cin>>x ; 
      trouve = 0;
      for (int j=0 ; j<N ; j++ ) 
      {   
        if (tab[j] == x)
        {
          trouve = 1;
          break;
        }
      }
    }
    return 0 ; 
    }
    J'ai pas compris ce que fait trouve ?
    PS : Ca marche pas ...

  6. #6
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    863
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 863
    Par défaut
    Il faut que la table ait été rempli précédement.
    Ou alors vous pouvez garder ce code et au lieu d'aller jusqu'à N aller jusqu'à i- 1
    dans ce cas.

    Je vous laisse le soin de coder.

  7. #7
    Membre averti
    Inscrit en
    Février 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Février 2008
    Messages : 54
    Par défaut
    Merci de votre reponse ..
    Pour le i-1 ?
    supposon ce tableau :
    1 2 8 4 5 6 7 8
    Quand il arrive au dernier nombre "8" .. comment il va verifie si il est deja entré ?
    Moi sa ye , j'ai la tete qui tourne je vais aller dormir !
    Je viens de debuter les tableaux y a une semaine !!
    J'espere que quelqun me donne une solution .
    Merci d'avance !

  8. #8
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    On t'a déjà montré comment on fait. Dans ton code tu n'effectues même pas de saisie alors que veux-tu qu'il se passe ?
    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
    #inlude <stdio.h>
     
    #define MAX  10
    #define VRAI  1
    #define FAUX  0
     
    int already_in_tab(int tab[], size_t nb_elements, int value); /* Teste si le tab contient deja value. */
    /* nb_elements : nombre d'elements deja contenus dans le tableau */
     
    int main()
    {
        size_t i = 0;
        int n;
     
        while (i < MAX)
        {
            printf("t[%lu] = ", (unsigned long)i);
            scanf("%d", &n);
            if (already_in_tab(t, i, n)) /* on recommence */
                printf("Ce nombre a deja ete entre. Recommencez.\n");
            else /* on met n dans t[i] et on passe au i suivant */
            {
                t[i] = n;
                i++;
            }
        }
     
        printf("Merci.\n");
     
        return 0;
    }
    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
    int already_in_tab(int tab[], size_t nb_elements, int value)
    {
        size_t i;
        int ret = FAUX;
     
        for(i = 0; i < nb_elements; i++)
        {
            if (tab[i] == value)
            {
                ret = VRAI;
                break;
            }
        }
     
        return ret;
    }
    On est dan le forum C, il faut coder en C. Si tu veux coder en C++ va dans le forum C++.

  9. #9
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Qu'est-ce que tu ne comprends pas encore actuellement ?

  10. #10
    Membre averti
    Inscrit en
    Février 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Février 2008
    Messages : 54
    Par défaut
    Bein c en C , je connais pas le c !! DSL

  11. #11
    Membre averti
    Inscrit en
    Février 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Février 2008
    Messages : 54
    Par défaut
    Bonjour ,
    je suis arrivé a faire ca mais mon programme a bcoup de probleme ( Pas d'erreur , ni warning mais essayez de tapez la meme valeur n fois !!

    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
    #include <iostream.h>
    #include <iomanip.h>
     
    void entrerUnNombre();    // Prototype de la fonction
     
    int tab[10],              // Déclaration du tableau de 10 élements entiers
     i;                    // Position courante de l'index du tableau
     
    int main()
    {
     cout << "Entrez 10 nombres entiers compris entre 1 et 30" << endl;
     
     for (i=0; i<10; i++)
     {
      entrerUnNombre();          // Fonction qui lit et valide la valeur
     
      for (int j=0; j<i; j++)
      {
       if (tab[i]==tab[j])    // Vérifie s'il existe un nombre ayant la même valeur dans le tableau
     
        cout << "Element repete" << endl;
      }
     }
     for (i=0; i<10; i++)
     
      cout << setw(7) << tab[i];  // Affichage des nombres entrés
     
     cout << endl;
     
     return 0;    // Indique que le programme a terminé avec succès
    }
     
    void entrerUnNombre ()              // Fonction qui lit et valide la valeur
    { 
     int x;               // Déclaration de la variable à être lue
     
     cin >> x;            // Lecture du nombre
     
     if (x>=1 && x<=30)
     
      tab[i]=x;        // Emplacement du nombre dans le tableau à la position courante de l'index
     else
      cout << "La valeur n'est pas valide. Entrez un nombre compris entre 1 et 30" << endl;
    }

  12. #12
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    As-tu déjà au moins essayé le code tout fait que je t'ai proposé ? Ca compile aussi bien en C qu'en C++ (tu peux aussi remplacer les printf par cout et scanf par cin si ça te chante ...). En plus tu postes du code non standard. J'ai pas tout regardé mais iostream.h, iomanip.h, c'est pas du C++.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #include <iostream>
    #include <iomanip>
     
    using namespace std;
     
    ...

  13. #13
    Membre éprouvé Avatar de bobmidou
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2008
    Messages : 121
    Par défaut
    Bonjour,

    Essaye ce 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    const int N = 3; 
    	int x , tab[N];
    	int i = 0;
     
    	// Remplir le tableau
    	while (i < N)
    	{   
    		cout<< "Entrez  un nombre entre 1 et 10 ---  Nombre " << i+1 << ": " ; 
    		cin >> x;
    		tab[i] = x ;
    		cout << endl;
     
    		for (int j = 0 ; j <=i ; j++)
    		{
    			// Cherche si x existe déjà dans le tableau
    			if (tab[j] == x && (j != i) ) // Si j = i on tombe sur x
    			{
    				cout << "Le nombre "  << x << " Existe déjà dans le tableau\n\n";
    				i--;   // Si x existe on décrémente i pour rester au même indice du tableau
    				break; // puis on sort de cette boucle
    			}
    		}
    		// incrément i pour while
    		i++;
    	}
     
    	// Remettre i à zéro pour parcourir le tableau
    	i = 0;
     
    	// Afficher les nombres du tableau
    	cout << "Ton tableau contient :    "<< endl;
    	while( i < N)
    		{
    			cout << tab[i] << "   ";
    			i++;
    		}
    Reste à faire une boucle pour forcer l'utilisateur à taper un nombre entre 1 et 10
    Ce n'est qu'une façon de faire, il y aurai certainement d'autres manières mais je pense que ça fait la job.

    Bonne chance

  14. #14
    Membre averti
    Inscrit en
    Février 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Février 2008
    Messages : 54
    Par défaut
    Citation Envoyé par bobmidou Voir le message
    Bonjour,

    Essaye ce 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    const int N = 3; 
    	int x , tab[N];
    	int i = 0;
     
    	// Remplir le tableau
    	while (i < N)
    	{   
    		cout<< "Entrez  un nombre entre 1 et 10 ---  Nombre " << i+1 << ": " ; 
    		cin >> x;
    		tab[i] = x ;
    		cout << endl;
     
    		for (int j = 0 ; j <=i ; j++)
    		{
    			// Cherche si x existe déjà dans le tableau
    			if (tab[j] == x && (j != i) ) // Si j = i on tombe sur x
    			{
    				cout << "Le nombre "  << x << " Existe déjà dans le tableau\n\n";
    				i--;   // Si x existe on décrémente i pour rester au même indice du tableau
    				break; // puis on sort de cette boucle
    			}
    		}
    		// incrément i pour while
    		i++;
    	}
     
    	// Remettre i à zéro pour parcourir le tableau
    	i = 0;
     
    	// Afficher les nombres du tableau
    	cout << "Ton tableau contient :    "<< endl;
    	while( i < N)
    		{
    			cout << tab[i] << "   ";
    			i++;
    		}
    Reste à faire une boucle pour forcer l'utilisateur à taper un nombre entre 1 et 10
    Ce n'est qu'une façon de faire, il y aurai certainement d'autres manières mais je pense que ça fait la job.

    Bonne chance
    MERCI BCOUPPPP , C'est tres bien pensé
    Voila finalement le 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
    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 <iostream.h>
    void entrerUnNombre();
     
    const int N = 10; 
    	int x , tab[N];
    	int i = 0;
    int main()
    {	
    	// Remplir le tableau
        entrerUnNombre();    
     
     
     
    	// Afficher les nombres du tableau
    	cout << "Ton tableau contient :    "<< endl;
    	while( i < N)
    		{
    			cout << tab[i] << "   ";
    			i++;
    		}
    return 0; 
    }
     
    void entrerUnNombre ()              // Fonction qui lit et valide la valeur
    { 
     
    	while (i < N)
    	{   
    		cout<< "Entrez  un nombre entre 1 et 30  " <<endl;
    		cout<< "Nombre " <<i+1 << ": " ; 
     
     
    		cin >> x;
    		if ( (x >= 1) && (x<=30))
    		{
    		tab[i] = x ;
    		cout << endl;
     
    		for (int j = 0 ; j <=i ; j++)
    		{
    			// Cherche si x existe déjà dans le tableau
    			if (tab[j] == x && (j != i) ) // Si j = i on tombe sur x
    			{
    				cout << "Le nombre "  << x << " Existe déjà dans le tableau\n\n";
    				i--;   // Si x existe on décrémente i pour rester au même indice du tableau
    				break; // puis on sort de cette boucle
    			}
    		}
    		// incrément i pour while
    		i++;
     
    	}
    		else 
    			cout<< "Le nombre doit etre entre 1 et 30 "<<endl; 
    	}
    		// Remettre i à zéro pour parcourir le tableau
    	i = 0;
    }

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

Discussions similaires

  1. [Tableaux] Besoin d'aide pour str_replace
    Par Malcolm78 dans le forum Langage
    Réponses: 2
    Dernier message: 26/10/2007, 16h45
  2. Réponses: 2
    Dernier message: 13/06/2007, 12h03
  3. [Tableaux] Besoin d'aide pour parser du HTML
    Par vallica dans le forum Langage
    Réponses: 2
    Dernier message: 08/10/2006, 23h12
  4. [FPDF] Tableaux : besoin d'aide pour détecter le changement de page
    Par vallica dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 26/06/2006, 21h15
  5. Réponses: 2
    Dernier message: 20/09/2005, 16h10

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