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

Определить длину периода десятичной дроби M/N и период данной десятичной дроби M/N

09.11.2015, 22:49. Показов 6636. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Даны два натуральных числа M и N, M < N. Определить длину периода десятичной дроби M/N и период данной десятичной дроби M/N.

Добавлено через 43 секунды
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
var
ost,ch:array[1..1000]of integer;
m,n,n1,i,j,k,konec:integer;
begin
readln(m,n);
m:=m mod n;
n1:=n;
 write('period=') ;
repeat
  if n1 mod 2=0 then n1:=n1 div 2;
  if n1 mod 5=0 then n1:=n1 div 5;
until (n1 mod 2<>0)and(n1 mod 5<>0);
if n1=1 then writeln(0)else begin
 repeat
    repeat
    m:=m*10;
    until m>=n;
     inc(i);
       ost[i]:=m mod n;
       ch[i]:=m div n;
       m:=ost[i];
        for j:=1 to i-1 do
        if m=ost[j]
           then
           begin
           for k:=j to i-1 do
           write(ch[k]);
           konec:=1;
           end;
   until konec=1;
  end;
  readln;
  end.


Как исправить чтоб выходила еще длина?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.11.2015, 22:49
Ответы с готовыми решениями:

Дано натуральное число n > 1. Определить длину периода десятичной записи дроби 1/n
Задача уже обсуждалась на форуме, но тут вопрос скорее в другом. Итак сама задача: Дано...

Определить длину периода дроби
Рассмотрим дробь 1/n, n&gt;1. Как известно, цифры в её десятичной записи начиная с некоторого места...

Перевод десятичной дроби в восьмиричную
Составить программу в паскале для перевода десятичной дроби в восьмеричную.Вроде ясно как делать,но...

По заданным M и N получить период дроби M/N, если дробь конечная, вывести 0
По заданным M и N получить период дроби M/N, если дробь конечная, выводим 0. Пример: 1/2, выводим...

21
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
10.11.2015, 10:42 2
Pascal
1
2
3
4
5
end;
  writeln;
  write('Длина=',i-1)
  readln;
  end.
0
0 / 0 / 1
Регистрация: 09.11.2015
Сообщений: 4
10.11.2015, 15:30 3
Эта программа неправильно определяет период дроби при делении 3 на 14. Сами попробуйте.
0
Модератор
Эксперт по электронике
8340 / 4234 / 1605
Регистрация: 01.02.2015
Сообщений: 13,185
Записей в блоге: 5
10.11.2015, 17:09 4
endermAH, тогда - исправь.
0
0 / 0 / 1
Регистрация: 09.11.2015
Сообщений: 4
10.11.2015, 18:55 5
ФедосеевПавел, к сожалению найти ошибку и исправить её - две совершенно разные вещи. Если бы я исправил, я бы сюда не писал.
0
Модератор
Эксперт по электронике
8340 / 4234 / 1605
Регистрация: 01.02.2015
Сообщений: 13,185
Записей в блоге: 5
10.11.2015, 19:04 6
Вам было не лень её протестировать, значит есть какой-то интерес. Тогда можно попробовать решить эту задачку для себя в качестве разминки или закрепления навыков. Решить с нуля, не отвлекаясь на ошибочный образец.

Может быть это займёт больше времени, чем выделено топикстартеру, и лично ему вы не поможете. Но это его проблемы.

Попробуйте.
0
5065 / 2637 / 2348
Регистрация: 10.12.2014
Сообщений: 10,003
11.11.2015, 09:08 7
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Да! Косяк вот здесь:
repeat
m := m * 10;
until m >= n;
Нужно просто:
m := m * 10;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Вот моё виденье программы:
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
var
  M, N, M0, P : Integer;
  aM : array [0..1000] of Integer;
begin
  ReadLn(M, N);
  Write('0.');
  aM[0] := 0;
 
  M := M * 10;
  repeat
    Write( M div N );
    M := M mod N * 10;
    if M > 0 then
      begin
        Inc(aM[0]);
        aM[aM[0]] := M;
        P := 0;
        repeat
          Inc(P);
        until (P > aM[0]) or (aM[P] = M);
      end;
  until (M = 0) or (P < aM[0]);
  WriteLn;
 
  if M = 0 then
    WriteLn('Число делится за шагов: ', aM[0])
  else
    begin
      WriteLn('Период дроби = ', aM[0] - P);
    end;
