Консультация № 169382
14.06.2009, 11:26
0.00 руб.
0 1 1
Используя функции для работы со строками,написать программу:
Определить,входит ли в произвольное число X хотябы одна цифра 7.Если да,то заменить каждую цифру 7 цифрои 0 и из полученного числа вычесть 200.

Обсуждение

Неизвестный
14.06.2009, 11:51
общий
это ответ
Здравствуйте, LORD-KENI.
Вот, посмотрите код с комментариями в приложении
Пример окна программы
Код:
Введите целое число: 123324п
Ошибка ввода. Попробуйте еще раз
Введите целое число: 124532141567321437961
Ошибка ввода. Попробуйте еще раз
Введите целое число: 12345703
Преобразованное число: 12344803


Приложение:
{$R+} {Включаем проверку принадлежности диапазону. Иначе можно
ввести число, не умещающееся в отведенное поле(переменную)}
var
s: String;
i: Longint;
code, count: Integer;
BEGIN
Write('Введите целое число: ');
repeat
{$I-}
{если будет ошибка ввода, то программа не зарешится аварийно, но
код ошибки будет создан}
ReadLn(i);
{$I+} {Опять включаем контроль - он нужен}
code := IOResult; {узнаем код}
if code <> 0 then WriteLn('Ошибка ввода. Попробуйте еще раз');
until code = 0;
str(i, s); {преобразуем в строку, как в задании}
count := 0; {Число замен}
while POS('7', s) <> 0 do
begin
{POS возвращает положение символа '7' в строке.
Если нет его, то ноль
А если "да", то работаем со строкой, как с массивом}
s[POS('7',s)] := '0';
inc(count); {увеличиваем count на 1}
end;
if count > 0 {были замены} then
begin
val(s, i, code); {обратное преобразование в число}
i:= i - 200;
WriteLn('Преобразованное число: ',i)
end
else WriteLn('В числе ',i,' цифра не встречается');;
END.
Форма ответа