0 / 0 / 0
Регистрация: 12.11.2010
Сообщений: 13
1

Деление числа на 6!!

15.11.2010, 17:46. Показов 2670. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Уважаемые эксперты, помогите пожалуйста исправить ошибку.Ошибка заключается в следующем при делении числа 7,5,11,13 и д.р на 6 выходит результат, что данное число делится, а это не так.
Помогите пожалуйста, завтра сдавать а у меня ошибка((.



Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
program na11;
uses crt;
var r4,r3,n,s,r,r1,r2,r6:longint;
h:integer;
st:string[80];
 
function krat11(n:longint):boolean;
var s,z:integer;
 
begin
z:=-1;
while n>0 do
begin
z:=-z;
s:=s+z*(n mod 10);
n:=n div 10;
end;
krat11:=s mod 11 =0;
end;
 
function del6(o:integer):boolean;
begin
if (o mod 100) mod 6 = 0 then
del6:=true
else
del6:=false;
end;
 
function del5(lu:integer):boolean;
begin
if (lu mod 100) mod 5 or 0 = 0 then
del5:=true
else
del5:=false;
end;
 
function del4(q:integer):boolean;
begin
if (q mod 100) mod 4 = 0 then
del4:=true
else
del4:=false;
end;
 
 
 
function su(i:longint):integer;
begin
if i <> 0 then
su:=(i mod 10)+su(i div 10)
else su:=0;
end;
 
 
function del2(l:integer):boolean;
begin
if (l mod 100) mod 2 = 0 then
del2:=true
else
del2:=false;
end;
 
 
 
 
begin
clrscr;
textcolor(11);
writeln('Задание: Натуральное число в десятичном ввиде представленно строкой длинной не более 80 символов');
writeln('Написать функцию признака делимости на:');
writeln('а) 11');
writeln('б) 6');
writeln('в) 5');
writeln('г) 4');
writeln('д) 3');
writeln('е) 2');
 
 
writeln(' После ознакомлением с заданием нажмите "Enter" ');
writeln;
readln;
write('введите в строку число : ');
readln(st);
 
val(st,n,h);
while (h<>0) do begin
textcolor(lightred);
if h=1 then writeln('Вы допустили ошибку символы недопустимы!!!.Пойжалусто повторите ввод!!!.');
textcolor(lightred);
write('цифры с символами недопустимы!!');
writeln;
textcolor(11);
write('Введите в строку число: ');
readln(st);
val(st,n,h);
end;
 
val(st,n,h);
textcolor(lightred);
if krat11(n)=true then r3:=n div 11
else writeln('число ',n,' не делится на 11');
textcolor(10);
if krat11(n)=true then writeln('число ',n,'делится на 11 результат =',r3:20);
 
textcolor(11);
 
val(st,n,h);
s:=su(n);
writeln('число делится на 6 тогда и только тогда, когда оно делится на 2, и на 3');
writeln('т.е если оно четное и сумма его цифр делится на 3)');
writeln('сумма чисел=',s);
if del2(n)=true then writeln('заданное вами число является четным')
else writeln('заданное вами число не является четным, либо сумма цифр числа ',n,' не делится на 3');
textcolor(lightred);
if del2(n)=true and ( n mod 3 = 0) then r6:=n div 6
else writeln('число ',n,' не делится на 6');
textcolor(10);
if del2(n)=true and ( n mod 3 = 0) then writeln('число ',n,' делится на 6 результат =',r6:20);
 
textcolor(11);
 
val(st,n,h);
writeln('число делится на 5 тогда и только тогда, когда последний элемент числа равен 0 или 5');
textcolor(lightred);
if del5(n)=true then r2:=n div 5
else writeln('число ',n,' не делится на 5');
textcolor(10);
if del5(n)=true then writeln('число ',n,' делится на 5 результат =',r2:20);
 
textcolor(11);
 
val(st,n,h);
writeln('число делится на 4 тогда и только тогда когда,');
writeln('число из двух последних цифр(оно может быть двузначным, однозначным или нулем) делится на 4');
if del4(n)=true then writeln('заданное вами число является четным')
else writeln('заданное вами число не является четным, либо не делится на 4');
textcolor(lightred);
if del4(n)=true then r4:=n div 4
else writeln('число ',n,' не делится на 4');
textcolor(10);
if del4(n)=true then writeln('число ',n,' делится на 4 результат =',r4:20);
 
textcolor(11);
 
val(st,n,h);
s:=su(n);
writeln('число делится на 3 тогда и только тогда, когда сумма цифр делитсяна 3');
writeln('сумма чисел=',s);
textcolor(lightred);
if n mod 3 = 0 then r:=n div 3
else writeln('число ',n,' не делится на 3 ');
textcolor(10);
if n mod 3 =0 then writeln('число ',n,' делится на 3 результат =',r:20);
 
textcolor(11);
 
val(st,n,h);
writeln('число делится на 2 тогда и только тогда, когда оно является четным');
if del2(n)=true then writeln('заданное вами число является четным')
else writeln('заданное вами число не является четным');
textcolor(lightred);
if del2(n)=true then r1:=n div 2
else writeln('число ',n,' не делится на 2');
textcolor(10);
if del2(n)=true then writeln('число ',n,' делится на 2 результат =',r1:20);
textcolor(11);
writeln;
writeln(' Для выхода нажмите "Enter"');
readln;
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.11.2010, 17:46
Ответы с готовыми решениями:

Преобразование десятичного числа в троичное, и деление этого числа на 2
преобразование десятичного числа в троичное число и деление этого числа на 2(как я понял...

Процедуры: деление / умножение числа на n-ю степень числа 2
Составить программу (с разными способами передачи параметров в процедуру), содержащую процедуру,...

Определить функции: сумма цифр числа, вращение числа (цифры - в обратном порядке), деление чисел (результат - действительное число)
Определить класс: целое число. Определить функции: сумма цифр числа, вращение числа (цифры - в...

Деление числа
Извините за дубляж темы, это уже много раз было, но такая задача: 1) от многозначного числа...

24
ЧакЭ одобряЭ
285 / 284 / 86
Регистрация: 27.12.2009
Сообщений: 1,767
15.11.2010, 17:50 2
вы вообще функцию Del6 в программе нигде не используете
0
0 / 0 / 0
Регистрация: 12.11.2010
Сообщений: 13
15.11.2010, 18:03  [ТС] 3
Действительно. Но если убрать эту функцию, то ошибка по прежнему будет в том же месте.
0
ЧакЭ одобряЭ
285 / 284 / 86
Регистрация: 27.12.2009
Сообщений: 1,767
15.11.2010, 18:06 4
Pascal
1
2
3
4
5
textcolor(10);
if del2(n)=true and ( n mod 3 = 0) then
begin
writeln('число делится на 6');
else writeln('число ',n,' не делится на 6');
0
0 / 0 / 0
Регистрация: 12.11.2010
Сообщений: 13
15.11.2010, 18:15  [ТС] 5
Все равно не пойму((
0
ЧакЭ одобряЭ
285 / 284 / 86
Регистрация: 27.12.2009
Сообщений: 1,767
15.11.2010, 18:20 6
зачем вы остаток от 100 ищете?

Добавлено через 3 минуты
и с моей записью 7 уже не делится на 6 ни на 11 т.п.
правда цвет зеленый все равно

и зачем вы делали меню если у вас все равно выводит все делимости
0
0 / 0 / 0
Регистрация: 12.11.2010
Сообщений: 13
15.11.2010, 18:34  [ТС] 7
Сейчас попробую отладить. После отпишусь.

Добавлено через 10 минут
Не знаю как у вас, но у меня все по прежнему((.
Не могли ли вы исправить ошибку в программном коде, и написать программу рабочую в этой теме.
0
ЧакЭ одобряЭ
285 / 284 / 86
Регистрация: 27.12.2009
Сообщений: 1,767
15.11.2010, 18:48 8
задание в студию.
0
0 / 0 / 0
Регистрация: 12.11.2010
Сообщений: 13
15.11.2010, 18:57  [ТС] 9
Натуральное число в десятичном в виде представлено строкой длинной не более 80 символов.
Написать функцию делимости на: 11, 6, 5, 4, 3, 2.

Добавлено через 1 минуту
Функцию признака делимости на : 11, 6, 5, 4, 3, 2.
0
Artishok
15.11.2010, 19:00
  #10

Не по теме:

либо сейчас кто-то напишет либо я через пару часов напишу.пора топать в универ

0
0 / 0 / 0
Регистрация: 12.11.2010
Сообщений: 13
15.11.2010, 19:02  [ТС] 11
Я подожду.
0
ЧакЭ одобряЭ
285 / 284 / 86
Регистрация: 27.12.2009
Сообщений: 1,767
15.11.2010, 21:53 12
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
function na_2(x: integer): boolean;
begin
  //последняя цифра четная
  if (x mod 10) mod 2 = 0 then
    result := true
  else
    result := false;
end;
 
function na_3(x: integer): boolean;
var
  sum: integer;
begin
  //делится на 3 если сумма цифр делится на 3
  while x > 0 do 
  begin
    sum := sum + x mod 10;
    x := x div 10;
  end;
  if sum mod 3 = 0 then
    result := true
  else
    result := false;
end;
 
function na_4(x: integer): boolean;
var
  ch: integer;
begin
  //делится на  4 если сумма последних двух цифр-1 делится на 2
  //или 2 раза делится на 2 без остатка
  ch := x mod 2;
  if ch = 0 then
  begin
    ch := ((x mod 100) div 10) mod 2;
    if ch = 0 then
      result := true
    else
      result := false;
  end
  else
    result := false;
  
end;
 
function na_5(x: integer): boolean;
begin
  //делится на 5 если последняя цифра 0 или 5
  if (x mod 10 = 0) or (x mod 10 = 5) then
    result := true
  else
    result := false;
end;
 
function na_6(x: integer): boolean;
begin
  //делится на 6 если делится на 2 и на 3
  if (na_2(x)) and (na_3(x)) then
    result := true
  else
    result := false;
end;
 
function na_11(x: integer): boolean;
var
  s: string;
  i, x1, x2, xt, err: integer;
begin
  //тут сложнее
  str(x, s);
  for i := 1 to length(s) do 
  begin
    val(s[i], xt, err);
    if i mod 2 <> 0 then
      x1 := x1 + xt
    else
      x2 := x2 + xt;
  end;
  if (x1 = x2) or (abs(x1 - x2) mod 11 = 0) then
    result := true
  else
    result := false;
end;
 
var
  elem: integer;
 
begin
  readln(elem);
  
  if na_2(elem) then
    writeln('на 2 делится')
  else
    writeln('не делится на 2');
  
  if na_3(elem) then
    writeln('делится на 3')
  else
    writeln('не делится на 3');
  
  if na_4(elem) then
    writeln('делится на 4')
  else
    writeln('не делится на 4');
  
  if na_5(elem) then
    writeln('делится на 5')
  else
    writeln('не делится на 5');
  
  if na_6(elem) then
    writeln('делится на 6')
  else
    writeln('не делится на 6');
  
  if na_11(elem) then
    writeln('делится на 11')
  else
    writeln('не делится на 11');
  
  
end.
если будет ругаться на Result то либо установить PABC.net либо вводите дополнительную переменную и в нее сохраняйте значение. потом это значение присваивайте функции.
менюшку простую думаю наклепать сможете
1
0 / 0 / 0
Регистрация: 12.11.2010
Сообщений: 13
15.11.2010, 23:03  [ТС] 13
Спасибо!

Добавлено через 46 минут
При отладке возникли некоторые проблемы, не корректный просчет...
0
ЧакЭ одобряЭ
285 / 284 / 86
Регистрация: 27.12.2009
Сообщений: 1,767
15.11.2010, 23:13 14
прямо-таки дебаггером?

Цитата Сообщение от lanst Посмотреть сообщение
При отладке возникли некоторые проблемы, не корректный просчет...
что в чем и где?
0
0 / 0 / 0
Регистрация: 12.11.2010
Сообщений: 13
15.11.2010, 23:26  [ТС] 15
Что то я вообще запутался...
0
ЧакЭ одобряЭ
285 / 284 / 86
Регистрация: 27.12.2009
Сообщений: 1,767
15.11.2010, 23:32 16

Не по теме:

мда...



Добавлено через 1 минуту
считает прога верно
0
0 / 0 / 0
Регистрация: 12.11.2010
Сообщений: 13
15.11.2010, 23:34  [ТС] 17
Как вы и сказали, ругается на резулте, помогите ввести дополнительную переменную в которой сохранять значение. Потом это значение присваивать функции. Я что то вообще не соображаю.
0
ЧакЭ одобряЭ
285 / 284 / 86
Регистрация: 27.12.2009
Сообщений: 1,767
15.11.2010, 23:35 18
Pascal
1
2
3
4
5
6
7
8
function na_2(x: integer): boolean;
begin
  //последняя цифра четная
  if (x mod 10) mod 2 = 0 then
    na_2 := true
  else
    na_2 := false;
end;
можно без переменной
0
0 / 0 / 0
Регистрация: 12.11.2010
Сообщений: 13
15.11.2010, 23:41  [ТС] 19
Я так и делал. У меня были ошибки. При вводе 2, выводилось что это число делится на 2, 4, 6.
При вводе 3 число делилось только на 6.
0
ЧакЭ одобряЭ
285 / 284 / 86
Регистрация: 27.12.2009
Сообщений: 1,767
15.11.2010, 23:44 20
у меня при 3 на 3
а при 2 на 2 и на 4
ну там критерий для цифр можно добавить
ну или только для 2
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.11.2010, 23:44
Помогаю со студенческими работами здесь

Деление числа А на 2
Помогите пожалуйста ,ну очень надо ,вывести на экран результат деление числа А на 2 число а лежит в...

деление числа
Написал программу &quot;Калькулятор больших чисел&quot;; Функции умножения, сложения, вычитания, возведение...

Деление Числа
Всем Привет Друзья. вот ещё одна задачка и нужна ваша помощ пожалуйста... задача заключаеться в...

Деление числа
Суть программы: Ввести 4-значн. число Делить его на 15 и вывести целые значения Оч надо и...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru