Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Паскаль]строковый тип 
:(
    Опции темы
natasha92
Дата 20.9.2009, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 14.9.2009

Репутация: -1
Всего: -1



дана последовательность, содержащая от 2 до 30 слов, в каждом из которых от 2 до 10 латинских букв; между соседними словами - не менее одного пробела, за последним словом точка. напечатать все слова, отличные от последнего слова, предварительно преобразовав каждое из них по следующему правилу:
- удалить из слова последнюю букву
помогите решить)))))))))))))))))))))))


PM MAIL   Вверх
ИванМ
Дата 20.9.2009, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 13
Всего: 23



Код

uses crt;

type
TStrArr=array[1..30] of string;
var
arr: TStrArr;
str: string;
size: integer;

function split(var s: string): boolean;
var
   i, start, num: integer;
   space: boolean;
   point: boolean;
   succ: boolean;
begin
     space:=false;
     point:=false;
     succ:=true;
     num:=1;
     start:=1;
     for i:=1 to length(s) do
     begin
          if s[i]=' ' then
          begin
               if space=false then
               begin
                    if length(arr[num])<2 then
                    begin
                       writeln('Error: string "',arr[num],'" too short');
                       succ:=false;
                    end;
                    delete(arr[num], length(arr[num]), 1);
                    inc (num);
                    if num>30 then
                    begin
                       writeln('Error: number of strings too large');
                       succ:=false;
                       break;
                    end;
               end;
               space:=true;
          end
          else if s[i] in ['A'..'z'] then
          begin
               space:=false;
               arr[num]:=arr[num]+s[i];
               if length(arr[num])>10 then
               begin
                  writeln('Error: string "',arr[num],'" too large');
                  succ:=false;
               end;
          end
          else if s[i]='.' then
          begin
               if length(arr[num])<2 then
               begin
                  writeln('Error: string "',arr[num],'" too short');
                  succ:=false;
               end;
               delete(arr[num], length(arr[num]), 1);
               point:=true;
               break;
          end
          else
          begin
               writeln('Error: unresolved symbol "',s[i],'"');
               succ:=false;
               {break;}
          end;
     end;
     if not point then
     begin
          writeln('Error: "." expected');
          succ:=false;
     end;
     if num<2 then
     begin
           writeln('Error: number of words too short');
           succ:=false
     end;
     size:=num;
     split:=succ;
end;

procedure writeall;
var i: integer;
begin
     for i:=1 to size do
     begin
          writeln(arr[i]);
     end;
end;

procedure writenotequlast;
var
   i: integer;
   str: string;

begin
     str:=arr[size];
     for i:=1 to size-1 do
     begin
          if arr[i]<>str then
             writeln(arr[i]);
     end;
end;

begin
     clrscr;
     readln(str);
     if split(str) then
     begin
          writeln;
          writeln('All words:');
          writeall;
          writeln;
          writeln('Words <> last:');
          writenotequlast;
     end;
     readkey;
end.



Это сообщение отредактировал(а) ИванМ - 20.9.2009, 18:30
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0387 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.