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
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10
    Points : 3
    Points
    3
    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 éprouvé Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Points : 1 260
    Points
    1 260
    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
    [alkama] quelqu'un est allé voir la guerre des mondes?
    [@Chrisman] j'espère pour spielberg
    --- bashfr.org

  3. #3
    Membre émérite
    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 : 44
    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
    Points : 2 568
    Points
    2 568
    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
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10
    Points : 3
    Points
    3
    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 émérite
    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 : 44
    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
    Points : 2 568
    Points
    2 568
    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 éprouvé Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Points : 1 260
    Points
    1 260
    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
    [alkama] quelqu'un est allé voir la guerre des mondes?
    [@Chrisman] j'espère pour spielberg
    --- bashfr.org

  7. #7
    Membre confirmé Avatar de toxcct
    Développeur informatique
    Inscrit en
    Juillet 2006
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 434
    Points : 511
    Points
    511
    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;
    }
    besoin de réponses ? demande a un pote

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

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Points : 1 260
    Points
    1 260
    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é ?
    [alkama] quelqu'un est allé voir la guerre des mondes?
    [@Chrisman] j'espère pour spielberg
    --- bashfr.org

  9. #9
    Membre confirmé Avatar de toxcct
    Développeur informatique
    Inscrit en
    Juillet 2006
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 434
    Points : 511
    Points
    511
    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...)
    besoin de réponses ? demande a un pote

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

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Points : 1 260
    Points
    1 260
    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.
    [alkama] quelqu'un est allé voir la guerre des mondes?
    [@Chrisman] j'espère pour spielberg
    --- bashfr.org

  11. #11
    Membre émérite
    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 : 44
    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
    Points : 2 568
    Points
    2 568
    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
    Membre confirmé Avatar de toxcct
    Développeur informatique
    Inscrit en
    Juillet 2006
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 434
    Points : 511
    Points
    511
    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
    besoin de réponses ? demande a un pote

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

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Points : 1 260
    Points
    1 260
    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 ???
    [alkama] quelqu'un est allé voir la guerre des mondes?
    [@Chrisman] j'espère pour spielberg
    --- bashfr.org

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

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Points : 1 260
    Points
    1 260
    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é
    [alkama] quelqu'un est allé voir la guerre des mondes?
    [@Chrisman] j'espère pour spielberg
    --- bashfr.org

  15. #15
    Membre confirmé Avatar de toxcct
    Développeur informatique
    Inscrit en
    Juillet 2006
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 434
    Points : 511
    Points
    511
    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...
    besoin de réponses ? demande a un pote

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

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Points : 1 260
    Points
    1 260
    Par défaut
    Citation Envoyé par toxcct
    pas d'accord...
    Bon, d'accord, ça dépend de la taille de la mouche
    [alkama] quelqu'un est allé voir la guerre des mondes?
    [@Chrisman] j'espère pour spielberg
    --- bashfr.org

  17. #17
    Membre émérite
    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 : 44
    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
    Points : 2 568
    Points
    2 568
    Par défaut
    Mini rappel à l'ordre pour ne pas partir en HS total, car on est la pour Gone 23

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

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Points : 1 260
    Points
    1 260
    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...
    [alkama] quelqu'un est allé voir la guerre des mondes?
    [@Chrisman] j'espère pour spielberg
    --- bashfr.org

  19. #19
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10
    Points : 3
    Points
    3
    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
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10
    Points : 3
    Points
    3
    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