По разделам



Задача Proc 47


Используя функцию NOD2 из задания Proc46, описать процедуру
Frac1(a, b, p, q), преобразующую дробь a/b к несократимому виду p/q (все
параметры процедуры — целого типа, a и b — входные, p и q — выходные).
Знак результирующей дроби p/q приписывается числителю (т. е. q > 0). С
помощью Frac1 найти несократимые дроби, равные a/b + c/d, a/b + e/f,
a/b + g/h (числа a, b, c, d, e, f, g, h даны).

Код (C/C++)

#include <stdio.h>
int nod2(int a ,int b){
    while ((a!=0)&&(b!=0)){
        if (a>b) a%= b;
        else b%=a;
    }
    return a+b;
}
 
void frac1(int a,int b, int *p, int *q){
    *p=a/nod2(a,b);
    *q=b/nod2(a,b);
}
 
int main(void)
{
    int a,b,c,d,e,f,g,h,rez1,rez2;
    printf("A:");
    scanf("%i", &a);
    printf("B:");
    scanf("%i", &b);
    printf("C:");
    scanf("%i", &c);
    printf("D:");
    scanf("%i", &d);
    printf("E:");
    scanf("%i", &e);
    printf("F:");
    scanf("%i", &f);
    printf("G:");
    scanf("%i", &g);
    printf("H:");
    scanf("%i", &h);
    frac1(a*d+c*b,b*d,&rez1,&rez2);
    printf("%i/%i\n",rez1,rez2);
    frac1(a*f+e*b,b*f,&rez1,&rez2);
    printf("%i/%i\n",rez1,rez2);
    frac1(a*h+g*b,b*h,&rez1,&rez2);
    printf("%i/%i\n",rez1,rez2);
    return 0;
}

Код (Python)

import random
import math

def NOD2(A,B):
    while B != 0:
        A,B = B,A%B
    return A

def Frac1(a,b,p,q):
    L = []
    Numerator = a*q + b*p
    Denominator = b*q
    Divisor = NOD2(Numerator, Denominator)
    L.append(int(round(Numerator / Divisor)))
    L.append(int(round(Denominator / Divisor)))
    return L

for i in range(0,4):
    A = random.randrange(1,1000)
    B = random.randrange(1,1000)
    C = random.randrange(1,1000)
    D = random.randrange(1,1000)
    #A = 1
    #B = 2
    #C = 1
    #D = 3
    print(A,";",B,";",C,";",D,";",Frac1(A,B,C,D))
									

Код (Pascal)

program Proc47;
 
Function NOD2(A,B:Integer):Integer;
begin
   while (A<>0) and (B<>0) do
   begin
    if a>b then A:=(a mod b)
    else B:=(B mod A);
   end;
   NOD2:=A+B;
end;
 
Procedure Frac1(a,b:integer;var p,q:integer);
begin
 p:=a div NOD2(a,b);
 q:=b div NOD2(a,b);
end;
 
var
  A, B, C, D, E, F, G, H, rez1,rez2: integer;
 
begin
   Write('A :');
   Readln(A);
   Write('B :');
   Readln(B);
   Frac1(a,b,rez1,rez2);
   Writeln(Rez1,'/',Rez2);
   Write('C :');
   Readln(C);
   Write('D :');
   Readln(D);
   Write('E :');
   Readln(E);
   Write('F :');
   Readln(F);
   Write('G :');
   Readln(G);
   Write('H :');
   Readln(H);
   Frac1(a*d+c*b,b*d,rez1,rez2);
   Writeln(Rez1,'/',Rez2);
   Frac1(a*f+e*b,b*f,rez1,rez2);
   Writeln(Rez1,'/',Rez2);
   Frac1(a*h+g*b,b*h,rez1,rez2);
   Writeln(Rez1,'/',Rez2);
   Readln;
end.
									




Proc. Абрамян
Proc 1 Просмотров: 14
Proc 2 Просмотров: 14
Proc 3 Просмотров: 12
Proc 4 Просмотров: 12
Proc 5 Просмотров: 14
Proc 6 Просмотров: 10
Proc 7 Просмотров: 12
Proc 8 Просмотров: 13
Proc 9 Просмотров: 12
Proc 10 Просмотров: 11
Proc 11 Просмотров: 14
Proc 12 Просмотров: 10
Proc 13 Просмотров: 12
Proc 14 Просмотров: 14
Proc 15 Просмотров: 13
Proc 16 Просмотров: 11
Proc 17 Просмотров: 23
Proc 18 Просмотров: 13
Proc 19 Просмотров: 14
Proc 20 Просмотров: 10
Proc 21 Просмотров: 12
Proc 22 Просмотров: 12
Proc 23 Просмотров: 11
Proc 24 Просмотров: 12
Proc 25 Просмотров: 9
Proc 26 Просмотров: 11
Proc 27 Просмотров: 16
Proc 28 Просмотров: 18
Proc 29 Просмотров: 23
Proc 30 Просмотров: 25
Proc 31 Просмотров: 13
Proc 32 Просмотров: 12
Proc 33 Просмотров: 10
Proc 34 Просмотров: 18
Proc 35 Просмотров: 9
Proc 36 Просмотров: 11
Proc 37 Просмотров: 12
Proc 38 Просмотров: 10
Proc 39 Просмотров: 13
Proc 40 Просмотров: 9
Proc 41 Просмотров: 13
Proc 42 Просмотров: 11
Proc 43 Просмотров: 12
Proc 44 Просмотров: 12
Proc 45 Просмотров: 14
Proc 46 Просмотров: 10
Proc 47 Просмотров: 10
Proc 48 Просмотров: 14
Proc 49 Просмотров: 10
Proc 50 Просмотров: 12
Proc 51 Просмотров: 18
Proc 52 Просмотров: 11
Proc 53 Просмотров: 13
Proc 54 Просмотров: 11
Proc 55 Просмотров: 13
Proc 56 Просмотров: 10
Proc 57 Просмотров: 11
Proc 58 Просмотров: 11
Proc 59 Просмотров: 8
Proc 60 Просмотров: 11

Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться