Accueil > Forum > > > > combinaisons possibles C(n,k)
combinaisons possibles C(n,k)
lundi 22 novembre 2010 à 15:51:10 |
combinaisons possibles C(n,k)

mervat
|
bonjour,
je veux faire la combinaison de n entiers, j'ai trouvé ce code dans un forum qui convient à ce que je veux:
Code C/C++ : #include <string>
#include <iostream>
using namespace std;
typedef char* lpstrz ;
void combirec(int k, lpstrz l[], const string &s) {
if (k==0) {
cout << s << endl;
return;
}
if (*l==0) return;
if (s.empty())
{
combirec(k-1, l+1, *l);
}
else
{
combirec(k-1, l+1, s+","+*l);
}
combirec(k, l+1, s);
}
int main() {
lpstrz tableau[] = {"1", "2", "3", "4", "5", 0};
combirec(3, tableau, "" );
return 0;
}
sauf que mon tableau ne contient pas 1,2,3,4,5 mais contient n éléments (n est déterminé par une autre fonction); j'ai fait ces modifications au main pour adapter ce code à mon problème:
Code C/C++ : int main() {
int n = nombreLignes ("in.txt"); // fonction qui détermine le nbre de lignes d'un texte
char j[10];
lpstrz tableau[10];
for (int i = 1; i <= n+1 ; i++)
{ if (i==n+1)
tableau [i] = "0"; // j'ai fait comme le code précédent, le dernier élément 0
else
{
sprintf (j,"%d",i); // pour convertir int en char car on va remplir un tableau de char
tableau[i] = j;
}
}
combirec(3, tableau, "" );
system ("pause");
return 0;
}
avec ces modification, rien n'est affiché, pourrais je avoir votre aide pour savoir comment corriger ce code?
et merci d'avance.
|
|
lundi 22 novembre 2010 à 16:37:23 |
Re : combinaisons possibles C(n,k)

buno
|
Réponse acceptée !
Hello,
sauf que mon tableau ne contient pas 1,2,3,4,5 mais contient n éléments (n est déterminé par une autre fonction);
Il va falloir que tu passes par une allocation dynamique: malloc() ou new.
Code C/C++ : lpstrz tableau[10];
for (int i = 1; i <= n+1 ; i++)
Tu va avoir un souci si n > 10. Passes par une allocation dynamique
@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Rejoignez mon réseau professionnel sur Viadeo
|
|
mardi 23 novembre 2010 à 10:03:50 |
Re : combinaisons possibles C(n,k)

mervat
|
bonjour,
dans mon exemple je sais que n ne dépasse jamais 10 c'est pourquoi j'ai fait tableau [10], mais merci comme même je vais essayer de faire l'allocation dynamique.
|
|
mercredi 24 novembre 2010 à 22:05:55 |
Re : combinaisons possibles C(n,k)

Ballesteros
|
Réponse acceptée !
Est ce qu'il y a un interêt caché à travailler avec des char * pour passer des nombres ??  . Ca me semble assez hallucinant comme code que tu as trouvé, il faut utiliser un tableau d'entiers et tu t'éviteras un paquet d'ennuis.
Ensuite, c'est une bonne idée de faire une allocation dynamique plutôt qu'un tableau de taille 10. Si tu es en train d'apprendre le C++, il vaut mieux partir du principe que tu peux avoir plus que 10 éléments et tu devra alors choisir si tu tronques ta série à 10, ou si tu crée un tableau de la taille voulue. Pour tronquer il te suffirait de faire un min(n,10) avant de lancer ta boucle, ou alors faire une double condition dans le if (<n+1 && <10).
Autre chose, tu ne remplis pas l'index 0 de ton tableau, donc quand tu écrit tableau[n+1], tu es en dehors des limites de ton tableau. Ta boucle for doit être : for (int i=0;i<10;++i)
si jamais n<10, il faut que tu rajoute une condition pour mettre une valeur 'joker' dans ton tableau.
|
|
jeudi 25 novembre 2010 à 09:28:23 |
Re : combinaisons possibles C(n,k)

buno
|
Est ce qu'il y a un interêt caché à travailler avec des char *
Tiens, je n'avais pas fait gaffe à ça...C'est clair que les int sont plus indiqués...
@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Rejoignez mon réseau professionnel sur Viadeo
|
|
jeudi 25 novembre 2010 à 10:44:42 |
Re : combinaisons possibles C(n,k)

mervat
|
bonjour et merci beaucoup pour vos réponses, voila j'ai changé totalement le code, j'ai fait une allocation dynamique et un tableau de int au lieu de char *,
franchement j'ai trouvé le code sur le net et j'ai fait quelques modifications pour l'adapter à mon problème.
Code C/C++ : #include <stdio.h>
#include <stdlib.h>
#include <string>
#include <iostream>
void afficher( int *p, int n) {
int i;
for (i = 0; i < n; i++) std::cout << p[i] << " ";
std::cout << std::endl;
}
void combi2(int cmb[], int n, int p , int i, int k) {
if (k == p) afficher(cmb,p);
else if (i < n) {
combi2(cmb,n,p,i+1,k);
cmb[k] = i;
combi2(cmb,n,p,i+1,k+1);
}
}
int main() {
int n=5; // dans mon cas n est donné par une fonction mais pour simplifier je vais
// supposer que n= 5
int *combi;
combi=new int[n+1];
combi2(combi,n+1,3,1,0);
system ("pause");
return 0;}
et le résultat sera:
Code : 345
245
235
234
145
135
134
125
124
123
|
|
Cette discussion est classée dans : code, int, tableau, char, combirec
Répondre à ce message
Sujets en rapport avec ce message
tableau char [ par dingue007 ]
Voila je dois faire un prog en C++ : un tableau avec les mois de lannée et quand je tape un chiffre il me sort le mois ! mais je narrive pas a faire l
Gestion d'entrées/sorties sur fichier [ par macrow ]
Bonjour, Voici mon source : #include #include #include #include #include //********************************************
"désallocation" inopinée [ par vecchio56 ]
J'ai touvé un truc bizarre avec Visual C++ 6: le code suivant plante:#include void f(char* a){ a = new char[100]; // alloue de la
Tableau et char to int [ par Niníel ]
Bonjour!J'ai un tableau: chTabStart[64] dans lequel je rentre un nombre dans le format suivant: d_25 pour un nombre décimale par exemple. Donc dans mo
problème de char [ par minet03 ]
Coucoutout le monde, tout d'abord voilà mon code :#include #include #include #include #include #include char *bin_dec(char *binai
problème de char [ par minet03 ]
Bonjour c'est encore le débutant, voilà le code :#include #include #include char inverser_char(char variable[]){ int longueur = strlen(variable); // l
longip ... probleme [ par winwarrior ]
Salut :)Voila j'ai un petit probleme avec un code qui est censé me renvoyer le longip, il me retourne -795585024 au lieu de 2130772483 (longip de 127.
lister un tableau de string [ par minet03 ]
Soyons bref, je suis en train de bosser sur un code qui liste les srting d'un tableau, seul problème c'est qu'il y a des problèmes !Voici mon code :vo
Saisie chaines caractère en boucle en C [ par oim09 ]
Voila alors j'ai rencontré un problème que je n'avai jamais rencontrer. Je veu faire une fonction qui rempli un tablaeu avec des chaines de caractères
Help.... probleme avec un programme de tri de char [ par ratp ]
Es ce que vous pouvez m'aider. j'ai réaliser un programme qui normalement doit permettre de trier les caracteres. mais sa ne marche pas. merci de m'ai
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|