0 / 0 / 0
Регистрация: 07.04.2018
Сообщений: 30
1

Поменять местами слова в строке

01.05.2018, 13:50. Показов 2874. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как такая программка пишется ?
Мы должны поменять слова с номерами n и k. Я пытался , но безуспешно.

Добавлено через 36 минут
Идея есть. Я должен найти эти два слова . Найти их позицию и вставить в новую строку уже в обратном порядке. Но вот как все это грамотно написать я пока не додумал.

Добавлено через 58 секунд
При этом я делал так , что я вводил строку и вводил 2 слова которые нужно поменять. Но не знаю правильно ли так или нет.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.05.2018, 13:50
Ответы с готовыми решениями:

Поменять местами слова в строке
Помогите пожалуйста с задачкой, на вид не сложная, но со строками я не очень дружу. Дана строка,...

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

Поменять местами слова с максимальной и минимальной длиной при условии, что такие слова единственные
Поменять местами слова с максимальной и минимальной длиной при условии, что такие слова...

Если первая буква второго слова совпадает с последней буквой третьего слова, поменять местами второе и третье
Дан текст, слова которого отделяются друг от друга пробелами. Если первая буква второго слова...

2
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
01.05.2018, 14:16 2
Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

Pascal
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
36
37
38
39
40
41
42
43
44
var s,s1,sn,sk:string;
    i,j,q,n,k,ni,ki:integer;
begin
writeln('Введите строку из не менее чем 2 слов, разделенных пробелами');
readln(s);
s:=' '+s+' '; //добавим пробелы в начало и в конец для удобства
//подсчитаем слова
q:=0;
for i:=2 to length(s)-1 do
if (s[i]<>' ')and(s[i-1]=' ') then q:=q+1;//если не пробел, а перед ним пробел, новое слово
repeat
writeln('Введите номера слов для обмена 0<n<k<=q');
readln(n,k);
until(n>0)and(k>n)and(k<=q);
q:=0;
for i:=2 to length(s)-1 do
if (s[i]<>' ')and(s[i-1]=' ') then
 begin
  q:=q+1;//считаем слова
  s1:='';
  j:=i;
  while(j<=length(s))and(s[j]<>' ') do //составим его
   begin
    s1:=s1+s[j];
    j:=j+1;
   end;
  if q=n then
   begin
    sn:=s1;
    ni:=i;
   end
  else if q=k then
   begin
    sk:=s1;
    ki:=i;
   end;
 end;
delete(s,ki,length(sk));//удалим сначала второе
insert(sn,s,ki);//вставим первое
delete(s,ni,length(sn));//потом удалим первое
insert(sk,s,ni); //вставим второе
delete(s,1,1); //удалим первый пробел
write(s);
end.
2
0 / 0 / 0
Регистрация: 07.04.2018
Сообщений: 30
01.05.2018, 15:16  [ТС] 3
Спасибо огромное. Идеально все сделано. Осталось мне во всем этом разобраться. А то препод по шапке надает.
0
01.05.2018, 15:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.05.2018, 15:16
Помогаю со студенческими работами здесь

Найти в каждой строке наибольший элемент и поменять его местами с элементом главной диагонали в этой же строке
Дана целочисленная квадратная матрица. Найти в каждой строке наибольший элемент и поменять его...

Поменять слова местами
Здравствуйте! Помогите, пожалуйста, дописать программу. Задание: ввести массив из 10 слов,...

поменять местами слова How do you do на do how do you
поменять местами слова How do you do на do how do you помогите...

Поменять местами символы в строке
поменять местами символы в строке:первый с последним, второй с предпоследним и т.д.. что не...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru