0

How would I write a permutation method in C programming with an array of string characters while each character is being mapped to an integer? So for example, I have a permutation of 10 integers:

1, 0, 2, 3, 5, 4, 6, 9, 8, 7 - not necessarily in order

and a text full of characters, less than 400 characters. I have both of them stored into 2 separate arrays, but how would I map each integer onto each character? After mapping them, how would I go about writing a method of permutation?

Neither arrays are the same size. The permutation array has 10 values, the char array has less than 400 chars, but I just initialized it as: char text[400]; the size of each arrays do not move.

Better explanation:

I was thinking, if I have 10 integers (0 - 9) and the following permutation - where each permutation cannot have the same number:

0, 1, 2, 3, 4, 5, 6, 7, 8, 9 - original

1, 0, 3, 6, 7, 4, 5, 9, 2, 8 - permutation

Apple, bee - text of 10 characters, including the space and comma

so by applying the permutation above, I would get something like:

'pAl be,epe'

And if you use the inverse of that permutation, you would get 'Apple, bee' again.

The original index[0] is where the 'A' in Apple is supposed to be - and with the permutation, it is switched with the 'p' because of the 1 index... and so on.

So how would I go about implementing that? In other words, how would I map the permutation to each char and have it switch positions? I haven't learned about Structures yet.

2
  • You have one array that contain all string and one array that contain all numbers, like char** and int* ? Do your two array have same size? (one number for one string) Do your array's size move? Commented Mar 27, 2014 at 1:02
  • Yep! The array of integers is the given permutation above - I just want to map them to each character. The permutation array has 10 values, the char array has less than 400 chars, but I just initialized it as: char text[400]; Commented Mar 27, 2014 at 1:06

1 Answer 1

1

First case:

Simply one is to make a implicit link between your array.

Array[int]    -->      Array[string]           
   1          -->           "toto"              Array[0]
   0          -->           "titi"              Array[1]
   2          -->           "tutu"              Array[2]
  ...

And then if you want to permut two element you can move strings pointers

Second case:

You want a real link between your array, so i recommand to make a structure :

struct example
{
   int ArrayInt[10];
   char *ArrayPointer[10];
};

Where ArrayPointer will contain the address of the string situated in the array of string.

Example :

           STRUCTURE

Array[int]   Array[char *]                    ArrayString

0            &ArrayString[1]                  "toto"

1            &ArrayString[0]                  "titi"

2            &ArrayString[2]                  "tutu"

Number 0 is mapped with "titi"

Number 1 with "toto"

Number 2 with "tutu"

To make a permutation, simply change the pointer in the structure

Is it ok?

Sign up to request clarification or add additional context in comments.

1 Comment

Hmm.. I haven't learned about structures yet. I added more explanation on what I'm trying to get at.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.