Я должен написать функцию, которая сохраняет первую и последнюю букву строки одинаково и игнорирует любые не-буквы после последней буквы. Я должен использовать std :: random_shuffle(). Я прочитал документацию, однако, похоже, я не понимаю концепции этой функции. Это мой код:Перемешать буквы в строке C++
#include <iostream>
#include <algorithm>
#include <string>
std::string mix(std::string s){
int last_char;
if(std::isalpha(s[s.size()-1]) == true){
last_char = s.size()-1;
} else {
for(int i=s.size()-1 ; i>0; --i){
if((std::isalpha(s[i]) == false) && (std::isalpha(s[i-1])==true)){
last_char = i -1;
break;
}
}
}
std::random_shuffle(&s[1],&s[last_char]);
return s;
}
int main(){
std::string test = "Hello";
std::cout << mix(test) << std::endl;
}
редактировать: Теперь, однако я постоянно получаю сообщение об ошибке: ошибки сегментации (ядро сбрасывали). Кто-нибудь понял, почему? Кажется, не может найти проблему.
Это случайно перемешивает содержимое между аргументами снабжающих – Alex
Вы должны научиться использовать отладчик. Между тем ответьте на эти вопросы: какова конечная ценность last_letter? На какой строке он назначен? –