Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Yurii92_X
0 / 0 / 0
Регистрация: 15.06.2015
Сообщений: 18
1

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

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

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

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

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

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

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

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

Дана последовательность слов. Необходимо удалить из каждого слова все предыдущие вхождения последней буквы
Не совсем понимаю, с чего начинать надо реализацию. Как в КАЖДОМ слове найти...

18
Игорь1986
121 / 114 / 57
Регистрация: 08.09.2014
Сообщений: 1,038
Завершенные тесты: 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 / 34
Регистрация: 29.12.2012
Сообщений: 445
18.09.2015, 10:05 3
Мне кажется перва программа просто отпровляет первую букву в конец
0
Игорь1986
121 / 114 / 57
Регистрация: 08.09.2014
Сообщений: 1,038
Завершенные тесты: 1
18.09.2015, 10:09 4
Хотя ты прав щас подправим
0
Kerry_Jr
Эксперт PHP
2210 / 2006 / 940
Регистрация: 14.05.2014
Сообщений: 5,869
Записей в блоге: 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
121 / 114 / 57
Регистрация: 08.09.2014
Сообщений: 1,038
Завершенные тесты: 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 / 34
Регистрация: 29.12.2012
Сообщений: 445
18.09.2015, 10:48 7
Игорь1986, можно было и в три строчки с одной переменой)))))
0
Игорь1986
121 / 114 / 57
Регистрация: 08.09.2014
Сообщений: 1,038
Завершенные тесты: 1
18.09.2015, 10:56 8
Та тут вопрос в другом, в задании написано слова разделены одним или несколько пробелами, то надо анализировать конец слова и конец пробела, а если не пробелы, то задание расширяется
0
Kerry_Jr
Эксперт PHP
2210 / 2006 / 940
Регистрация: 14.05.2014
Сообщений: 5,869
Записей в блоге: 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
121 / 114 / 57
Регистрация: 08.09.2014
Сообщений: 1,038
Завершенные тесты: 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
121 / 114 / 57
Регистрация: 08.09.2014
Сообщений: 1,038
Завершенные тесты: 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
2210 / 2006 / 940
Регистрация: 14.05.2014
Сообщений: 5,869
Записей в блоге: 1
Завершенные тесты: 5
18.09.2015, 11:26 14
Цитата Сообщение от Yurii92_X Посмотреть сообщение
с кодом ошибки 0 (0х0)
Код 0 есть нормальное завершение программы. И не вылетает, а отрабатывает, выводит результат и закрывает окно консоли.
Цитата Сообщение от Игорь1986 Посмотреть сообщение
C++
1
getchar();
единственный минус твоей программы. Уж лучше cin.get() использовать
0
Игорь1986
121 / 114 / 57
Регистрация: 08.09.2014
Сообщений: 1,038
Завершенные тесты: 1
18.09.2015, 11:27 15
Одобрямс
Иногда Sleepом балуюсь
0
Yurii92_X
0 / 0 / 0
Регистрация: 15.06.2015
Сообщений: 18
18.09.2015, 11:28  [ТС] 16
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
Код 0 есть нормальное завершение программы. И не вылетает, а отрабатывает, выводит результат и закрывает окно консоли.
Да, я заметил) Уже поставил паузу)
0
Kerry_Jr
Эксперт PHP
2210 / 2006 / 940
Регистрация: 14.05.2014
Сообщений: 5,869
Записей в блоге: 1
Завершенные тесты: 5
18.09.2015, 11:31 17
Игорь1986, хотя нет, не единственный - не сохраняется количество пробелов между словами
0
Игорь1986
121 / 114 / 57
Регистрация: 08.09.2014
Сообщений: 1,038
Завершенные тесты: 1
18.09.2015, 11:44 18
главное результат, а ты вижу главный критик но я же не спорю, все не идеально
0
Kerry_Jr
18.09.2015, 11:53     Строки (перестановка 1 и последней буквы каждого слова)
  #19

Не по теме:

Цитата Сообщение от Игорь1986 Посмотреть сообщение
а ты вижу главный критик
нет, не главный, и не против, чтобы меня критиковали - мотивирует хорошо ;)

0
18.09.2015, 11:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.09.2015, 11:53
Привет! Вот еще темы с ответами:

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

Упорядочить по алфавиту буквы каждого слова и удалить слова, содержащие одинаковые буквы
Преобразовать данное предложение, упорядочив по алфавиту буквы каждого слова и...

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


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

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

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