end.
0
0 / 0 / 1
Регистрация: 09.11.2015
Сообщений: 4
11.11.2015, 15:50 8
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

JuriiMW,
А теперь подели 2 на 1 например в своей программе.
Я вот подправил + добавил костыль, который берёт в скобки период.
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
var
  M, N, M0, P, i : Integer;
  aM : array [0..1000] of Integer;
  res,buf: string;
begin
  ReadLn(M, N);
  //Write(m div n,',');
  str(m div n,res);
  res+=',';
  m:=m mod n;
  aM[0] := 0;
  i:=0;
  M := M * 10;
  repeat
    //Write( M div N,' ' );
    str(m div n,buf);
    res:=res+buf;
    M := M mod N * 10;
    if M > 0 then
      begin
        Inc(aM[0]);
        aM[aM[0]] := M;
        P := 0;
        repeat
          Inc(P);
        until (P > aM[0]) or (aM[P] = M);
      end;
  until (M = 0) or (P < aM[0]);
  //WriteLn;
 
  if M = 0 then
    WriteLn(res)
  else
    begin
      //Тут начинается костыль
      res+=' ';
      for i:=length(res) downto length(res)-aM[0]+P do
         begin
            res[i]:=res[i-1];
         end;
      res[length(res)-aM[0]+P]:='(';
      WriteLn(res,')');
    end;
end.
0
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
11.11.2015, 15:52 9
Цитата Сообщение от endermAH Посмотреть сообщение
А теперь подели 2 на 1
А ничего что в условии
Цитата Сообщение от VLena Посмотреть сообщение
числа M и N, M < N.
0
Платежеспособный зверь
8832 / 4266 / 1621
Регистрация: 28.10.2009
Сообщений: 11,406
12.11.2015, 00:26 10
Чо-то там в этой проге недоделано, а что уже не помню, это было лет 5 назад. Некогда мне сейчас разбираться, будет время, я её перепишу.
0
1 / 1 / 0
Регистрация: 06.10.2016
Сообщений: 5
06.10.2016, 18:39 11
Здравствуйте, можно использовать этот код для размещения на стороннем ресурсе как примера реализации?
0
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
06.10.2016, 18:47 12
Да только укажите автора кода.Типа
Код предложенный JuriiMW
1
1 / 1 / 0
Регистрация: 06.10.2016
Сообщений: 5
06.10.2016, 21:12 13
Т.е. если я хочу показать код VLena, то я просто указываю "автор VLena". Этого будет достаточно?
0
Модератор
Эксперт по электронике
8340 / 4234 / 1605
Регистрация: 01.02.2015
Сообщений: 13,185
Записей в блоге: 5
06.10.2016, 22:00 14
Нет. Потому, что автор, даже по смыслу сообщений - кот Бегемот
Цитата Сообщение от кот Бегемот Посмотреть сообщение
Чо-то там в этой проге недоделано, а что уже не помню, это было лет 5 назад. Некогда мне сейчас разбираться, будет время, я её перепишу.
0
1 / 1 / 0
Регистрация: 06.10.2016
Сообщений: 5
06.10.2016, 23:19 15
Ну так я могу его публиковать на сторонних ресурсах? На авторство не претендую. Просто один тип меня озадачил этим вопросом. Меня это напрягло в плане, что неужели у нас кому-то есть до этого дело вообще? Я например если где-то опубликую решение свое, да пусть кто хочет берет. Есть люди которые готовы наоборот за это горло перегрызть?
0
Модератор
Эксперт по электронике
8340 / 4234 / 1605
Регистрация: 01.02.2015
Сообщений: 13,185
Записей в блоге: 5
07.10.2016, 00:25 16
Наверное, можете. Т.к. это решение было опубликовано с целью "подарить ответ/зачёт/лабу". Для соблюдения приличий, можно указать источник кода (ссылку) и автора.
Ну и для очистки совести, загляните в правила форума.
0
Cyborg Drone
08.11.2016, 13:26
  #17

Не по теме:

