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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.05.2011, 18:03   #1
Анастасья
Пользователь
 
Регистрация: 16.11.2010
Сообщений: 24
Вопрос Ошибка. Упорядочены ли буквы по алфавту

Программа выдает неверное решение.. помогите найти ошибку..
Код:
Program Project3;
{$APPTYPE CONSOLE}
{Программа позволяет определить,  упорядочены ли буквы по алфавиту в непустом
тексте  из  прописных русских бкув, за которым следует точка}
uses
  SysUtils,
  windows;

const
  nmax=100;
  eot= '.';
  Nlet=33;

type
  TRusletter=array[1..Nlet] of char;
  TTxt= array[1..nmax] of char;
const
  Rus: TRusletter=('а','б','в','г','д','е','ё','ж','з','и','й','к','л','м','н',
  'о','п','р','с','т','у','ф','х','ц','ч','ш','щ','ъ','ь','ы','э','ю','я');
var
  t:TTxt;
  n:integer;

function Nam_Rus ( K:char):integer;{функция возвращает номер русской букве}
var
  i:integer;
  rus: TRusletter;
  ok: boolean;
begin
  ok:=false;
  i:=1;
  while not ok and (i<=Nlet) do
    if k = rus[i] then
      ok:= true
    else
      inc(i);
  if ok then
   result:=i
  else
   result:=0
end;

procedure read_txt (var tx:TTxt; var n:integer);{эта процеура записывае текст}
var
  i:integer;
begin
  i:=0;
  repeat
    repeat
      inc(i);
    until eoln or (i=nmax)or (tx[i]=eot);
    readln;
  until (i=nmax) or(tx[i]=eot);
  if tx[i]<>eot then
    n:=i  {реальная длинна массива}
  else
    n:= i-1;
end;

function yporyadocheno_li( var txt:TTxt; n:integer): boolean;
var
  i:integer;
  ok:boolean;
  pnr:integer;  {номер предидущей русской буквы}
  tnr:integer;  {номер текущей русской буквы}
begin
  ok:= true;
  pnr:=Nam_Rus(txt[1]);
  i:=2;
  while ok and (i<= n) do
   begin
     tnr:= Nam_Rus(txt[i]);
     if tnr=0 then
       inc(i)
     else
       if pnr<=tnr then
         begin
           inc(i);
           pnr:=tnr;
         end
       else
         ok:=false;
   end;
   if Nam_Rus(txt[i])>Nam_Rus(txt[i+1]) then
     ok:=false
    else
      inc(i);
  result:=ok
end;

begin
  setconsolecp(1251);
  SetConsoleOutputCP(1251);
  writeln('Введите текст  из  маленьких  русских  букв оканчивающийся точкой');
  read_txt(t,n);
  if  yporyadocheno_li(t,n)then
    writeln ('Упорядочены')
  else
    writeln('не упорядочены');
  readln;
 End.


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это не знак решёточи, это КНОПОЧКА с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 30.05.2011 в 11:46.
Анастасья вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
упорядочены ли буквы по алфавиту в задаче Анастасья Помощь студентам 1 15.05.2011 16:57
упорядочены ли буквы по алфавиту Анастасья Помощь студентам 1 11.04.2011 21:14
определить упорядочены ли буквы по алфавиту(Delphi7) Анастасья Помощь студентам 0 10.04.2011 13:31
если элементы k-й строки матрицы упорядочены по убыванию, иначе 0 nesss Помощь студентам 1 01.11.2010 15:41
Странная ошибка (без буквы Т) garyanikin Общие вопросы Delphi 3 19.01.2010 11:03