theoklis Δημοσ. 19 Ιανουαρίου 2009 Δημοσ. 19 Ιανουαρίου 2009 Καλησπερα Εδω και καιρο θελω να φτιαξω προγραμμα στην C οπου θα δινω 3 γραμματα και θα μου εμφανιζει ολους τους πιθανους συνδιασμους πχ: abc acb bac bca cba cab αν μπορει καποιος να μου δωσει ενα παραδειγμα για το πως γινεται η διαδικασια καθως και με 4+ γραμματα ειλικρινα το χρειαζομαι για μια εργασια μου στην σχολη Ευχαριστω
PCharon Δημοσ. 19 Ιανουαρίου 2009 Δημοσ. 19 Ιανουαρίου 2009 Αυτό που είναι εύκολο να υλοποιήσεις είναι αυτό που λέμε nested loops (ένθετοι βρόχοι). Για παράδειγμα, αν μιλάμε για ASCII charset, μπορείς να γράψεις (για 3 γράμματα): int i1, i2, i3; for(i1='a'; i1<'c'; i1++) { for(i2='a'; i2<'c'; i2++) { for(i3='a'; i3<'c'; i3++) { printf("%c%c%c\n", i1, i2, i3); }}}
PCharon Δημοσ. 19 Ιανουαρίου 2009 Δημοσ. 19 Ιανουαρίου 2009 Μόλις πρόσεξα πως αυτό που ζητάς είναι κάπως διαφορετικό, διότι αυτό που έδωσα θα συμπεριλάβει και τους συνδυασμούς πχ aab, ccc κ.τ.λ. Αν δεν το θες αυτό, για ευκολία μπορείς να κάνεις την printf ως εξής: if(i1!=i2 && i1!=i3 && i2!=i3) printf("%c%c%c\n", i1, i2, i3); (το παραπάνω δεν βολεύει για n γράμματα)
m1cRo Δημοσ. 19 Ιανουαρίου 2009 Δημοσ. 19 Ιανουαρίου 2009 >//============================================================================ // Name : Algo.cpp // Author : m1cRo // Version : // Copyright : GPL // Description : Algo //============================================================================ #include <stdio.h> #include <conio.h> #include <string.h> using namespace std; char *alfa; void calculate(char *result,int index){ int len=strlen(alfa); if(index==len){ puts(result); return; } for(int i=0;i<len;i++){ result[index+1]='\0'; if(strchr(result,alfa[i])==NULL){ result[index]=alfa[i]; calculate(result,index+1); } } } int main(int argc,char **argv) { if(argc!=2){ puts("Wrong number of parameters"); return -1; } unsigned int aLen=strlen(argv[1]); alfa=new char[aLen]; if(alfa==NULL){ puts("Memory allocation error"); return -1; } char *result=new char[aLen]; if(result==NULL){ puts("Memory allocation error"); return -1; } strcpy(alfa,argv[1]); calculate(result,0); delete [] alfa; delete [] result; return 0; }
theoklis Δημοσ. 19 Ιανουαρίου 2009 Μέλος Δημοσ. 19 Ιανουαρίου 2009 Φιλε m1cRo ευχαριστω αλλα οι γνωσεις μου δεν ειναι τοσο προχωρημενες και δεν ξερω αν αυτο το προγραμμα κανει την δουλεια που θελω βασικα δεν καταλαβαινω "γρι" δεν πειραζει ευχαριστω παντως θα κανω ενα copy/paste και θα το τρεξω για να δω τι θα βγαλει ευχαριστω και παλι
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.