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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2013, 21:33   #1
nadyaH
Форумчанин
 
Регистрация: 24.10.2013
Сообщений: 130
По умолчанию Дана строка, содержащая цифры и строчные латинские буквы. Если буквы в строке упорядочены по алфавиту, то вывести 0; в противном

Дана строка, содержащая цифры и строчные латинские буквы. Если буквы в строке упорядочены по алфавиту, то вывести 0; в противном случае вывести номер первого символа строки,нарушающего алфавитный порядок.
(делфи 7)
нужна помощь в исправлении ошибок .
Код:
var
Dano:string; 
Otvet:integer;
N1,N:integer; 
i:integer;
begin
DAno:=EDIT1.Text;
otvet:=0;
N:=0;
N1:=0;
for i:=1 to length(Dano) do
begin
case Dano[i] of
'A':n1:=1;
'B':n1:=2;
'C':n1:=3;
'D':n1:=4;
'E':n1:=5;
'F':n1:=6;
'G':n1:=7;
'H':n1:=8;
'I':n1:=9;
'J':n1:=10;
'K':n1:=11;
'L':n1:=12;
'M':n1:=13;
'N':n1:=14;
'O':n1:=15;
'P':n1:=16;
'Q':n1:=17;
'R':n1:=18;
'S':n1:=19;
'T':n1:=20;
'U':n1:=21;
'V':n1:=22;
'W':n1:=23;
'X':n1:=24;
'Y':n1:=25;
'Z':n1:=26;
end;
if N=0 then N:=N1;
if (N-N1)>0 then Begin Otvet:=i; break;end
else N:=N1;
end;
EDIT2.Text:=INTTOSTR(Otvet);
end;END.
nadyaH вне форума Ответить с цитированием
Старый 15.11.2013, 21:48   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

так устроит?
Код:

var
  Dano:string; 
  Otvet:integer;
  i:integer;
begin
  Dano:=EDIT1.Text;
  otvet:=0;
  for i:=1 to length(Dano)-1 do
  begin
   if Dano[i]<Dano[i+1]  then Begin Otvet:=i+1; break; end
   else N:=N1;
  end;
  EDIT2.Text:=INTTOSTR(Otvet);
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.11.2013, 21:53   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
c:=#0;
for i:=1 to Length(dano) do begin
 if dano[i] in ['A'..'z'] then begin
  if dano[i]>c then c:=dano[i] else begin write(i);break;end;
 end;
end;
Где c:char.

Идея ясна?

Upd: Цифры тоже чтоле должны участвовать в проверке?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.11.2013, 22:07   #4
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
else N:=N1;
Это фича или баг? (Вангую осталось со времен кода ТС)

Цитата:
['A'..'z']
А если я решу побаловаться [, \, ], ^, - ?
Уж лучше ['A'..'Z', 'a'..'z'] или вообще if UpCase (dano[i]) in ['A'..'Z'] then

ТС, не забудьте вывести 0 в варианте Виталия!
Poma][a вне форума Ответить с цитированием
Старый 15.11.2013, 22:44   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
Цитата:
else N:=N1;
Это фича или баг? (Вангую осталось со времен кода ТС)
Вангование прошло успешно. Вы правы, этот рудимент остался от старого кода.. И, разумеется, от так же нужен, как человеку хвост!
Его надо выкинуть.
но, хуже другое.
насколько я понимаю, я ещё и условие перепутал.надо так:
Код:
var
  Dano:string; 
  Otvet:integer;
  i:integer;
begin
  Dano:=EDIT1.Text;
  otvet:=0;
  for i:=1 to length(Dano)-1 do
     if Dano[i]>Dano[i+1]  then begin Otvet:=i+1; break; end
  EDIT2.Text := IntToStr(Otvet);
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.11.2013, 18:00   #6
nadyaH
Форумчанин
 
Регистрация: 24.10.2013
Сообщений: 130
По умолчанию

не правильно программа работает.
Если буквы в строке упорядочены по алфавиту, то вывести 0; в противном случае вывести номер первого символа строки,нарушающего алфавитный порядок.
nadyaH вне форума Ответить с цитированием
Старый 16.11.2013, 18:01   #7
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
не правильно программа работает.
Прув?
Приведите пример теста, при котором программа работает не правильно!
Poma][a вне форума Ответить с цитированием
Старый 16.11.2013, 19:32   #8
nadyaH
Форумчанин
 
Регистрация: 24.10.2013
Сообщений: 130
По умолчанию

вводим :abct
выводит: 0
a должен выводить номер первого символа строки,нарушающего алфавитный порядок.
nadyaH вне форума Ответить с цитированием
Старый 16.11.2013, 19:37   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
abct
И где в строке нарушение порядка алфавита? az тоже упорядочены по алфавиту

Цитата:
a < b < c < t..
Именно это называется алфавитный порядок!
Думаю в условиях этой задачки abbccc тоже
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 16.11.2013 в 19:40.
Аватар вне форума Ответить с цитированием
Старый 16.11.2013, 19:38   #10
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Господи...
a < b < c < t..
Именно это называется алфавитный порядок!

Если Вы проверить является ли данная строка алфавитом, то есть 2 варианта..

Код:
const
	abc = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
	
var
	s : string;
	i : Integer;
begin
	ReadLn (s);
	
	i := Length(s);
	while Pos (s, abc) <> 0 do begin
		Delete (s, Length(s), 1); Dec (i)
	end;
	
	WriteLn (Ord (i = Length(s))*i)
end.
Банальный..
Код:
i := 0;
while (s[i+1] = Succ(s[i+2])) and (i < Length(s)-1) do
     Inc (i);
Цитата:
Думаю в условиях этой задачки abbccc тоже
Совершенно верно.. Мой косяк.. Спасибо!

Последний раз редактировалось Poma][a; 16.11.2013 в 19:50.
Poma][a вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дана строка. Преобразовать в ней все строчные буквы в прописные. Ginger_93 Помощь студентам 2 22.03.2012 15:17
Преобразовать все строчные латинские буквы в прописные, а цифры заменить символом *. (Delphi) Dark Raven Помощь студентам 1 19.01.2012 14:53
упорядочены ли буквы по алфавиту в задаче Анастасья Помощь студентам 1 15.05.2011 16:57
упорядочены ли буквы по алфавиту Анастасья Помощь студентам 1 11.04.2011 21:14
Строки. преобразовать прописные латинские буквы в строчные Antonio_getscool Помощь студентам 5 12.03.2010 09:43