如何在C ++中将单词的第一个字母移到末尾: 10#16

时间:2019-04-11 22:27:27

标签: c++

我正在尝试将单词的第一个字母移到末尾,然后在末尾添加“ ay”。这是Ch的一部分。 C ++书中的10个编程挑战16带有一个柚子。

我不知道从哪里开始。

这是我到目前为止的代码:

#include <iostream>
#include <string>
#include <iomanip>
#include <cstdlib>
#include <cctype>
#include <cstring>

using namespace std;

//Function Prototypes
void toUpper(char *);
void reArrange(char *);
//string addAY(char);

//Consistent Variables
const int SIZE = 100;

int main() {

    //User input holder
    char input[SIZE];

    //Prompt
    cout << "Please enter a phrase: " << endl;
    cin.getline(input, SIZE);

    //Function calls



    //Print pig latin
    cout << "You entered: ";
    toUpper(input);
    cout << endl;
    cout << "Transalted to pig latin: " << endl;

    system("pause");
    return 0;
}

void toUpper(char *input) {

    int i = 0;
    char c;
    while (input[i])
    {
        c = input[i];
        putchar(toupper(c));
        i++;
    }
}

void reArrange(char *input) {



}

2 个答案:

答案 0 :(得分:1)

有很多方法可以做到这一点。这是一个:

std::string word = "hello";
word = word.substr(1, word.length() - 1) + word.front() + "ay";
std::cout << word;

输出:

ellohay

对于正确的解决方案,您还需要进行一些范围检查。

答案 1 :(得分:0)

@ J.R。说,有很多方法可以做到这一点。我会使用std :: string而不是char *。

这是一种方法:

#include <iostream>
#include <string>

using namespace std;

//Function Prototypes
void reArrange(std::string& str);
void addAy(std::string &str);
//string addAY(char);

//Consistent Variables
const int SIZE = 100;

int main()
{

  //User input holder
  std::string input_line;
  //Prompt
  std::cout << "Please enter a phrase: " << endl;
  std::getline(std::cin, input_line);

  //Print pig latin
  std::cout << "You entered: " << input_line << endl;
  std::cout << "Transalted to pig latin: " << endl;

  reArrange(input_line);
  addAy(input_line);

  cout << input_line << ":\n";
  std::string wait_var;
  std::cin >> wait_var;
  return 0;
}

// pass by reference
void addAy(std::string& str) {
  str += "ay";
}

//pass by reference
void reArrange(std::string& str)
{
  char first_letter = str[0];
  str = str.substr(1, str.length()-1) + first_letter;
}