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 débutant c++


Sujet :

C++

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10
    Par défaut Problème débutant c++
    Bonjour, je débute en c++, et je n'arrive pas à résoudre un exercice. Voila l'enoncé :
    Saisir une suite d'entier compris entre 0 et 10(terminé par le marqueur -1). Il faudra comptabiliser le nombre de chaque entier de la suite et realiser le graphique suivant :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
              *
              *
    *         *
    0    1    2   3   4   5   6   7   8   9   10
    cela signifie qu'il y a eu 1 foi le chiffre 0 et 3 fois le chiffre 2.
    Il faut donc que j'utilise un tableau, mais je n'arrive pas.
    Pourriez vous m'aider?
    Merci

  2. #2
    Membre Expert Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Par défaut
    Bonjour,

    On ne fera pas l'exercice à ta place. Il faut nous montrer le code ou l'algo que tu as déjà fait et poser une question précise.

    L'algo est simple, cependant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    - déclarer un tableau de 11 entiers (0 à 10), et l'initialiser à 0.
    - tant que la valeur saisie n est comprise entre 0 et 10
    -    incrémenter la valeur de la case n du tableau
    - fin tant que
    - afficher le graphique

  3. #3
    Membre Expert
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Par défaut
    Déjà il y a un problème dans l'énoncé !
    ...suite d'entier compris entre 0 et 10
    donc de 1 à 9 pas comme sur le graphisme montré !
    Sinon comment reconnaitre 1 et 0 accolé et 10.

    Pourquoi tu n'arrives pas avec ton tableau ?

    En fait ici on est là pour t'aider, mais on ne va pas fournir la solution.
    Te faire progresser oui, faire tes exercices non....

    Le mieux serait que tu présentes le code que tu as écris pour ton exercice.

    Ensuite ont te donnera des conseils à partir de la !



    Encore une fois bienvenue sur le forum !

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10
    Par défaut
    Voila par quoi j'ai commencé :

    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()
    {
    	int n,i,j,nb;
    	int t1[250];
    	int t2[250][11];
    	nb=0;
    	i=0;
        cout << "Veuillez entrer un entier compris entre 0 et 10 (-1 marqueur de fin)"<<endl;
    	cin>>n;
     
    	while (n!=-1)
    		{t1[i]=n;
    		i++;
    		cout << "Veuillez entrer un entier compris entre 0 et 10 (-1 marqueur de fin)"<<i<<endl;
    		cin>>n;
     
    		}
    	for (j=0;j<i;j++)
    		cout<<t1[j]<<endl;
    Le problème est que je n'arrive pas a gérer 2 tableaux en meme temps. le premier tableau t1 me sert a rentrer la suite des chiffres que l'utilisateur entre. Le tableau t2 servira a afficher le "grahpique".
    Mon plus gros problème est que je c pas comment je vais pouvoir compter afficher le graphique .

  5. #5
    Membre Expert
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Par défaut


    Si tu peux utilise des "vector"

    Sinon utilise un do while qui est plus pratique dans ton cas.
    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
    int main()
    {
    	int n,i,j,nb;
    	int t1[250];
    	int t2[250][11];
    	nb=0;
    	i=0;
    		do
    		{
     
    		cout << "Veuillez entrer un entier compris entre 0 et 10 (-1 marqueur de fin)"<<i<<endl;
    		cin>>n;
    		t1[i]=n;
    		i++;
    		}while (n!=-1);
    	for (j=0;j<i;j++)
    		cout<<t1[j]<<endl;
    ...
    }
    Ensuite pour faire ton graphisme, tu dois pouvoir utiliser "\t", une tabulation pour formater tes graphismes !

  6. #6
    Membre Expert Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Par défaut
    Citation Envoyé par Gone 23
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    int t1[250];
    int t2[250][11];
    A quoi correspond la dimension 250 ?
    Pourquoi stocker les chiffres saisis ? C'est inutile, tu sais qu'ils sont entre 0 et 10.

    D'abord, on compte le nombre d'occurences saisies de chaque chiffre entre 0 et 10.
    Facile: saisie d'un chiffre. Incrémentation du compteur correspondant (si c'est un 1, faire t[1] = t[1] + 1).

    Ensuite, pour afficher le graphique, il faut une boucle, un printf... et une petite réflexion (si tu veux le graphique orienté vers le haut). Pour l'avoir orienté vers le bas, c'est plus facile

  7. #7
    Invité
    Invité(e)
    Par défaut
    moi non plus je ne vais pas cracher une solution toute faite, mais voici une piste que j'aurais suivi :

    pour comptabiliser le nombre de fois qu'un nombre est sorti, j'utiliserais une map :
    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
    #include <MAP>
     
    //initialisation
    std::map<char, unsigned> mapOccurences;
    for (char c = 0; c <= 10; c++) {
        mapOccurences[c] = 0;
    }
     
    //utilisation
    while (...) {
        char c = /* une valeur entre 0 et 10 */ ;
        //ajout dans la map:
        mapOccurence[c]++;
    }
     
    //a la fin, tu fais tes stats :
    for (map<char, unsigned>::iterator
          iter  = mapOccurence.begin();
          iter != mapOccurence.end();
          iter++) {
        unsigned u = iter->second;
    }

  8. #8
    Membre Expert Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Par défaut
    Citation Envoyé par toxcct
    moi non plus je ne vais pas cracher une solution toute faite, mais voici une piste que j'aurais suivi :
    pour comptabiliser le nombre de fois qu'un nombre est sorti, j'utiliserais une map
    Je trouve toutes vos solutions bien compliquées ! Aurais-je raté quelque chose dans l'énoncé ?

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par zooro
    Je trouve toutes vos solutions bien compliquées ! Aurais-je raté quelque chose dans l'énoncé ?
    salut zooro, pourquoi est-ce si difficile d'utiliser une map ?
    son comportement est tout indiqué ! elle contient des clés (ici, les nombres entre 0 et 10) et des valeurs associées (le nombre de fois ou leur nombre est sorti...)

  10. #10
    Membre Expert Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Par défaut
    Citation Envoyé par toxcct
    salut zooro, pourquoi est-ce si difficile d'utiliser une map ?
    son comportement est tout indiqué ! elle contient des clés (ici, les nombres entre 0 et 10) et des valeurs associées (le nombre de fois ou leur nombre est sorti...)
    En l'occurrence, autant utiliser un bête tableau d'entiers.

    Tu as raison, je ne voulais pas dire que l'utilisation d'une map est difficile, mais que vous voulez tous stocker les valeurs saisies, ce qui n'est pas utile dans ce cas précis.

  11. #11
    Membre Expert
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Par défaut
    Citation Envoyé par zooro
    Je trouve toutes vos solutions bien compliquées ! Aurais-je raté quelque chose dans l'énoncé ?
    Oui

    Sinon un tableau de 9 éléments suffit... je n'en dis pas plus

  12. #12
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par zooro
    En l'occurrence, autant utiliser un bête tableau d'entiers.

    Tu as raison, je ne voulais pas dire que l'utilisation d'une map est difficile, mais que vous voulez tous stocker les valeurs saisies, ce qui n'est pas utile dans ce cas.
    certes... mais la STL est un tres bon exercice pour un débutant en C++. il faut savoir lacher ses vieux réflexe de codeur C

  13. #13
    Membre Expert Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Par défaut
    Citation Envoyé par Ti-R
    Oui
    Sinon un tableau de 9 éléments suffit... je n'en dis pas plus
    Citation Envoyé par Gone 23
    Saisir une suite d'entier compris entre 0 et 10
    ... Comment tu fais dans un simple tableau de 9 éléments ???

  14. #14
    Membre Expert Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Par défaut
    Citation Envoyé par toxcct
    certes... mais la STL est un tres bon exercice pour un débutant en C++. il faut savoir lacher ses vieux réflexe de codeur C
    Oui, pour se débarrasser d'une mouche, on peut utiliser un char Leclerc, mais ce n'est pas forcément l'outil le plus adapté

    A la limite, la structure utilisée est secondaire. Une fois que le programme fonctionne, tu peux toujours remplacer le tableau par une map, un vecteur, ou une classe personnelle qui en plus fait le café

  15. #15
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par zooro
    Oui, pour se débarrasser d'une mouche, on peut utiliser un char Leclerc, mais ce n'est pas forcément l'outil le plus adapté
    pas d'accord...

    mais bon, apres, c'est de la philo, et la philo, j'ai pas ca, ,ca me rapelle mes vieux profs...

  16. #16
    Membre Expert Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Par défaut
    Citation Envoyé par toxcct
    pas d'accord...
    Bon, d'accord, ça dépend de la taille de la mouche

  17. #17
    Membre Expert
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Par défaut
    Mini rappel à l'ordre pour ne pas partir en HS total, car on est la pour Gone 23

  18. #18
    Membre Expert Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Par défaut
    Citation Envoyé par Ti-R
    Mini rappel à l'ordre pour ne pas partir en HS total, car on est la pour Gone 23
    Merci de recentrer le débat
    La solution a déjà été donnée. Reste à Gone 23 à l'implémenter et à nous montrer son code...

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10
    Par défaut
    En fait j'en suis au début du cours donc il me faut utiliser un tableau.
    J'ai choisi de faire un switch (n) et case.J'ai créé 1 tableau. Par contre j'aimerai les afficher à coté et a l'envers pour que l'histogramme monte et ne descende pas. Comment faire?

    Voici mon code actuel :
    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>
    using namespace std;
     
    int main()
    {
    	int i=0,j,n;
    	int i0=1,i1=1,i2=1,i3=1,i4=1,i5=1,i6=1,i7=1,i8=1,i9=1,i10=1;
    	char t[250][11];
        cout << "Veuillez entrer un entier compris entre 0 et 10 (-1 marqueur de fin)"<<endl;
    	cin>>n;
     
    	while (n!=-1)
    	{switch(n)
    			{case 0:t[i0][0]='*'; i0++ ;break;
    			case 1:t[i1][1]='*';i1++; break;
    			case 2:t[i2][2]='*';i2++; break;
    			case 3:t[i3][3]='*';i3++; break;
    			case 4:t[i4][4]='*';i4++; break;
    			case 5:t[i5][5]='*';i5++; break;
    			case 6:t[i6][6]='*';i6++;break;
    			case 7:t[i7][7]='*';i7++; break;
    			case 8:t[i8][8]='*';i8++; break;
    			case 9:t[i9][9]='*';i9++; break;
    			case 10:t[i10][10]='*';i10++; break;
    			default:cout<<"Valeur non comprise entre 0 et 10";
    		};
     
    		cout << "Veuillez entrer un entier compris entre 0 et 10 (-1 marqueur de fin)"<<endl;
    		cin>>n;
    		}
     
    	t[0][0]='0';
    	t[0][1]='1';
    	t[0][2]='2';
    	t[0][3]='3';
    	t[0][4]='4';
    	t[0][5]='5';
    	t[0][6]='6';
    	t[0][7]='7';
    	t[0][8]='8';
    	t[0][9]='9';
    	t[0][10]='10';
     
    }
    Maintenant il me reste a afficher mon tableau, et c'est la que ca se complique, car il y aura forcement des cellulles vides et l'affichage ne se fera pas bien.

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10
    Par défaut
    Par contre, j'ai remarquer que 10 ne rentre pas dans mon tableau. Et quand je fait un strcpy ca ne marche pas.

    Pour l'affichage, j'ai tester ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    		for(i=10;i>0;i--)
    		{for (j=0;j<10;j++)
    			cout<<t[i][j]<<"\t";
    		}
     
    	for (i=0;i<10;i++)
    		cout<<t[0][i]<<"\t";

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Gros problèmes débutant désespéré
    Par innova dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/10/2006, 20h10
  2. problème débutant socket
    Par Beruboy dans le forum C++
    Réponses: 2
    Dernier message: 22/09/2006, 14h25
  3. Réponses: 19
    Dernier message: 29/06/2006, 13h11
  4. [Problème][Débutant]pointeurs
    Par arkadin dans le forum C
    Réponses: 11
    Dernier message: 05/04/2006, 19h33
  5. problème débutant avenc les triggers
    Par yayooyayoo2005 dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 11/01/2006, 11h52

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