Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 02.06.2012
Сообщений: 16
1

Не могу понять почему компилятор ругается

11.10.2013, 15:19. Показов 2277. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Суть задачи в том, что вводится натуральное целое число нужно определить делится ли оно без остатка на каждое из своих цифр.
В кнопке расчет я написал такой код.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
begin
  str:= Edit1.Text;
  x:=strtoint(edit1.Text);
  n:=length(str);
 
  for i:=1 to n do
  a:=strtoint(str[i]);
  c:= (x mod a);
  if c<>0 then
    begin
    break;
    showmessage('не делится ')  ;
    break;
    end;
 
end; /// вот  тут выдает ошибку [Fatal Error] Unit4.pas(53): Internal error: T2335
 
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.10.2013, 15:19
Ответы с готовыми решениями:

Почему компилятор ругается на переменную с числом 12?
Я новичек, сильно не смейтесь: почему компилятор ругается на переменную с числом 12?

Задачка из учебника. Почему ругается компилятор?
Добрый день, встретила задачку в учебнике, решила проверить ее на практике. Вроде бы все правильно...

Не могу понять почему не работает
Нужно в Edit-ах вывести минимальное значение из каждой строки массива, но у меня почему то выводит...

Не работает, код, не могу понять почему
Очень нужно, срочно, но не могу найти ошибку! Unit Matrix; interface uses Windows,...

14
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
11.10.2013, 15:29 2
break в этом коде как оказался и что он там пытается делать?
0
Заблокирован
11.10.2013, 15:43 3
Строка 6 У вас цикл только читает но ничего не делает.
там должно быть begin
0
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
11.10.2013, 15:49 4
Все равно вылетит. Два брейка на один цикл это всё равно перебор.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
11.10.2013, 15:52 5
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TForm1.Button1Click(Sender: TObject);
var x,y:integer;
    f:boolean;
begin
x:=strtoint(edit1.Text);
y:=x;
f:=true;
while (y>0)and f do
if(y mod 10=0)or(x mod(y mod 10)<>0)then f:=false
else y:=y div 10;
if f then  showmessage('делится ')
else showmessage('не делится ');
end;
0
Заблокирован
11.10.2013, 15:53 6
Тут нужно вообще переделать. Добавьте мемо и пишите в него результаты проверки
0
0 / 0 / 0
Регистрация: 02.06.2012
Сообщений: 16
11.10.2013, 17:25  [ТС] 7
изменил код приложение стало запускаться,но ничего не выдает мне. где сообственно я косячнул? break ввел для вывода из цикла так думал , что если хоть одна цифра не делит число без остатка ,то и смысла нет цикл продолжать
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
procedure TForm4.Button1Click(Sender: TObject);
  var
  Str: string;
  x,i,a,c,n: integer;
 
begin
  str:= Edit1.Text;
  x:=strtoint(edit1.Text);
  n:=length(str);
 
  for i:=1 to n do
   begin
  a:=strtoint(str[i]);
  c:= (x mod a);
  if c<>0 then
    begin
      break;
    showmessage('÷èñëî íå äåëèòñÿ áåç îñòàòêà')  ;
    end;
    end;
 
end;
 
end.
0
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
11.10.2013, 19:35 8
Цитата Сообщение от svetlakoff Посмотреть сообщение
но ничего не выдает мне
А что она может выдать? Выдать "число не делится без остатка" она не может потому что её в предыдущей строке катапультирует брейк. А других вариантов ей не дали.
1
0 / 0 / 0
Регистрация: 02.06.2012
Сообщений: 16
11.10.2013, 22:24  [ТС] 9
northener, спасибо все заработало.И вот еще последний вопрос вам. К примеру есть число 201 и на 0 делить нельзя что добавить в цикл чтобы деление на 0 не мешало работе приложения?
0
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
11.10.2013, 22:28 10
Цитата Сообщение от svetlakoff Посмотреть сообщение
что добавить в цикл чтобы деление на 0 не мешало работе приложения?
А результат процедуры тогда какой должен быть?
0
0 / 0 / 0
Регистрация: 02.06.2012
Сообщений: 16
11.10.2013, 22:32  [ТС] 11
ну к приеру если число 201 то 201 поделим на 2 и 1 а 0 пропустить?
0
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
11.10.2013, 22:37 12
Нет. Я спрашивал что в этом случае должна ответить процедура? Делится/не делится/ответ не возможен ...
0
0 / 0 / 0
Регистрация: 02.06.2012
Сообщений: 16
11.10.2013, 22:44  [ТС] 13
ну если число 101 то конечный ответ делится а если к примеру 201 то конечный ответ не делится
0
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
11.10.2013, 22:47 14
Delphi
1
2
3
4
  for i:=1 to n do
   begin
  a:=strtoint(str[i]);
  if a = 0 then Continue;
Далее как было.
1
0 / 0 / 0
Регистрация: 02.06.2012
Сообщений: 16
11.10.2013, 22:49  [ТС] 15
спасибо.
0
11.10.2013, 22:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.10.2013, 22:49
Помогаю со студенческими работами здесь

Не могу понять почему не работает график
рухомі графіки - коофіцієнт поглинання світла - намалювати графік

не могу понять почему в последней строке ошибка
procedure TForm1.Button1Click(Sender: TObject); Var c,a,b: integer; begin ...

Не могу понять почему не считывает текст из файла
Не могу понять почему ошибка!!! procedure TForm1.Button10Click(Sender: TObject); begin ...

Не могу понять почему процедура дублирует записи в файле
В TComboBox вводится фамилия сотрудника, затем проверяется, имеется ли данная фамилия в файле, если...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru