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'un chiffre


Sujet :

C

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2005
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 49
    Points : 25
    Points
    25
    Par défaut problème d'un chiffre
    Bonsoir à tous!Voilà,je veux à partir de n chiffres donnés donner les arrangements possibles (n! arrangements).Dans mon code,j'ai utilisé une matrice où j'ai placé les arrangements.A présent,j'ai pas traité les 2 dernières colonnes de la matrice correctement mais peu importe pour le moment ce n'est pas mon soucis.Voilà ce qui est affiché:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Donner le nombre n
    4
    Donner le 1er ÚlÚment
    1
    Donner le 2eme ÚlÚment
    2
    Donner le 3eme ÚlÚment
    3
    Donner le 4eme ÚlÚment
    4
    1234-1244-1323-1343-1434-1444-2134-2144-2334-2344-2434-2444-3234-3244-3334-3344-
    3434-3444-4234-4244-4334-4344-4434-4444-Press any key to continue
    Pour le moment ,ne vous interresser pas à la dernière et avant dernière colonne.Comme vous le constater,le '1' disparait aprés avoir entamer à écrire les arrangements qui commencent par '3'.S'il vous plait dites moi où se trouve mon erreur.
    voilà mon code:
    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
    #include<stdio.h>
    void main()
    {
    	int fact(int n),n,t[100],a[100],v[1000][100],i,k,l,x,nb;
     
    	do
    	{
    		printf("Donner le nombre n\n");
    		scanf("%d",&n);
    	}
    	while(n>100);
    	for(i=0;i<n;i++)
    	{
    		printf("Donner le %d%s élément\n",(i+1),(i)?"eme":"er");
    		scanf("%d",&t[i]);
    	}
     
    	/*copie du tableau initial*/
    	for(i=0;i<n;i++)
    		a[i]=t[i];
     
    	/*les colonnes de la matrice*/
    	for(k=0;k<n;k++)
    	{
    		l=0;
    		i=k;
    		while(l<fact(n) && i<n)
    		{   /*remplir les lignes de la matrice */ 
    			for(nb=0;nb<fact(n-k-1);nb++)
    			{	
     
    				v[l][k]=a[k];
    				l++;
     
     
    			}
    			if(i<n-1)
    			{
    				x=a[k];
    				a[k]=a[i+1];
    				a[i+1]=x;
    			}
    			if(i==(n-1))
    			{
    				x=a[k];
    				a[k]=a[n-1];
    				a[n-1]=x;
    			}
     
     
    			if(v[l-1][k]==a[n-1] && k>0)
     
    			{	/*mise à zéro(se référer au tableau initial)*/
    					for(nb=0;nb<fact(n-k-1);nb++)
    			{
    				v[l][k]=a[k];
    				l++;
    			}
    			for(i=k;i<n;i++)
    			a[i]=t[i];
    					/*fin de la mise à zéro*/
     
    				x=a[k-1];
    				a[k-1]=*(a+k);
    				*(a+k)=x;
    				i++;
     
    				i=k-1;
    			}
    			i++;
    		}
    		/*mise à zéro(en passant d'une colonne à l'autre)*/
    		for(i=0;i<n;i++)
    		a[i]=t[i];
     
     
     
    	}
     
     
    	/*affichage*/
    	for(i=0;i<fact(n);i++)
    	{
    		for(k=0;k<n;k++)
    			printf("%d",v[i][k]);
    		printf("-");
    	}
     
     
    }
     
    	int fact(int n)
    	{
    		int i,f=1;
     
    		for(i=1;i<=n;i++)
    			f=f*i;
    		return f;
    	}

  2. #2
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut Re: problème d'un chiffre
    Citation Envoyé par devdébuto
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Donner le nombre n
    4
    Donner le 1er ÚlÚment
    Déjà, je te conseille de ne pas utiliser les accentuées dans ton code. Le résultat dépend de l'implémentation.
    Pas de Wi-Fi à la maison : CPL

  3. #3
    Nouveau membre du Club
    Inscrit en
    Novembre 2005
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 49
    Points : 25
    Points
    25
    Par défaut problème d'un chiffre
    Emmanuel Delahaye a dit:

    Déjà, je te conseille de ne pas utiliser les accentuées dans ton code
    J'ai un réfléxe de mettre des accentuées,mais bon c'est pas grave.Mon probléme c'est ce chiffre '1' qui n'est plus traité dans les arrangements.

  4. #4
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Déjà au début :
    1234-1244
    ce ne devrait pas être
    1234-1243
    Si tu pouvais expliquer ton algo pour savoir où chercher l'erreur.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  5. #5
    Nouveau membre du Club
    Inscrit en
    Novembre 2005
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 49
    Points : 25
    Points
    25
    Par défaut problème d'un chiffre
    je vais parcourir mon tableau d'entiers et remplir ma matrice colonne par colonne en écrivant chaque chiffre factorielle fois le nombre d'entiers qui restent. Par exemple:
    Mon tableau: 1234
    Dans la colonne 1 de la matrice,je vais ecrire '1' 3! fois puis '2' 3! fois puis '3' 3! fois et '4' 3! fois.
    Dans la 2 ième colonne de la matrice, je vais écrire '2' 2!fois puis '3' 2! fois et puis '4' 2!fois.
    Arrivant maintenant à la dernière case du tableau. (c'est à dire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (if(v[l-1][k]==a[n-1] && k>0)
    Le tableau devient :2134 et je travaille de la même manière jusqu'à compléter les n! lignes de la colonne de la matrice.
    En fait, je crois que mon problème se trouve dans cette condition:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (if(v[l-1][k]==a[n-1] && k>0)
    Mais je n'ai pas pu l'identifier.

  6. #6
    Membre éclairé Avatar de reggae
    Profil pro
    Inscrit en
    Août 2005
    Messages
    773
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2005
    Messages : 773
    Points : 795
    Points
    795
    Par défaut
    Petit conseil: ne mets pas tt dans main()... crée d'autres fonctions... c'est plus clair et tu pourras réutiliser ton code plus tard

  7. #7
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    La question de la permutation a deja ete traite sur ce forum, TrapD proposait une bonne solution recursive...

    http://www.developpez.net/forums/viewtopic.php?t=419030

    Je ne corrige pas ta solution car: bien que t'as le merite d'avoir tente quelque chose, a mon avis tu perderais beaucoup de temps a essayer de regler des petits details car ton algorithme n'est pas bon (du moins ce que j'en tire en lisant en diagonale...)

    Propose ton algorithme en francais a la limite si t'en es convaincu, sinon, franchement, fais comme TrapD...

    Jc

    PS: Quand je dis propose en francais, regarde l'algo de TrapD et fais quelque chose de similaire, qui explique bien ce que tu veux faire...

Discussions similaires

  1. Problème extraction des chiffres d'un système
    Par Mathsdeb dans le forum Excel
    Réponses: 41
    Dernier message: 17/10/2016, 23h13
  2. [XL-2010] Problème avec les chiffres
    Par verredewhisky dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/02/2013, 20h58
  3. [BO XI R2] Problème sélection de chiffres
    Par vgiant dans le forum Webi
    Réponses: 2
    Dernier message: 15/08/2008, 14h40
  4. problème d'arrondi à 2 chiffres après virgule
    Par nerick dans le forum Langage
    Réponses: 1
    Dernier message: 05/01/2006, 17h26
  5. Problème nb de chiffres !
    Par chocobos dans le forum Langage
    Réponses: 2
    Dernier message: 14/07/2005, 13h23

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