Цитата Сообщение от Orlazor Посмотреть сообщение
Этого будет достаточно?
Строго говоря, нет. Хотя и Законодательство РФ весьма расплывчато в отношении авторского права при свободной публикации произведений (для справки - исходный код программы с законодательной точки зрения является произведением автора), и, как известно, строгость законов РФ компенсируется необязательностью их исполнения, но всё же... Авторские права распространяются в том числе и на материалы, находящиеся в свободном доступе. Так что, кроме как
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
указать источник кода (ссылку) и автора
всё же следует получить согласие автора на использование его произведения (я сам крючкотвор, но это слово в таком контексте я ненавижу!) в тех или иных целях. И вообще отдельная песня, если Вам вдруг вздумается использовать произведение (вот, опять! G-r-r-r!) для извлечения прибыли...

0
ФедосеевПавел
08.11.2016, 21:41
  #18

Не по теме:

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

Ведь автор программы публикует её в ответ на просьбу, как бы дарит её, и в случае использования топикстартером (или кем-то другим, зашедшим из поисковика), отказывается не только от правообладания, но и от авторства (по крайней мере для преподавателя).

Каков тогда статус этих исходников при публикации их на другом сайте (условный пример, сборник решений олимпийских сайтов на всех ЯВУ)?

И ещё, некоторые материалы кочуют с форума на форум без изменений (как задать вопрос и не получить ответ). Каков их статус?

Кроме того, правилами форума запрещено давать ссылки на другие форумы, что приводит к копированию исходников без указания источника.

Не скажу, что это важно для меня, скорее любопытно, т.к. нутром чую, что всё опубликованное на публичном ресурсе попадает под подобие Public Domain.

0
Платежеспособный зверь
8832 / 4266 / 1621
Регистрация: 28.10.2009
Сообщений: 11,406
08.11.2016, 21:42 19
Да мне не жалко, прога в любом случае кривая. Было бы обидно, если бы кто-то присвоил хорошую прогу...
0
Cyborg Drone
09.11.2016, 09:20     Определить длину периода десятичной дроби M/N и период данной десятичной дроби M/N
  #20

Не по теме:

ФедосеевПавел, с точки зрения закона всё гораздо суровее... Если кто-то создал какое-то произведение, тут же возникает авторское право со всеми вытекающими. Причём самого автора никто не спрашивает, желает ли он быть автором произведения. И вот почему. Допустим, мне понравилась программа, и даже автор не против, и я давай её использовать! Автор, увидев это дело, производит поворот оверштаг, официально регистрирует свои авторские права, и начинает с меня требовать дивиденды, поскольку с точки зрения закона, неважно, что автор говорит, важно, что он заявляет. А программа его у меня уже везде, и за её использование я должен буду отстёгивать, что первоначально мною никак не планировалось. Вот такая вот официальная подстава. Произведение становится публичным в случае смерти автора, если нет правопреемников (если произведение особой важности, то на него может претендовать и государство), если есть правопреемники - по прошествии срока давности. При живом авторе произведение может стать публичным только в судебном порядке. То есть, в простейшем случае, автор должен написать заявление в суд, и только после этого суд может аннулировать права автора на произведение и признать произведение общедоступным. А может и не аннулировать, посчитав такое деяние противоречащим какой-либо букве закона. И всё это ещё и только после того, как судом будет признано, что произведение является таковым. Если до суда автор не заявлял свои права на произведение, может вообще произойти казус: вместо аннулирования авторских прав они будут официально признаны. И в любом случае автору придётся оплатить судебные издержки. В общем, то, что кажется очевидным, не всегда таковым является. А в плане авторского права закон весьма скользкий. И, кстати, с точки зрения закона, публикация произведения автором никоим образом не влияет на его авторское право. Разве что, в плане появления этих самых прав.

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.11.2016, 09:20

Определить длину периода десятичной дроби, используя функцию
дано натуральное число n&gt;1. определить длину периода десятичной дроби, используя функцию. Помогите...

Определить период десятичной дроби
Составьте программу, определяющую период десятичной дроби m/n(m,n-натуральные числа)

Напечатать период десятичной дроби
Напечатать период десятичной дроби m / n для заданных натуральных m и n. Например, дробь 1/7 дает...

Составьте программу, определяющую период десятичной дроби
составьте программу, определяющую период десятичной дроби m\n (m, n - натуральные числа).


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

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

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