Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Yurii92_X
0 / 0 / 0
Регистрация: 15.06.2015
Сообщений: 18
#1

Строки (перестановка 1 и последней буквы каждого слова) - C++

18.09.2015, 08:45. Просмотров 463. Ответов 18
Метки нет (Все метки)

Разработать программу, которая в заданной строке, представляющей собой некоторые предложение, меняет местами первую и последнюю букву каждого слова (слова разделены одним или несколько пробелами).

Помогите новичку плизз)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.09.2015, 08:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Строки (перестановка 1 и последней буквы каждого слова) (C++):

Напечатать все слова строки, предварительно удалив из каждого слова все предыдущие вхождения последней буквы - C++
дана последовательность слов разделенных пробелами .Напечатать все слова предварительно удалив из каждого слова все предыдущие вхождения...

После последней буквы каждого слова вставить точку - C++
помогите пожалуйста!!!!! очень нужно сегодня!!!!!!!! Работа со строками. Разработать программы для двух задач. Для задач...

Напечатать все слова, отличные от последнего слова строки, удалив из каждого слова первую и последнюю буквы - C++
Близиться сессия,а завтра мне сдавать 2 проги. Помогите ребят,могу даже 100 скинуть,если уж так трудно помочь. 8.Задан...

Удалить из каждого слова исходной строки две последние буквы - C++
Пожалуйста помогите, дана строка символов. Удалить из каждого слова исходной строки две последние буквы

Сформировать строку, удалив из каждого слова исходной строки повторяющиеся в нем буквы - C++
Задание: Для решения задачи вам нужно ввести строки с помощью функций gets или fgets, разбить строку на слова и выбрать нужные (функция...

Записать в файл слова отличные от последнего предварительно удаляя первые буквы из каждого слова - C++
Здравствуйте, помогите работаться с ошибками, мучаюсь уже две недели, и не могу понять в чем дело Суть программы пользовать вводит...

18
Игорь1986
50 / 114 / 29
Регистрация: 08.09.2014
Сообщений: 1,016
Завершенные тесты: 1
18.09.2015, 09:10 #2
Ну в принципе проблем нет бери слово и копируй во временный массив, ну и потом копируй временный массив с конца, вот с заданным предложением
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <string>
using namespace std;
 
 
int main() {
   string word = "message";
   char s;
   //cin>> word;
   int n=word.length();
   for(int i = 0;i<n-1;i++){
   s=word[i];
   word[i] = word[i+1];
   word[i+1] =s;
   }
   cout << word << endl;
   getchar();
   return 0;
}

Либо
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
int main()
{
 std::vector<std::string> a(15);
 for (std::vector<std::string>::iterator it = a.begin() ; it!=a.end() ; ++it)
     std::cin>>*it;
 for (std::vector<std::string>::iterator it = a.begin() ; it!=a.end() ; ++it)
     std::reverse(it->begin(),it->end());
 for (std::vector<std::string>::iterator it = a.begin() ; it!=a.end() ; ++it)
     std::cout<<*it<<' ';
getchar();
return 0;
}
0
Черный мечник
48 / 49 / 17
Регистрация: 29.12.2012
Сообщений: 425
18.09.2015, 10:05 #3
Мне кажется перва программа просто отпровляет первую букву в конец
0
Игорь1986
50 / 114 / 29
Регистрация: 08.09.2014
Сообщений: 1,016
Завершенные тесты: 1
18.09.2015, 10:09 #4
Хотя ты прав щас подправим
0
Kerry_Jr
Модератор
Эксперт PHP
2207 / 2003 / 701
Регистрация: 14.05.2014
Сообщений: 5,870
Записей в блоге: 1
Завершенные тесты: 5
18.09.2015, 10:16 #5
Цитата Сообщение от Игорь1986 Посмотреть сообщение
C++
1
2
3
4
5
for(int i = 0;i<n-1;i++){
    s=word[i];
    word[i] = word[i+1];
    word[i+1] =s;
}
может так?
C++
1
2
3
4
5
6
for (int i = 0; j = word.size()-1; i < j; ++i, --j)
{
    s = word[i];
    word[i] = word[j];
    word[j] = s;
}
Добавлено через 1 минуту
только задача в том, чтобы переставить только первую и последнюю буквы.
0
Игорь1986
50 / 114 / 29
Регистрация: 08.09.2014
Сообщений: 1,016
Завершенные тесты: 1
18.09.2015, 10:24 #6
Тогда как то так
C++
1
2
3
4
n=strlen(word)-1;
s=word[0];
word[0]=word[n];
word[n]=s;
0
Черный мечник
48 / 49 / 17
Регистрация: 29.12.2012
Сообщений: 425
18.09.2015, 10:48 #7
Игорь1986, можно было и в три строчки с одной переменой)))))
0
Игорь1986
50 / 114 / 29
Регистрация: 08.09.2014
Сообщений: 1,016
Завершенные тесты: 1
18.09.2015, 10:56 #8
Та тут вопрос в другом, в задании написано слова разделены одним или несколько пробелами, то надо анализировать конец слова и конец пробела, а если не пробелы, то задание расширяется
0
Kerry_Jr
Модератор
Эксперт PHP
2207 / 2003 / 701
Регистрация: 14.05.2014
Сообщений: 5,870
Записей в блоге: 1
Завершенные тесты: 5
18.09.2015, 11:15 #9
Yurii92_X,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
#include <string>
 
void trim(std::string &str)
{
    int pos = str.find_first_not_of(" \t\r\n");
    str.erase(0, pos);
    pos = str.find_last_not_of(" \t\r\n");
    str.erase(pos+1, str.size()-pos);
}
 
