program exited with exitcode=217
Модератор: Модераторы
-
chernyshov_nikita
- незнакомец
- Сообщения: 3
- Зарегистрирован: 17.11.2013 23:48:21
program exited with exitcode=217
Здравствуйте! На днях писал программу (скажу честно - в школе задали), определяющую наличие одинаковых цифр в числе, т. е. нужно узнать, есть ли в данном числе 2 одинаковых цифры. Решено было написать программу со строками. Написал и, вроде, даже по логике все подходит и должно бы работать, но, как обычно это случается, найдется какая-нибудь проблема, которую объяснить такому программисту как я очень сложно. Проблема в следующем: после запуска программы и ввода числа, прога вылетает и вылазит окошко с надписью "program exited with exitcode=217"
текст программы:
с:=0;
a:=0;
writeln('введите число');
readln(s);
for i:=1 to 9 do
begin
b:=pos(a,s);
if (b>0) then
begin
delete(s,b,1);
b:=pos(a,s);
if (b>0) then
begin
c:=c+1
delete(s,b,1);
end;
end;
a:=a+1;
end;
if (c>0) then
writeln('да')
else
writeln('нет');
end.
Надеюсь на понимание и помощь, заранее спасибо.
текст программы:
с:=0;
a:=0;
writeln('введите число');
readln(s);
for i:=1 to 9 do
begin
b:=pos(a,s);
if (b>0) then
begin
delete(s,b,1);
b:=pos(a,s);
if (b>0) then
begin
c:=c+1
delete(s,b,1);
end;
end;
a:=a+1;
end;
if (c>0) then
writeln('да')
else
writeln('нет');
end.
Надеюсь на понимание и помощь, заранее спасибо.
chernyshov_nikita
1) Вы ищете тип-цифру в типе-строке, а в строке надо искать именно строку.
2) Вот эта конструкция:
у Вас зачем?
1) Вы ищете тип-цифру в типе-строке, а в строке надо искать именно строку.
2) Вот эта конструкция:
Код: Выделить всё
for i:=1 to 9 doу Вас зачем?
-
chernyshov_nikita
- незнакомец
- Сообщения: 3
- Зарегистрирован: 17.11.2013 23:48:21
9 раз я делаю цикл, чтобы все 9 чисел проверить
А по первому пункту Вы ничего не хотите сказать?
По второму пункту. Тогда Вы должны были сравнивать введённое число с переменной i, а в Вашей программе этого нет. Может быть Вы что-то другое имели в виду?
Каким образом Вы гарантируете программе, что в Вашей строке будет именно 9 чисел?
По второму пункту. Тогда Вы должны были сравнивать введённое число с переменной i, а в Вашей программе этого нет. Может быть Вы что-то другое имели в виду?
Каким образом Вы гарантируете программе, что в Вашей строке будет именно 9 чисел?
-
chernyshov_nikita
- незнакомец
- Сообщения: 3
- Зарегистрирован: 17.11.2013 23:48:21
по 1 пункту - исправлю, согласен - ошибка, а вот по второму: рассматриваю 9 чисел (от 1 до 9), которые в строке ищутся, т. е. 9 - это не количество чисел в строке, а проверяемые числа, так как команде pos без разницы сколько чисел или знаков в моей строке
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
chernyshov_nikita писал(а):а проверяемые числа, так как команде pos без разницы сколько чисел или знаков в моей строке
Ноль забыли. Или по условиям задачи ноль не цифра?
- Sergei I. Gorelkin
- энтузиаст
- Сообщения: 1409
- Зарегистрирован: 24.07.2005 14:40:41
- Откуда: Зеленоград
У функции pos первый аргумент - строка или Variant. Попытка передать число приводит к вызову функции для Variant, и технически программа вылетает из-за отсутствия модуля Variants в секции uses.
