Προς το περιεχόμενο

Πιθανοτητες C


theoklis

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπερα

 

Εδω και καιρο θελω να φτιαξω προγραμμα στην C οπου θα δινω 3 γραμματα και θα μου εμφανιζει ολους τους πιθανους συνδιασμους πχ:

 

abc

acb

bac

bca

cba

cab

 

αν μπορει καποιος να μου δωσει ενα παραδειγμα για το πως γινεται η διαδικασια καθως και με 4+ γραμματα ειλικρινα το χρειαζομαι για μια εργασια μου στην σχολη

 

Ευχαριστω

Δημοσ.

Αυτό που είναι εύκολο να υλοποιήσεις είναι αυτό που λέμε 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);

}}}

Δημοσ.

Μόλις πρόσεξα πως αυτό που ζητάς είναι κάπως διαφορετικό, διότι αυτό που έδωσα θα συμπεριλάβει και τους συνδυασμούς πχ aab, ccc κ.τ.λ. Αν δεν το θες αυτό, για ευκολία μπορείς να κάνεις την printf ως εξής: if(i1!=i2 && i1!=i3 && i2!=i3) printf("%c%c%c\n", i1, i2, i3);

(το παραπάνω δεν βολεύει για n γράμματα)

Δημοσ.
>//============================================================================
// 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;
}

Δημοσ.

Φιλε m1cRo ευχαριστω αλλα οι γνωσεις μου δεν ειναι τοσο προχωρημενες και δεν ξερω αν αυτο το προγραμμα κανει την δουλεια που θελω βασικα δεν καταλαβαινω "γρι" δεν πειραζει

 

ευχαριστω παντως θα κανω ενα copy/paste και θα το τρεξω για να δω τι θα βγαλει :D

 

ευχαριστω και παλι

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...