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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2015, 01:39   #1
Gonzo_Reality
Новичок
Джуниор
 
Регистрация: 14.12.2015
Сообщений: 2
По умолчанию Работа со строками (Pascal)

Задан текст, если его слово состоит только из строчных латинских букв, проверить:
1) если слово упорядоченное по алфавиту (a..z), оставить как есть;
2) в противном случае упорядочить по алфавиту в обратном порядке (z..a).

Процедура замены уже есть, не могу догнать куда две проверки вставить, чтобы все корректно работало.
Код:
program prog6;
uses crt;
const
    m=2;
    s_abc=['a'..'z'];
var   
   symb: char;
   str: array[1..m] of string;
   s:string;
   i,j,n: byte;
 
procedure input;
var
    p:integer;
begin  
   writeln('Vvedite text: ');
   for p:=1 to m do 
      readln(str[p]);     
end;
 
procedure search;
var
    i,j,p,n: integer;
    ch:char;
begin         
    for p:=1 to m do
    begin
      n:=length(str[p]);
      
             
      for i:=1 to n-1 do 
        for j:=i+1 to n do     
                if (str[p][i]<str[p][j]) then 
                begin
                  ch:=str[p][i];
                  str[p][i]:=str[p][j];
                  str[p][j]:=ch;
                end;              
    end;             
end;
    
procedure output;
var 
    p:integer;
begin
    for p:=1 to m do
        write(str[p],' ');    
end;
 
begin
 
  repeat
      input;
      writeln;
      search;
      writeln;      
      output;
      writeln;
      writeln;
      write('Vvesti drugoi text? (y/n): '); readln(symb);
      writeln;
      writeln;
   until (symb = 'n') or (symb = 'N');
end.
Gonzo_Reality вне форума Ответить с цитированием
Старый 14.12.2015, 09:43   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

как тут пишут: максимум структурируй. Проверку выноси в отдельную функцию которая возвращает True или False.

Код:
uses crt;
var txt:string;
  count:byte;

function compareAZ(s:string):boolean;
var i:byte;f:boolean;
begin
 f:=true;
 for i:=1 to length(s) do
  begin
   if not (s[i] in ['a'..'z']) then
    begin
     f:=false;
     break
    end
  end;
 compareAZ:=f;
end;

function sort(s:string;path:string):string;
var i,j:byte;sl:char;
begin
  if path= 'az' then
    begin
      for i:=1 to length(s)-1 do
       for j:=i+1 to length(s) do
        if s[i]>s[j] then
         begin
          sl:=s[i];
          s[i]:=s[j];
          s[j]:=sl;
         end
     end
     else
     begin
      for i:=1 to length(s)-1 do
       for j:=i+1 to length(s) do
        if s[i]<s[j] then
         begin
          sl:=s[i];
          s[i]:=s[j];
          s[j]:=sl;
         end;
    end;

 sort:=s;
end;

procedure inputAndSplit(s:string);
var i:byte;
   sl,sAZ,sZA:string;
begin
 s:=s+' ';
 sl:='';
 for i:=1 to length(s) do
  begin
    if s[i] <> ' ' then
     sl:=sl+s[i]
    else
    if (s[i]=' ') and (sl<>' ') then
     begin
      writeln;
      writeln('SLOVO : "',sl,'"');
      sAZ:=sort(sl,'az');
      sZA:=sort(sl,'');
      if compareAZ(sl) then
       begin
        writeln('in (a..z) set = TRUE');
        if sAZ=sl then
         writeln('AZsort = TRUE; ',sl,' => ',sl)
        else
         writeln('AZsort = FALSE; ',sl,' => ',sZA);
       end
      else
       writeln('in (a..z) set = FALSE ');

      sl:='';
     end
  end;
end;

BEGIN
 clrscr;
 writeln('Input Line');
 readln(txt);
 inputAndSplit(txt);
 readln;
END.
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.

Последний раз редактировалось Stilet; 14.12.2015 в 12:20.
Aleksandr H. вне форума Ответить с цитированием
Старый 16.12.2015, 19:11   #3
Gonzo_Reality
Новичок
Джуниор
 
Регистрация: 14.12.2015
Сообщений: 2
По умолчанию

спасибо, вы очень помогли :D
Gonzo_Reality вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со строками Pascal ksenija15reg Помощь студентам 3 28.11.2013 23:25
Работа со строками Pascal decantnik Помощь студентам 3 12.03.2011 22:46
Работа со строками (Pascal) Volk_xD Помощь студентам 8 17.12.2010 20:06
Работа со строками (pascal) Marlin Помощь студентам 7 03.06.2010 14:11
Работа со строками (pascal) ДиM@ Помощь студентам 3 18.04.2010 09:39