int main()
{
    std::string text;
    std::getline(std::cin, text);
    trim(text);
    int begin_word = 0, end_word;
    char temp;
    while ((begin_word = text.find_first_not_of(" \t\r\n", begin_word)) != std::string::npos)
    {
        
        end_word = text.find_first_of(' ', begin_word);
        if (end_word == std::string::npos)
            end_word = text.size();
        end_word -= 1;
        temp = text[begin_word];
        text[begin_word] = text[end_word];
        text[end_word] = temp;
        begin_word = end_word+1;
    }
    
    std::cout << text << std::endl;
    
    return 0;
}
0
Игорь1986
50 / 114 / 29
Регистрация: 08.09.2014
Сообщений: 1,016
Завершенные тесты: 1
18.09.2015, 11:21 #10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
std::string s;
 
    std::cout << "Enter text: ";
    std::getline(std::cin, s);
 
    std::stringstream ss(s);
 
    while (ss >> s) {
        std::swap(s[0],s[s.length()-1]);
        std::cout << s << ' ';
    }
 
    std::cout << std::endl;
    getchar();
    return 0;
Кто короче))))
0
Yurii92_X
0 / 0 / 0
Регистрация: 15.06.2015
Сообщений: 18
18.09.2015, 11:21  [ТС] #11
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
Yurii92_X,
Код C++
#include <iostream>
#include <string>
void trim(std::string &str)
{
int pos = str.find_first_not_of(" \t\r\n");
str.erase(0, pos);
pos = str.find_last_not_of(" \t\r\n");
str.erase(pos+1, str.size()-pos);
}
int main()
{
std::string text;
std::getline(std::cin, text);
trim(text);
int begin_word = 0, end_word;
char temp;
while ((begin_word = text.find_first_not_of(" \t\r\n", begin_word)) != std::string::npos)
{
end_word = text.find_first_of(' ', begin_word);
if (end_word == std::string::npos)
end_word = text.size();
end_word -= 1;
temp = text[begin_word];
text[begin_word] = text[end_word];
text[end_word] = temp;
begin_word = end_word+1;
}
std::cout << text << std::endl;
return 0;
}
просто вылетает после ввода предложения с кодом ошибки 0 (0х0)
0
Игорь1986
50 / 114 / 29
Регистрация: 08.09.2014
Сообщений: 1,016
Завершенные тесты: 1
18.09.2015, 11:23 #12
Yurii92_X, бери мой короткий выбор
0
Yurii92_X
0 / 0 / 0
Регистрация: 15.06.2015
Сообщений: 18
18.09.2015, 11:24  [ТС] #13
Цитата Сообщение от Yurii92_X Посмотреть сообщение
Сообщение от Kerry_Jr
Yurii92_X,
Код C++
#include <iostream>
#include <string>
void trim(std::string &str)
{
int pos = str.find_first_not_of(" \t\r\n");
str.erase(0, pos);
pos = str.find_last_not_of(" \t\r\n");
str.erase(pos+1, str.size()-pos);
}
int main()
{
std::string text;
std::getline(std::cin, text);
trim(text);
int begin_word = 0, end_word;
char temp;
while ((begin_word = text.find_first_not_of(" \t\r\n", begin_word)) != std::string::npos)
{
end_word = text.find_first_of(' ', begin_word);
if (end_word == std::string::npos)
end_word = text.size();
end_word -= 1;
temp = text[begin_word];
text[begin_word] = text[end_word];
text[end_word] = temp;
begin_word = end_word+1;
}
std::cout << text << std::endl;
return 0;
}
просто вылетает после ввода предложения с кодом ошибки 0 (0х0)
А все, не хватает в конце system ("pause");

Добавлено через 35 секунд
Цитата Сообщение от Игорь1986 Посмотреть сообщение
Yurii92_X, бери мой короткий выбор
мне размер проги не важен)
0
Kerry_Jr
Модератор
Эксперт PHP
2207 / 2003 / 701
Регистрация: 14.05.2014
Сообщений: 5,870
Записей в блоге: 1
Завершенные тесты: 5
18.09.2015, 11:26 #14
Цитата Сообщение от Yurii92_X Посмотреть сообщение
с кодом ошибки 0 (0х0)
Код 0 есть нормальное завершение программы. И не вылетает, а отрабатывает, выводит результат и закрывает окно консоли.
Цитата Сообщение от Игорь1986 Посмотреть сообщение
C++
1
getchar();
единственный минус твоей программы. Уж лучше cin.get() использовать
0
Игорь1986
50 / 114 / 29
Регистрация: 08.09.2014
Сообщений: 1,016
Завершенные тесты: 1
18.09.2015, 11:27 #15
Одобрямс
Иногда Sleepом балуюсь
0
18.09.2015, 11:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.09.2015, 11:27
Привет! Вот еще темы с ответами:

Удалить из слова предыдущие вхождения последней буквы - C++
Вот, попыталась соорудить: word.replace(word, word.empty()) + word Компилироваться не хочет: Unit2.cpp(85): E2235 Member function...

Удалить из слова все буквы, совпадающие с последней буквой. - C++
Помогите решить задачу! Удалите из слова все буквы, совпадающие с последней буквой. Заранее благодарен!

Файловый ввод/вывод. Во всех словах строки переставить все входящие буквы «а» в начало слова, а буквы «я» – в конец - C++
Здравствуйте! Помогите, пожалуйста, составить программу, которая считывает из текстового файла input.txt строку символов S.Во всех словах...

После первой буквы каждого слова вставить символ “-” - C++
После первой буквы каждого слова вставить символ “-”. Нужно в С++


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.