Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 28.06.2021
Сообщений: 14

Найти произведение двух минимальных дробей

30.06.2021, 05:05. Показов 1494. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется вот такой код
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
uses droby;
 
procedure nul(var z: frac);
begin
  z.P := 0; z.Q := 1;
end;
var
  i, o, g: byte; z, z1, z2: frac;x: boolean;N:integer;
  a:array of frac;
begin
//создание и заполнение массива дробями
  Writeln('Создание массива');
  Writeln('Введите количество дробей');
  Readln(N);
  SetLength(a,N);
      for i := 0 to N-1 do begin 
      write('Числитель ', i+1, ' дроби: '); read(a[i].p); 
      write('Знаменатель ', i+1, ' дроби: '); read(a[i].q); 
      writeLn(a[i].p, '/', a[i].q, '; '); end;
      writeln('Создан массив');
//вывод массива на экран      
  for i := 0 to N-1 do write(a[i].p, '/', a[i].q, '; ');
  writeln(' ');
  writeln(' ');
//вывод меню программы  
  writeln('0 Конец работы');
  writeln('1 найти сумму всех элементов; ответ представить в виде несократимой дроби');
  writeln('2 произведение двух дробей с минимальными значениями;');
  writeln('3 найти в массиве все дроби, больше первой');
  repeat
   nul(z); nul(z1); nul(z2);
    readln(o);
    case o of
      //чтобы не выводилась ошибка при выходе из программы
      0:begin end;
      
      1:
      //поиск суммы всех элементов
        begin
          z := a[0];
          Write('Сумма элементов массива = ');
          for i := 1 to N-1 do
            summa(z, a[i], z); writeln(z.P, '/', z.Q); 
        end;
        
      2:
      //произведение двух дробей с минимальными значениями
        begin 
        g:=0;
        for i:=0 to length(a)-1 do 
            begin
            z:=a[0];
            if bolsheravno(z,a[i]) then 
                begin 
                z1:=z;
                z:=a[i];
                g:=i;
                end;  
            end; 
        if (length(a)=1) then z1:=z;
        for i:=0 to length(a)-1 do 
            begin 
            if (bolsheravno(z1,a[i])and(i<>g)) then z1:=a[i]; 
            end;
            proizvedenie(z,z1,z2); writeln('произведение двух дробей с минимальными значениями = ',z2.P,'/',z2.q,'; ');
        end;
        
      3:
      //поиск всех дробей в массиве, которые больше первой дроби
        begin
          writeln('все дроби в массиве, которые больше первой дроби');
          for i:=0 to length(a)-1 do begin
            z:=a[i];
            if bolshe(a[0],z) then
              writeln(z.P,'/',z.q);            
          end; 
        end;
        
    else writeln('Неверный номер операции!')
    end; until o = 0;
  writeln('Конец работы с массивом');
end.
так же к нему имеется вспомогательный файл droby.pas
Кликните здесь для просмотра всего текста
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
Unit droby;
interface
Type
Natur=1..maxint;
Frac = Record
  P:Longint;
  Q:Natur
end;
Procedure Sokr(Var A: Frac);
Procedure Summa(A,B:Frac;Var C:Frac);
Procedure Raznost(A,B:Frac; Var C:Frac);
Procedure Proizvedenie(A,B:Frac; Var C:Frac);
Procedure Chastnoe(A,B:Frac;Var C:FRac);
Procedure Stepen(A,B:Frac; N:Natur;Var C:Frac);
Function Menshe(A,B:Frac):Boolean;
Function Bolshe(A,B:Frac):Boolean;
Function Ravno (A,B:Frac):Boolean;
Function MensheRavno(A,B:Frac):Boolean;
Function BolsheRavno(A,B:Frac):Boolean;
Function NeRavno (A,B:Frac):Boolean;
Implementation
Function Delit (A,B:Natur):Natur;
Begin
  While A<>B Do
    If A>B Then
      If A Mod B<>0 then A:=A mod B Else A:=B Else If B mod A<>0 then B:=B mod A else B:=A;
    Delit:=A
end;
Procedure Sokr;
Var M,N:Natur;
Begin
  If A.p<>0
  then
    Begin
      If A.P<0
      then M:=Abs(A.P) else M:=A.P ;
      N:=Delit(M, A.Q);
      A.P:=A.P Div N;
      A.Q:=A.Q div N
    end;
