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 :

Algorithme à transformer en C++


Sujet :

C++

  1. #1
    Invité
    Invité(e)
    Par défaut Algorithme à transformer en C++
    Bonjour,

    Je débute dans le développement. J'ai écris un algorithme mais j'ai vraiment du mal à l'adapter en C. Je fais alors appel à votre aide.

    Voici l'algo :

    Déclarer Variables
    T : tab[1..5]
    D: tab[1..5]

    int i=1 ; int N
    int j=1 ; c=2

    Début

    Tant que (i<=5)
    Saisir N
    T[i]=N
    i=i+1
    FTQ

    i=1

    Tant que (j<=5)
    Tant que
    Si T[i] > T[c]
    alors c=c+1
    Sinon
    Si T[i] < T[c]
    alors i=c
    FSI
    FTQ

    D[j] = T[i]
    j+1
    T[i]=0
    i=1
    FTQ





    --------------------------------

    Voilà,

    Je pensais commencer comme ça :

    int Tab[1..5][1..5]
    int i=1;
    int j=1;
    int N;
    int c=2;

    Après je bloque ...

    Merci d'avance

  2. #2
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 362
    Points : 410
    Points
    410
    Par défaut
    Bonjour,

    Cet algorithme semble trier un tableau d'entier.

    S'il s'agit d'un exercice de cours que tu dois rendre, je ne vais pas t'aider, car la seule réponse qui te permettrait d'avancer c'est la réponse complète. Or ce n'est pas en recopiant des réponses qu'on apprend. Commence par faire le job, et quand tu sera coinçé à ce moment-là tu auras une question plus pertinente à poser.

    S'il s'agit d'un processus d'apprentissage ou d'un besoin que tu as pour un programme, alors tu n'es pas du tout sur la bonne voie. Je te propose de résoudre d'abord les problèmes suivants :
    - comprendre la différence entre C et C++
    - choisir l'un des deux
    - si tu choisis le C++, commencer par apprendre à penser objet notamment en faisant des modélisation, par exemple en développant ton propre tableau-qui-se-trie-tout-seul, et non-pas en essayant de reproduire des algo procédureaux qui appartiennent plus au C qu'au C++
    - si tu choisis le C, je ne peux pas t'aider hélas, je ne parles pas C.

    Courage

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Feriaman Voir le message
    Bonjour,

    Cet algorithme semble trier un tableau d'entier.
    C'est tout à fait ce que je cherche à faire.

    Citation Envoyé par Feriaman Voir le message
    S'il s'agit d'un exercice de cours que tu dois rendre, je ne vais pas t'aider, car la seule réponse qui te permettrait d'avancer c'est la réponse complète. Or ce n'est pas en recopiant des réponses qu'on apprend. Commence par faire le job, et quand tu sera coinçé à ce moment-là tu auras une question plus pertinente à poser.
    C'est un exercice que je dois faire effectivement.
    Je l'ai finis à 80% car le tri n'était pas la seule partie.

    Je ne demande pas un programme tout fait auquel je ne comprendrais rien.

    Je cherche juste une explication sur une des nombreuses fonctions de tri trouvable sur le web...

    Je n'arrive vraiment pas à comprendre comment ça fonctionne dans un tableau en 2 dimensions (colonnes + lignes)

  4. #4
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 362
    Points : 410
    Points
    410
    Par défaut
    Citation Envoyé par Ritooon Voir le message
    ça fonctionne dans un tableau en 2 dimensions (colonnes + lignes)
    Je ne vois pas où il y a un tableau à deux dimensions dans ton algorithme à transformer.

    Citation Envoyé par Ritooon
    Je peux t'envoyer mon code par MP si tu veux.
    Je n'arrive vraiment pas à cerner la fonction de tri ...
    Non, le principe d'un Forum c'est que tout le monde ait accès aux discussions de façon à :
    1. que tout le monde puisse aider
    2. que tous ceux qui auront le même problème dans 5 ans puisse lire la solution

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Feriaman Voir le message
    Je ne vois pas où il y a un tableau à deux dimensions dans ton algorithme à transformer.



    Non, le principe d'un Forum c'est que tout le monde ait accès aux discussions de façon à :
    1. que tout le monde puisse aider
    2. que tous ceux qui auront le même problème dans 5 ans puisse lire la solution
    Hop voilà :
    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
     
    #include <cstdlib>
    #include <iostream>
    #include <stdio.h>
    #include <time.h>
     
    using namespace std;
     
    const int NBLig=10;
    const int NBCol=8;
     
    void Menu(int &LeChoix)
    {
         cout<<"\n"<<"\n";
         cout<<"Remplir :-----> 1 \n";
         cout<<"Afficher :-----> 2 \n";
         cout<<"Trier par lignes :-----> 3 \n";
         cout<<"Trier par colonnes :-----> 4 \n";
         cout<<"Quitter :-----> 5 \n";
         cout<<"\n"<<"Entrez votre choix : \n";
         cin>>LeChoix;
         cout<<"\n";
    }
     
    //Fonction nombre aleatoire
    int rand_a_b(int a, int b)
    {
    return rand()%(b-a) +a;
    }
     
    //Fonction du menu 2.
     
    int Aleatoire(int a,int b)
    {
        //Affiche des nombres alÈatoires sous forme de tableau
     
         int nombre_aleatoire=0;
         int Tableau[NBLig][NBCol];
         cout<<"Tapez la premiere borne : ";
                        cin>>a;
                        cout<<"Tapez la deuxieme borne : ";
                        cin>>b;
                        rand_a_b(a,b);
     
                       srand(time(NULL));
     
     
            for (int i=0;i<NBLig;i++) {
                for (int j=0;j<NBCol;j++) {
     
                    nombre_aleatoire = rand_a_b(a,b);
                    Tableau[i][j]=nombre_aleatoire;
                    cout<<nombre_aleatoire <<" ";
                    }
                    //Le 'cout<<"\n";' permet de structure les nombres en tableau
                  cout<<"\n";
                    }
     
    }
     
     
    void echanger(int Tableau[NBLig][NBCol], const int i, const int j)
    {
       int temporaire;
       temporaire = Tableau[i][j];
       Tableau[i][j] = Tableau[j][i];
       Tableau[j][i] = temporaire;
    }
     
    int main(int argc,char *argv[])
    {
        int Choix=0;
        int a;
        int b;
        int nombre_aleatoire=0;
        int Tableau[NBLig][NBCol];
     
        do {
            Menu(Choix);
            switch(Choix)
            {
                   case 1: 
     
                   // On affiche les nombres de maniËres non structurÈe
                        cout<<"Tapez la premiere borne : ";
                        cin>>a;
                        cout<<"Tapez la deuxieme borne : ";
                        cin>>b;
                        rand_a_b(a,b);
     
                       srand(time(NULL));
     
     
            for (int i=0;i<NBLig;i++) {
                for (int j=0;j<NBCol;j++) {
     
                    nombre_aleatoire = rand_a_b(a,b);
                    Tableau[i][j]=nombre_aleatoire;
                    cout<<nombre_aleatoire <<" ";
                    }
                    }
                    break;
     
                    case 2:
     
                    //On intËgre la fonction Aleatoire prÈlablement crÈÈe
     
                         Aleatoire(a,b);
                         break;
     
                    case 3:
                         Aleatoire(a,b);
                         echanger(Tableau, NBLig, NBCol);
                         break;
     
                    case 4: 
     
     
                    case 5:
                         //Quitter le programme 
                      cout<<"Au revoir !"<<"\n"<<"\n";
                      break;  
     
                    }
            }while(Choix!=5);
     
        system("PAUSE");
        return 0;
    }
    Dernière modification par Invité ; 29/03/2011 à 16h49.

  6. #6
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 362
    Points : 410
    Points
    410
    Par défaut
    Bonjour,

    Nous avons un problème de communication toi et moi.
    - Soit tu ne lis pas mes réponses,
    - Soit tu ne les comprends pas,
    - Soit tu te contente d'en ignorer systématiquement la partie qui te demande le plus d'effort.

    Bon courage avec ton problème

    P.S : tu as oublié la balise CODE

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Feriaman Voir le message
    Bonjour,

    Nous avons un problème de communication toi et moi.
    - Soit tu ne lis pas mes réponses,
    Si avec attention même, j'ai publié mon code comme tu me l'as conseillé, il contient un tableau à deux dimensions.

    Citation Envoyé par Feriaman Voir le message
    - Soit tu ne les comprends pas,
    Je pense que si Mais peut être, que je méprends sur quelque chose ? Si c'est le cas j'en suis désolé.

    Citation Envoyé par Feriaman Voir le message
    - Soit tu te contente d'en ignorer systématiquement la partie qui te demande le plus d'effort.
    Ce serait la plus débile des choses à faire, et ça ne ferais pas avancer le schmilblick ...


    Citation Envoyé par Feriaman Voir le message
    P.S : tu as oublié la balise CODE
    je Le rajoute tout de suite

  8. #8
    Invité
    Invité(e)
    Par défaut
    J'ai rajouté dans "case3" :


    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
    int temp;
     
    				cout<<"Tapez la premiere borne : ";
    				cin>>a;
    				cout<<"Tapez la deuxieme borne : ";
    				cin>>b;
    				rand_a_b(a,b);
     
    				srand(time(NULL));
     
     
    				for (int i=0;i<NBLig;i++) {
    					for (int j=0;j<NBCol;j++) {
     
    						nombre_aleatoire = rand_a_b(a,b);
    						Tableau[i][j]=nombre_aleatoire;
    						cout<<nombre_aleatoire <<" ";
     
    						if(Tableau[i]>Tableau[j]){
    							temp=Tableau[i];
    							Tableau[i]=Tableau[j];
    							Tableau[j]=temp;
    						}
    Mais j'ai une erreur dont je ne comprends pas la signification au niveau de : "Invalid conversion from "int*" to "int" ".


    que signifie cette erreur ?

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Ritooon Voir le message
    J'ai rajouté dans "case3" :


    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
    int temp;
     
    				cout<<"Tapez la premiere borne : ";
    				cin>>a;
    				cout<<"Tapez la deuxieme borne : ";
    				cin>>b;
    				rand_a_b(a,b);
     
    				srand(time(NULL));
     
     
    				for (int i=0;i<NBLig;i++) {
    					for (int j=0;j<NBCol;j++) {
     
    						nombre_aleatoire = rand_a_b(a,b);
    						Tableau[i][j]=nombre_aleatoire;
    						cout<<nombre_aleatoire <<" ";
     
    						if(Tableau[i]>Tableau[j]){
    							temp=Tableau[i];
    							Tableau[i]=Tableau[j];
    							Tableau[j]=temp;
    						}
    Mais j'ai une erreur dont je ne comprends pas la signification au niveau de : "Invalid conversion from "int*" to "int" ".


    que signifie cette erreur ?
    J'ai compris mon erreur : Je lui demande d'inverser les valeurs d'un tableau à 1D alors que le mien à 2D. seulement, lorsque je fais ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if(Tableau[i][j]>Tableau[j][i]){
    		temp=Tableau[i][j];
    		Tableau[i][j]=Tableau[j][i];
    		Tableau[j][i]=temp;
    			}	
    		}
                    }
    Ca ne trie pas ... D'ou vient mon erreur ?

  10. #10
    Membre averti
    Homme Profil pro
    Analyse système
    Inscrit en
    Novembre 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 227
    Points : 311
    Points
    311
    Par défaut
    Ca ne peux pas marcher.
    Il faut que tu testes toutes les cases à chaque fois que tu rajoutes un nombre dans ton tableau. Là tu tries actuellement tes nombres uniquement sur deux cases et de manière symètrique par rapport à la diagonnale.

    voici un lien sur un algorithme de tri par bulle jettes y un oeil, et si tu as du mal à comprendre certain point n'hésite pas.

  11. #11
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par andnicam Voir le message
    Ca ne peux pas marcher.
    Il faut que tu testes toutes les cases à chaque fois que tu rajoutes un nombre dans ton tableau. Là tu tries actuellement tes nombres uniquement sur deux cases et de manière symètrique par rapport à la diagonnale.

    voici un lien sur un algorithme de tri par bulle jettes y un oeil, et si tu as du mal à comprendre certain point n'hésite pas.

    Merci !

    J'ai déjà regardé un peu toutes les sortes de tri.

    Le problème, c'est que je n'arrive pas à le mettre en place avec un tableau à deux dimensions ...


    J'ai avancé et chercher certaines choses, dans mon case 4 j'ai maintenant :

    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
    int temp;
    				cout<<"Tapez la premiere borne : ";
    				cin>>a;
    				cout<<"Tapez la deuxieme borne : ";
    				cin>>b;
    				rand_a_b(a,b);
     
    				srand(time(NULL));
     
     
    				for (int i=0;i<NBLig;i++) {
    					for (int j=i+1;j<NBCol;j++) {
     
     
    						nombre_aleatoire = rand_a_b(a,b);
    						Tableau[i][j]=nombre_aleatoire;
     
    						if(Tableau[i][j]<Tableau[i][j+1]){
    							temp=Tableau[i][j];
    							Tableau[i][j]=Tableau[i][j+1];
    							Tableau[i][j+1]=temp;
     
    							cout<<nombre_aleatoire <<" ";
     
     
    						}
     
     
    					}
                    }

  12. #12
    Membre averti
    Homme Profil pro
    Analyse système
    Inscrit en
    Novembre 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 227
    Points : 311
    Points
    311
    Par défaut
    il faudrait que tu nous définisses exactement ce que tu entends par tableau trié.
    Est ce que tu veux faire un tri sur chaque colonne, ou bien sur les lignes ou bien est ce que tu veux faire un tri sur l'ensemble du tableau dans l'ordre croissant avec une lecture par ligne ?

  13. #13
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par andnicam Voir le message
    il faudrait que tu nous définisses exactement ce que tu entends par tableau trié.
    Est ce que tu veux faire un tri sur chaque colonne, ou bien sur les lignes ou bien est ce que tu veux faire un tri sur l'ensemble du tableau dans l'ordre croissant avec une lecture par ligne ?
    J'aimerais dans un premier temps trier par lignes (Sur chaque lignes les valeurs sont triées).

    Puis dans une autre fonction trier par colonnes (Sur chaque colonnes les valeurs sont triées de haut en bas)

  14. #14
    Membre averti
    Homme Profil pro
    Analyse système
    Inscrit en
    Novembre 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 227
    Points : 311
    Points
    311
    Par défaut
    Voici l'algorithme qui permet d'effectuer le tri sur les lignes, tu n'as qu'à t'en inspirer pour ensuite effectuer un tri sur les colonnes
    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
     
    Répéter
    	Répéter
    		Nombre_aleatoire = tirage
    		Tableau[ilig][icol] = Nombre_aleatoire
    		// Effectue un tri sur les lignes
    		répéter
    			aucun_échange = vrai
    			pour j de icol à 0
    				si Tableau[ilig][j] > T[ilig][j-1], alors
    					échanger Tableau[ilig][j] et T[ilig][j - 1]
    					aucun_échange = faux
    				si non, break
    		tant que aucun_échange = faux
    		icol = icol + 1
    	tant que icol < NBCol
    	iligne = iligne + 1
    tant que iligne < NB_Ligne

  15. #15
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 426
    Points : 827
    Points
    827
    Par défaut
    Salut,
    Pour comprendre un peu le tri pour les débutants, j'ai trouvé un excellent exposé (regarde la partie "algorithmes de tri" ), c'est vraiment bien expliqué...

  16. #16
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par bertry Voir le message
    Salut,
    Pour comprendre un peu le tri pour les débutants, j'ai trouvé un excellent exposé (regarde la partie "algorithmes de tri" ), c'est vraiment bien expliqué...
    Merci.
    Mais je n'ai toujours pas réussi. Un jour je trouverais la réponse !

  17. #17
    Membre averti
    Homme Profil pro
    Analyse système
    Inscrit en
    Novembre 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 227
    Points : 311
    Points
    311
    Par défaut
    Montre nous où tu en es dans ton code, pour que l'on puisse t'aider sur ce qui ne marche pas.

Discussions similaires

  1. Algorithme Transformation Binaire naturel en code gray sur Alg'exec
    Par thomasdu73 dans le forum Algorithmes et structures de données
    Réponses: 0
    Dernier message: 21/01/2014, 23h06
  2. Algorithme transformant une matrice en un vecteur de façon spirale
    Par Contact2012 dans le forum Mathématiques
    Réponses: 4
    Dernier message: 26/01/2009, 17h23
  3. algorithme "Transformée de Hough"
    Par comrad85 dans le forum Traitement d'images
    Réponses: 86
    Dernier message: 25/03/2008, 11h05
  4. [STL][algorithm]for_each vs transform
    Par r0d dans le forum SL & STL
    Réponses: 6
    Dernier message: 25/07/2007, 11h52
  5. Problème lors de la transformation de mon "algorithm&qu
    Par prunodagen dans le forum Langage SQL
    Réponses: 8
    Dernier message: 27/04/2005, 21h48

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