Comp Sci Unmash a string in C++ using recursion

Click For Summary
The discussion focuses on solving a homework problem in C++ that requires using recursion to "mash" and "unmash" strings. Part A involves creating a function that rearranges a user-input string by alternating characters from the start and end. The provided code successfully implements this part, but the user struggles with Part B, which requires reversing the process to retrieve the original string. Suggestions for Part B include using recursion to separately handle even and odd indexed characters, but the user seeks further guidance on implementing this approach. The emphasis is on the importance of mastering recursive techniques for efficient coding.
Hughng
Messages
26
Reaction score
0

Homework Statement


MUST USE RECURSION TO SOLVE THESE PARTS.

Part A: Have a user input a string. Then display this string smashed up as follows: display the first character in the string, then the last, then the second, then the second to last, then the third... So if the string is “abcdef”, it will display:
afbecd (input “abcdef”)
12345 --> 15243
123456 --> 162534

Part B: Now, unmash the above strings.
i.e 162534 -->123456

Homework Equations

The Attempt at a Solution


I got part A to work.
Code:
#include <iostream>
using namespace std;
void mash(string s);

int main()
{
    string sequence;
    cout << "Enter a sequence: ";
    getline(cin, sequence);
    mash(sequence);
}

void mash(string s)
{
    int a = s.length();
  
    if (a == 0)
    {
    return;
    }
    if (a == 1)
    {
    cout << s;
    return;
    }
  
    cout << s[0];  
  
    if(a>1)
    {          
        cout << s[a - 1];  
        s = s.substr(1,a-2);
        mash(s);
      
    }
}
but I have no clue how to approach part B. I guess I can try to print out the characters in the even position, say in the string 162534, thus I will get 123. Then I guess I can try to print out the odd position characters from the last one up to the first one, i.e, 456. Combining these two will get the original strings but I have no clue how to use recursion to solve part B.
 
Last edited by a moderator:
Physics news on Phys.org
You can use recursion in the sub-steps: one recursion for the even characters, one for the odd characters.
Or unmash the string in the code with a recursive algorithm (2 characters at a time?), then print the whole string.
 
Hughng said:
Combining these two will get the original strings but I have no clue how to use recursion to solve part B.
I'm looking forward to seeing the code you come up with to solve this. We can't help with improvements to your algorithm until you have first put in a good attempt by yourself.

Recursive routines pack a lot of power into few lines, so it's worth investing time in getting them right.
 

Similar threads

  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 3 ·
Replies
3
Views
1K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 10 ·
Replies
10
Views
2K
  • · Replies 12 ·
Replies
12
Views
2K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 14 ·
Replies
14
Views
5K
  • · Replies 3 ·
Replies
3
Views
2K
Replies
4
Views
2K