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 chevronn�
    Inscrit en
    Novembre 2006
    Messages
    362
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 362
    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 chevronn�
    Inscrit en
    Novembre 2006
    Messages
    362
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 362
    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 chevronn�
    Inscrit en
    Novembre 2006
    Messages
    362
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 362
    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 exp�riment�
    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
    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 exp�riment�
    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
    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 exp�riment�
    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
    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 chevronn�

    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
    Par d�faut
    Salut,
    Pour comprendre un peu le tri pour les d�butants, j'ai trouv� un excellent expos� l� (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� l� (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 exp�riment�
    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
    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