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

Переставить местами слово с минимальной длиной и последнее слово

08.03.2011, 21:50. Показов 733. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дана строка символов, содержащая не менее 6 слов разной длины.
Переставить местами слово с минимальной длиной и последнее слово

Слова:
да, нет, ночь, супер, курица, толстяк

Решить задачу с помощью функции.


И переделать эту задачу c функциями

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Const
n=15;
Var
K:array [1..n] of integer;
prod: integer;
i:integer;
begin
for i:=1 to n do begin
readln (K[i]);
if (K[i] mod 3<>0) and (K[i] mod 5=0) then
prod:=prod*k[i];
end;
writeln (prod);
readln;
end.
Заранее очень благодарен!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.03.2011, 21:50
Ответы с готовыми решениями:

Переставить местами слово с минимальной длиной с последним словом
Дана строка симолов, содержащая 6 слов разной длины. Переставить местами слово с минимальной...

Строка: Поменять местами слово, содержащее максимальное число гласных и слово с минимальной длиной.
1)Поменять местами слово, содержащее максимальное число гласных и слово с минимальной длиной....

Переставить местами слово с минимальной длинной с последним словом
Дана строка симолов, содержащая 6 слов разной длины. Переставить местами слово с минимальной...

Функция меняющая местами последнее слово строки на слово с указанным номером
Помогите сделать функцию,которая в указанной строке меняет местами последнее слово и слово,номер...

2
483 / 427 / 205
Регистрация: 04.03.2011
Сообщений: 1,259
08.03.2011, 22:07 2
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
uses wincrt;
var
       n : array[1..100] of byte;
       s : string[100];
    i, m : byte;
      s1 : array [1..20] of string[20];
 
   s_min,
   s_max : string[20];
                                                   {  перемещает наименьшее и найболшее слова местами }
   k_min,
   k_max,
     min,
  max, j : byte;
 
 
 begin
 
  writeln('Введите строку : ');  readln(s);
 
    s:= s + ' ';
    m:= ord( s[0] );
  min:= 100;
    j:= 1;
                                               {                                     }
   for i:= 1 to m do                           {                                     }
    begin                                      {                                     }
         s1[j] := s1[j] + s[i];                {   pазбиваем строку на массив слов   }
          n[j] := i;                           {                                     }
                                               {                                     }
         if s[i] = ' '                         {                                     }
            then                               {                                     }
                j:= j + 1;
    end;
 
    for i:= 1 to j-1 do
      begin
 
           if length( s1[i] ) > max
              then
                  begin
                      s_max := s1[i];                          {   максимальное длинной слово    }
                        max := length( s1[i] );                 {     длинна макс. дл. слова      }
                      k_max := n[i] - max + 1;                   {       позиция макс. дл. слова   }
                  end;
 
            if length( s1[i] ) < min
              then
                  begin
                      s_min := s1[i];                            {    минимальное длинной слово  }
                        min := length( s1[i] );                   {          длинна               }
                      k_min := n[i] - min + 1;                     {         позиция               }
                  end;
 
       end;
 
 
  delete(s, k_max, max);
     insert(s_min, s, K_max);
 
  if k_min < k_max
 
     then
         begin
             delete(s, k_min, min);
               insert(s_max, s, K_min);
         end
 
     else
         begin
             delete(s, k_min - (max - min), min);
               insert(s_max, s, k_min - (max - min));
          end;
 
  writeln(s);
 
 
end.
Вот есть почти идентичная программа, тебе лишь в конце остается переделать немного ( ну и через функцию сделать). =)
1
13095 / 5876 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
08.03.2011, 23:04 3
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
program Project1;
 
//Меняет местами первое из самых коротких слов с последним словом.
function ProcStr(const aStr : String) : String;
const
  //Множество разделителей слов.
  D = [' ', '.', ',', ':', ';', '!', '?', '-', #9, #10, #13];
var
  S, W1, W2 : String;
  i, Pos1, Pos2, PosW, Len, LenW, LenWMin : Integer;
begin
  S := aStr;
  //Поиск координат первого из самых коротких слов
  //и координат последнего слова.
  Len := Length(S);
  LenWMin := Len;
  PosW := 0;
  Pos1 := 0;
  Pos2 := 0;
  for i := 1 to Len do begin
    //Пропускаем разделители.
    if S[i] in D then Continue;
    //Отслеживаем начало слова.
    if (i = 1) or (S[i - 1] in D) then Pos1 := i;
    //Отслеживаем конец слова.
    if (i = Len) or (S[i + 1] in D) then begin
      Pos2 := i;
      //Вычисляем длину очередного найденного слова.
      LenW := Pos2 - Pos1 + 1;
      //Если это слово короче всех ранее найденных слов, то
      //запоминаем его координаты и его длину.
      if LenW < LenWMin then begin
        LenWMin := LenW;
        PosW := Pos1;
      end;
    end;
  end;
 
  //После выхода из предыдущего цикла имеем:
  //Pos1, Pos2 - координаты последнего слова в тексте.
 
  //Меняем местами слова.
  if Pos1 <> PosW then begin
    W1 := Copy(S, PosW, LenWMin);
    LenW := Pos2 - Pos1 + 1;
    W2 := Copy(S, Pos1, LenW);
    Delete(S, Pos1, LenW);
    Insert(W1, S, Pos1);
    Delete(S, PosW, LenWMin);
    Insert(W2, S, PosW);
  end;
 
  ProcStr := S;
end;
 
var
  S : String;
begin
  repeat
    //Исходный текст.
    Writeln('Задайте текст:');
    Readln(S);
 
    //Решение задачи.
    S := ProcStr(S);
 
    //Показываем результат.
    Writeln('Текст после обработки:');
    Writeln(S);
 
    Writeln('Повторить - Enter. Выход - любой символ + Enter.');
    Readln(S);
  until S <> '';
end.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.03.2011, 23:04
Помогаю со студенческими работами здесь

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

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

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

Последнее слово строки длиной 30 символов поставить в начало
ДОбрый день! 10 Rem LABELS 20 Rem #4,&quot;VOLUME&quot;; Read #4%214,P6$; Close #4 30 Goto 200 40...


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

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

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