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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2010, 18:34   #1
Irusik
 
Регистрация: 10.10.2010
Сообщений: 8
Сообщение Паскаль

Скажите, пожалуйста, правильно ли решена задача, а еще откуда взялись некоторые данные и что они обозначают.

Составить программу для выполнения указанного ниже задания. Найти номер позиции первой цифры в строке

program proba;
uses crt;
var S: string;
i,n: integer;
begin
write ('введите строку:S='); readln (S);
for i:=1 to length(S) do
if (ord(S[i])>46) and (ord(S[i])<58) then
begin
n:=1;
break;
end;
writeln('первая цифра стоит на', n , ' -ой позиции в строке');
readln;
end.

Мне не понятно, что означает (length(S)), (ord(S[i])>46) и откуда взялось 46, (ord(S[i])<58) и откуда взялось 58, что означает break
Irusik вне форума Ответить с цитированием
Старый 22.12.2010, 18:55   #2
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

Цитата:
n:=1;
Как-то странно, получается если есть какая либо цифра в строке она всегда будет на 1-ой позиции. Тут нужно n:=i;
Цитата:
(length(S))
Длина строки S
Цитата:
(ord(S[i])>46) и откуда взялось 46, (ord(S[i])<58)
Это коды цифр 0-9 которые еще и не правильно указаны. Должно быть:
(ord(S[i])>=48) and (ord(S[i])<=57)

функция ord преобразовавыет из символа в код, и если код очередного символа строки попадает в диапазон от 48 до 57 то это цифра.

Процедура break прерывает выполнение цикла в котором используется эта процедура.

Последний раз редактировалось Базиля; 22.12.2010 в 18:58.
Базиля вне форума Ответить с цитированием
Старый 22.12.2010, 18:55   #3
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

1) length(S) это функция которая определяет длину строки!
2) ord(S[i]) это функция которая определяет код символа по ASCII кодировке!
P.S.: Смотри ASCII таблицу
3) 46 и 57 это для сравнения кодов! Хотя если смотреть таблицу ASCII
то цифры начинаются с 48 по 57 так что подправь на
if (ord(S[i])>=48) and (ord(S[i])<=57) then
4) break это нужно что бы прервать массив! То есть мы прогоняем массив ищем цифры и как только нашли дальше прогонять цикл нет смысла и мы его останавливаем и выходим из него
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 22.12.2010, 18:58   #4
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

Цитата:
break это нужно что бы прервать массив!
Извините, что прервать?
Базиля вне форума Ответить с цитированием
Старый 22.12.2010, 19:05   #5
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Цитата:
Сообщение от Базиля Посмотреть сообщение
Извините, что прервать?
Пардон Опечатался! чтобы прервать цикл конечно!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль, Борланд Паскаль-в чем разница??? Vremya-Dengy Паскаль, Turbo Pascal, PascalABC.NET 13 31.05.2011 18:23
Паскаль Дин@->-- Паскаль, Turbo Pascal, PascalABC.NET 3 18.07.2010 15:35
паскаль @lenk@ Помощь студентам 2 05.03.2010 18:44
Паскаль Jenny104 Помощь студентам 3 19.09.2008 07:06