end;
Procedure Summa;
Begin
  C.Q:=(A.Q*B.Q)div Delit(a.Q,B.Q);
  C.P:=A.P*C.Q div A.Q+B.P*C.Q div B.Q;
  Sokr(C)
end;
Procedure Raznost;
Begin
  C.Q:=(A.Q*B.Q) div Delit(a.Q,B.Q);
  C.P:=A.P*C.Q div A.Q-B.P*C.Q div B.Q;
end;
Procedure Proizvedenie;
begin
  C.Q:=A.q*B.Q;
  C.p:=A.P*B.P;
  Sokr(C)
end;
Procedure Chastnoe;
Begin
  C.Q:=A.Q*B.P;
  C.P:=A.P*B.Q;
  Sokr(c)
end;
Procedure Stepen; Var I:Natur;
begin
  C.Q:=1;
  C.P:=1;
  Sokr(a);
  For i:=1 to n do
    Proizvedenie(A,C,C);
end;
Function Menshe:boolean;
Begin
  Menshe:=A.P*B.Q<A.Q*B.P
end;
Function Bolshe:boolean;
begin
  Bolshe:=A.P*B.Q>A.Q*B.P
end;
Function Ravno:boolean;
begin
  Ravno:=A.P*B.Q=A.Q*B.Q
end;
Function BolsheRavno:boolean;
begin
BolsheRavno:=Bolshe(a,b)or Ravno(a,b)
end;
Function MensheRavno:boolean;
begin
  MensheRavno:=Menshe(a,b)or Ravno(a,b)
end;
Function NeRavno:boolean;
Begin
  NeRavno:=Not ravno(a,b)
end;
begin
end.

Нужна помощь с исправлением ошибки в поиске произведения двух дробей с минимальными значениями
Если например ввести дроби 1/3, 1/4, 1/5, 1/6, 1/7, то программа выведет правильный результат - 1/42
Но если ввести эти дроби в порядке убывания, то программа выводит результат 1/12

Помогите пожалуйста исправить ошибку
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.06.2021, 05:05
Ответы с готовыми решениями:

Ввести с клавиатуры 4 целых числа a, b, c и d. Найти произведение двух дробей a/b и c/d и привести их к несократимому виду
Помогите решить задачу без использования массивов. Поставлю &quot;+&quot; в репутацию. Ввести с клавиатуры 4 целых числа a, b, c и d. Найти...

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

Найти сумму двух дробей
даны две положительные дроби:a/b и c/d. найдите их сумму и напишите ответ в виде несократимой дроби. Добавлено через 4 минуты uses...

2
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
30.06.2021, 05:58
Лучший ответ Сообщение было отмечено andycoo1 как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//произведение двух дробей с минимальными значениями
      begin
      z:=a[0];
      z1:=a[1];
      if menshe(z1,z) then
       begin
        z:=a[1];
        z1:=a[0];
       end;
     for i:=2 to n-1 do
     if menshe(a[i],z) then
      begin
       z1:=z;
       z:=a[i];
      end
     else if menshe(a[i],z1) then z1:=a[i];
     proizvedenie(z,z1,z2); writeln('произведение двух дробей с минимальными значениями = ',z2.P,'/',z2.q,'; ');
   end;
1
0 / 0 / 0
Регистрация: 28.06.2021
Сообщений: 14
30.06.2021, 06:05  [ТС]
Спасибо большое!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.06.2021, 06:05
Помогаю со студенческими работами здесь

Найти максимальную из двух обыкновенных дробей
Написать подпрограмму, которая возвращает максимальную из двух обыкновенных дробей вида a/b и c/d

найти произведение минимальных элементов в массиве
люди помогите с задачей. дан двумерный массив размерности NxM. найти произведение минимальных элементов в массиве.

Найти произведение и сумму максимальных и минимальных элементов матрицы
Найти произведение и сумму максимальных и минимальных элементов

Найти номера двух минимальных элементов массива.
Заполнить массив из 10 случайными числами и вывести на экран.Найти номера двух минимальных элементов массива

Найти порядковые номера двух максимальных и минимальных цифр
привет всем))) надо подсказать ешение адачи плиз)))) дано натуральное число. найти порядковые номера ДВУХ его макс и мин цифр с...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru