begin process at 2012 05 28 20:18:44
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Maths & Algorithmes

 > 

Demande d'explication a propos d'un code.


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Demande d'explication a propos d'un code.

lundi 21 novembre 2005 à 23:03:14 | Demande d'explication a propos d'un code.

Strick9

Salut à tous,
j'ai obtenu grâce à se merveilleux site ce code sources pour cet énoncés:

un programme permettant de donner toute les combinaison suite a la saisie d'une séquance de chiffres et ceci de 1 a  "n" chiffres.
tell  que pour les chifres 1, 5 et 8 on obtient :
158   185   518   581   851   815

et voici le code source :

#include <stdio.h>
 
void Affichage(int tab[60],int taille_tab)
{
int i;
 
for(i=0;i<taille_tab;i++)

 printf("%d",tab[i]);
 printf("\n"); 
}
 
void permute(int tab[60],char i, char j)
{
char c;
 
 c=tab[i];
 
 tab[i]=tab[j];
 
 tab[j]=c;
 
}
 
void combin(int tab[60],int i, int taille_tab)
{

char j;
 
 if (i==taille_tab)
   
  {
   Affichage(tab,taille_tab);

   }
 else

  for(j=i;j<taille_tab;j++)
 {
 permute(tab,i,j);
  
  combin(tab,i+1,taille_tab);
 
   permute(tab,i,j);
 }

}
 
void main()
{

int i,nbrval,tab[60];

        
  printf("\n\t\tDonner le nombre de valeur(s) a calculer:\n");

        
 

  scanf("\t\t%d", &nbrval);
 
  for (i=0;i<nbrval;i++)

  { 
  printf("\n\tDonner une valeur:\t");
 
   scanf("%d", &tab[i]);
 }

combin(tab,0,nbrval);
printf("\n");
}

Donc si une âme charitable accpete bien de m'expliquer ce code source pour que je puisse mieux le comprendre j'en serai vraiment ravi et merci d'avance.

mardi 22 novembre 2005 à 08:31:39 | Re : Demande d'explication a propos d'un code.

deck_bsd

Membre Club
Réponse acceptée !
La procédure affichage, ben c'est très simple .

void Affichage(int tab[60],int taille_tab)
{
int i; 
for(i=0;i<taille_tab;i++)  printf("%d",tab[i]);
 printf("\n"); 
}

Pour i allant de 0 à taille du tableau -1 on affiche les valeurs des différents indices.

Pour la fonction de permutation :

void permute(int tab[60],char i, char j)
{
char c;
 c=tab[i];
 tab[i]=tab[j];
 tab[j]=c;
}

on stock dans une variable temporaire (ici c) la valeur de tab[i], ensuite on remplace la valeur de l'indice i par la valeur de l'indice j. Et ensuite on retape la valeur de l'indice pas la valeur contenue dans la variable c.


void combin(int tab[60],int i, int taille_tab)
{

char j;
 
 if (i==taille_tab)
   
  {
   Affichage(tab,taille_tab);

   }
 else

 for(j=i;j<taille_tab;j++)
{
 permute(tab,i,j);
  
  combin(tab,i+1,taille_tab);
 
   permute(tab,i,j);
 }}

Ici on utilise la récursivité (a savoir on appelle la procédure combi dans celle-ci). Donc en faite on fait une boucle. Le permier if est la condition pour finir la boucle. Donc une fois que on a permuter les caractères jusqu'à atteindre la taille du tableau (hum j'espère que tu a compris cette phrase lol). Si ce n'est pas le cas on fait pour i allant de l'indice j(élément suivant) jusqu'à taille du tableau, on permutes les caractères et puis on rapelle la procédure (c'est grace à ceci que le j=i de la boucle for peut fonctionner.) et on repermute.

Pour ce qui est du main c'est bêtement l'introduction des données.

Voila, j'espère que j'ai pus t'aider.
Bon code

++ALL



mardi 22 novembre 2005 à 09:01:15 | Re : Demande d'explication a propos d'un code.

coucou747

Administrateur CodeS-SourceS
salut

mais trois boucles for les unes dans les autres, ça ne marche pas ?


In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

[ Lien ]
mardi 22 novembre 2005 à 09:46:55 | Re : Demande d'explication a propos d'un code.

deck_bsd

Membre Club
Pour quel procédure ? combi?
mardi 22 novembre 2005 à 09:49:45 | Re : Demande d'explication a propos d'un code.

buno

Administrateur CodeS-SourceS
Je récapitule:
- Strick9 a reçu un énoncé d'exercice à faire pour le tant,
- Strick9 a la flemme de le faire et personne ne veut l'aider donc il demande à CS
- Quelqu'un lui pond un code, relativement aisé à comprendre (merci Mr. X)
- Strick9 a aussi la flemme de comprendre ce code et redemande la solution

Question:
Strick9 a-t-il testé le code fourni par l'aimable MR. X??

Morale:
C'est pas comme ça qu'on apprend à coder...

Remarque:
Si j'avais été MR. X, j'aurais laissé au moins un bug...

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
mardi 22 novembre 2005 à 10:04:07 | Re : Demande d'explication a propos d'un code.

coucou747

Administrateur CodeS-SourceS
Réponse acceptée !
lol
buno, t'as surement raison, mais j'aimes bien programmer...

dsl si mon code est foireux, ça fait longtemps que je n'ai pas fait de C....

 
#include <stdio.h>
 
int main(){
    char tab[3];
    tab[0]=1;
    tab[1]=5;
    tab[2]=8;
    int i, j, k;
   
    for(i=0;i<3;i++){
        for(j=0;j<3;j++){
            if (j!=i){
                for(k=0;k<3;k++){
                    if (k!=i && k!=j){
                        printf("%d%d%d\n",tab[i],tab[j],tab[k]);
                    }
                }
            }
        }
    }
}


ça donne :

maxime@devmax:~$ gcc 1.c
maxime@devmax:~$ ./a.out
158
185
518
581
815
851
maxime@devmax:~$

Bon, en -Wall, j'ai un message, mais j'ai jamais prétendu être super super fort en C...

In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

[ Lien ]
mardi 22 novembre 2005 à 23:36:45 | Re : Demande d'explication a propos d'un code.

Strick9

Merci beaucoup Deck_bsd ton aide m'a vraiment été utile.
Je respecte votre point de vue Buno mais le seul hic est que je ne suis pas un étudiant, mon travail est facteur donc pour ce coups ci, c'est vous qui avais tort bien que si j'était étudiant ce que vous aurez dit serai vraiment correct.
mercredi 23 novembre 2005 à 09:09:12 | Re : Demande d'explication a propos d'un code.

buno

Administrateur CodeS-SourceS
Ok, autant pour moi.
Mais il n'est malheureusement pas rare de voir se genre de demande sur CS...
Désolé si je t'es froissé et bonne continuation

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
mercredi 23 novembre 2005 à 13:41:15 | Re : Demande d'explication a propos d'un code.

coucou747

Administrateur CodeS-SourceS
salut

et mon algo à moi n'est pas corect ?

In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

[ Lien ]


Cette discussion est classée dans : taille, code, int, printf, tab


Répondre à ce message

Sujets en rapport avec ce message

Problem Affichage de mon Tableau [ par Orezza ] salut à tous, j'ai un blem à l'affichage du tableau. l'utilisateur parametre son tableau, c lui qui l'initilize mais j'arrive pas à afficher apres le Blem Somme ELmt d'un Tableau Bidimensionnel [ par Orezza ] Slt c encore moi, le boulet de l'info...c tjrs le meme prog mais cette fois ci j'aimerais afficher la somme des elmts de mon tableaux.#include #includ Mon code ne marche pô ! [ par xavier59 ] Mon code ne marche pas !Merci de m'aider !!!**************************************************# include # include int main(){ int tab[5]; int i; int t GetAsyncKeyState [ par sebleboss2002 ] Bon, c'est encore moi, ce coup-ci, j'ai trouvé (plus ou moins) comment faire ce que je voulais :#include #include <br Prob de modulo ou de code ? [ par NeoZ ] Salut, je voudrais stocker un nombre dans un tableau, ou tout du moins, stocker chaque chiffre dans une variable, et j'ai fait ce bout de code, mais i pb en c urgenttttttttttttttttt [ par natacha86 ] bonjour, j'ai un probleme avec mon programme, il ne veut pas sortir, j'ai fais un menu et apparement ya un bug mais je ne comprend rien.le code est as encore un pb en c svp....... [ par natacha86 ] j'ai essayer de séparer les fonctions mais ca ne marche pas...#include #include #include #include #include #define MAX 1000000 help une fonction qui a besoin de vous [ par natacha86 ] Re bonjour a tout le monde, voila j'ai mis tout le prog si vous voulez tester, en fait le pb viens de la fonctino tri_shell(), je ne sais pas pkoi ell compilation mai au lancement "erreur la memoire ne peu pas pas etre read" [ par touny23 ] je maitrise pas tro le C.mai comme j ai un projet a faire dessus pour la rentré , je sui obligé de m y mettre .j arrive a compiler sous dev-cpp mai lo fonctions sur les tableau [ par micoo86 ] Bonjour,en faite j'ai fait un programme avec le tableau (somme,affichage,minimum,maximum)mais j'arrive pas a faire le rest de l'exercice.si quelqu'un


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,560 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales