Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.10.2013, 15:08   #1
Flower2
Пользователь
 
Регистрация: 27.10.2013
Сообщений: 22
По умолчанию Поменять местами первое и последнее слово. Паскаль

Дано предложение. Поменять местами первое и последнее слово. Напишите пожалуйста с объяснением. Находила похожую задачу, но там используется массив, не знаю нужен ли он вообще и для чего.
Flower2 вне форума Ответить с цитированием
Старый 31.10.2013, 15:18   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
не знаю нужен ли он
Так спроси у преподавателя.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.10.2013, 15:30   #3
Flower2
Пользователь
 
Регистрация: 27.10.2013
Сообщений: 22
По умолчанию

Код:
Program prac;
uses crt;
var a: array [1..100] of string;
    s, sl: string;
    i, j, k: integer;
begin
write ('s='); readln (s);
s:=s+' ';
sl:='';
j:=1;
for i:=1 to length (s) do
   if s[i]<>' ' then
      sl:=sl+s[i]
      else
          begin
          a[j]:=sl;
          inc(j);
          sl:='';
          end;
k:=j-1;
write ('s=');
write (a[k],' ');
for j:=2 to k-1 do
    write (a[j],' ');
write (a[1]);
end.
Вот программа работающая, только я тут почти ничего не понимаю
Flower2 вне форума Ответить с цитированием
Старый 31.10.2013, 15:45   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вот моя версия:
Код:
var
  s:string;i,j:integer;
begin
  //Наша строка
  s:='hello my world';

  // Вычисляем место первого слова
  for i:=1 to length(s) do if s[i]=' ' then break;

  //Вычисляем место последнего слова
  for j:=length(s) downto 1 do if s[j]=' ' then break;

  // Выводим сначал последнее
  write(copy(s,j,length(s)));

  // Потом то что между ними
  write(copy(s,i,j-i+1));

  //Потом первое
  write(copy(s,1,i));

  readln;
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.10.2013, 15:47   #5
Flower2
Пользователь
 
Регистрация: 27.10.2013
Сообщений: 22
По умолчанию

А что за оператор break?
Flower2 вне форума Ответить с цитированием
Старый 31.10.2013, 15:48   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Прерывает цикл. Если нашли пробел - выйти из цикла.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.10.2013, 15:55   #7
Flower2
Пользователь
 
Регистрация: 27.10.2013
Сообщений: 22
По умолчанию

Спасибо огромное, разобралась
Flower2 вне форума Ответить с цитированием
Старый 31.10.2013, 16:02   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Наздоровье )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.10.2013, 19:20   #9
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Вот моя версия:
Абаладеть..я бы точно менял без вот таких вот фишек.. красота.. Автор пиши еще! (а не играй в таймшифт )
Но позволю вставить свои 5 копеек.. в своё время (в этом учеб году), мне однажды снизили оценку на балл, за то, что задача была составить число, а я вывел его (в виде n mod 10, n div 10, etc).. так что предлагаю поступить именно так, как этого требует задание..
Код:
s := copy(s,j,length(s)) + copy(s,i,j-i+1) + copy(s,1,i);
Poma][a вне форума Ответить с цитированием
Старый 31.10.2013, 20:41   #10
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

И ещё небольшое замечание.
В Паскале использование переменной цикла в не тела цикла проходит, в силу принципа объявления переменных до исполняемого кода.
Но например, в том же С++, когда переменная цикла объявляется в самом теле:
Код:
for (int i = 1; i < 50; i++)  ...
использовать переменную цикла вне цикла не прокатит.
Так думаю, что хотя и немного накладнее, но все же лучше заводить отдельные переменные.
Но это ...


Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
в строке поменять 1 и последнее слово местами. Программа есть только нужно сделать всё в 1 строке lect111 Паскаль, Turbo Pascal, PascalABC.NET 0 04.12.2012 15:47
поменять местами первое слово со вторым.. 3 и 4 5 и 6 7 и 8 kiruka4 Qt и кроссплатформенное программирование С/С++ 1 03.01.2012 13:26
поменять местами первое слово со вторым.. 3 и 4 5 и 6 7 и 8 kiruka4 Общие вопросы C/C++ 0 22.12.2011 18:45
Поменять местами первое и последнее слова в предложении. alex.dadaev Помощь студентам 0 17.03.2011 09:39