我正在尝试将单词的第一个字母移到末尾,然后在末尾添加“ 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) {
}
答案 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;
}