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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2011, 20:13   #1
repchic
Пользователь
 
Регистрация: 07.12.2011
Сообщений: 19
По умолчанию строки в паскале

пожалуйста сделайте,кто может след. задачу на паскале:Дана строка символов.
Найти в тексте самое длинное слово и вывести это слово на монитор в обратном порядке.
repchic вне форума Ответить с цитированием
Старый 07.12.2011, 21:13   #2
Leshii
Форумчанин
 
Регистрация: 26.07.2011
Сообщений: 376
По умолчанию

Значит вот тебе нахождение длинного слова, а ниже возможность его перевернуть.


Код:
uses crt;
var 
    i, n, l, max, k, j: longint;
    a, b, s:string;
    c:char;
    s1:array[1..60]of string;
    s2:array[1..60]of longint;
 begin
  clrscr;
   write('Vvedite stroky s: ');
   readln(a);
   l:=length(a)+1;a[l]:=' ';
   for i:=1 to l do
    if a[i]=' ' then begin
       inc(j);s1
       [j]:=b;
       s2[j]:=length(b);
       b:=' ';
       end
    else b:=b+a[i];
   max:=s2[1]; k:=1;
   for i:=1 to j do begin
     if max<s2[i] then begin 
        max:=s2[i];k:=i; 
     end;
    end;
   writeln('samoe dlinnoe: ',s1[k]);

  readln;
end.

Код:
-------------
n:=length(s) div 2;
for i:=1 to n do begin
    c:=s[i];
    s[i]:= s[length(s)-i+1];
    s[length(s)-i+1]:=c;
end;
writeln(s);
--------------
Люблю на ты.Я человек простой
Leshii вне форума Ответить с цитированием
Старый 08.12.2011, 06:27   #3
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Лешак, зачем тебе массив строк и длинных (!) целых для такой простой задачи?
Код:
  readln(s);
  i:= 1;
  w:= '';
  x:= '';
  while i<Length(s) do begin
    if s in ['A'..'Z']+['a'..'z'] then w:= w+s[i]
    else begin
      if Length(w)>Length(x) then x:=w;
      w:= ''
    end
  end;
  if Length(w)>Length(x) then x:=w;
А для того, чтобы слово _вывести_на_монитор_ в обратном порядке, совсем не нужно его реально переворачивать..
Код:
for i:=Length(x) downto 1 do write(x[i]);
И еще - трюк с прибавлением к строке пробела кажется поначалу даже изящным, но только до тех пор, когда у тебя один из тестов на олимпиаде не пройдет по длине строки.. Так что старайся избегать (если, конечно, это обычные турбо-паскалевские строки, ограниченные по длине).
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 08.12.2011, 14:01   #4
Leshii
Форумчанин
 
Регистрация: 26.07.2011
Сообщений: 376
По умолчанию

Я уже замасивился. Нынче даже своим одни сплошные массивы делаю.

Да вот, беда. Уже после понял, что ну совсем жуть написал. Жуть всмысле с циклом.
for ...:= () downto () do ( а ведь серьёзно, уже в простых задачах скрытый смысл ищу ). Так пора отвлечься.

Касательно олимпиад всегда думаю что завалю или же не готов. Да и как-то всё впопыхах происходит ( ну вот скажем купил книгу по делфи, а время почитать нахожу только на парах ). Ведь серьёзно то программированием занялся меньше года назад. Да и не вундеркинд я. ( как там в той старой детской сказке: "я ещё не волшебник, но только учусь " ). Так что обучения у меня происходит скачками ( хоть и учусь на педагога ). Ну это так из аля жалкие жалобы студента

И насколько понял у многих это изучение занимает порой целую жизнь.
Люблю на ты.Я человек простой
Leshii вне форума Ответить с цитированием
Старый 10.12.2011, 07:41   #5
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Цитата:
Сообщение от Leshii Посмотреть сообщение
Да вот, беда.
Все Okay )). Я имел в виду совершенно конкретные вещи касательно конкретного года. Не заморачивайся, если хочешь потрепаться - пиши в личку.
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 10.12.2011, 23:14   #6
repchic
Пользователь
 
Регистрация: 07.12.2011
Сообщений: 19
По умолчанию

Благодарю Leshii

Leshii что-то слово не переворачивается, помоги пожалуйста

Благодарю TinMan

Последний раз редактировалось Stilet; 11.12.2011 в 15:26.
repchic вне форума Ответить с цитированием
Старый 11.12.2011, 15:22   #7
repchic
Пользователь
 
Регистрация: 07.12.2011
Сообщений: 19
Печаль

Цитата:
Сообщение от Leshii Посмотреть сообщение
Значит вот тебе нахождение длинного слова, а ниже возможность его перевернуть.


Код:
uses crt;
var 
    i, n, l, max, k, j: longint;
    a, b, s:string;
    c:char;
    s1:array[1..60]of string;
    s2:array[1..60]of longint;
 begin
  clrscr;
   write('Vvedite stroky s: ');
   readln(a);
   l:=length(a)+1;a[l]:=' ';
   for i:=1 to l do
    if a[i]=' ' then begin
       inc(j);s1
       [j]:=b;
       s2[j]:=length(b);
       b:=' ';
       end
    else b:=b+a[i];
   max:=s2[1]; k:=1;
   for i:=1 to j do begin
     if max<s2[i] then begin 
        max:=s2[i];k:=i; 
     end;
    end;
   writeln('samoe dlinnoe: ',s1[k]);

  readln;
end.

Код:
-------------
n:=length(s) div 2;
for i:=1 to n do begin
    c:=s[i];
    s[i]:= s[length(s)-i+1];
    s[length(s)-i+1]:=c;
end;
writeln(s);
--------------
Leshii что-то слово не переворачивается
repchic вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строки в паскале neomax38 Помощь студентам 1 17.12.2010 15:26
строки в паскале swedalena Помощь студентам 2 23.05.2010 17:39
Строки в паскале A.S.W Помощь студентам 2 07.01.2010 17:19
Строки В ПАСКАЛЕ hohol90 Помощь студентам 2 03.12.2009 16:31
Строки с паскале Dog Помощь студентам 2 11.10.2009 19:49