Практика программирования (Бейсик, Си, Паскаль)


Задачи,советы и ответы - часть 42


REM Приостанов после заполнения экрана

IF J MOD 20=0 THEN INPUT A$

NEXT J

END

Программа 2_24.с (оптимальный вариант)

#include <stdio.h>

#include <conio.h>

main() (

long Xam[1000], н2, хЗ, к5;

int j;

int k2=0,k3=0,k5=0;

clrscr(); -

Xam[0]-l,-

printf("%4d %9d",l,l);

for(i=i; j<1000; j++) {

x2=Xam[k2]*2; x3=Xam[k3]*3;

x5=Xam[k5]*5;

if(x2<=x3 && x2<=x5)

{Xam[j]=x2; k2++;}

if(x3<=x2 && x3<=x5)

{Xam[j]=x3; k3++;}

if(x5<=x2 && x5<=x3)

{Xam[j]=x5; k5++;}

printf("\n%4d %91d",j,Xam[j]);

if(j % 20==0)

getch(); }

getch (); }

Программа 2_24.pas (оптимальный вариант)

program Hamming;

uses crt;

var

Xam:array[i..1000] of longint;

x2,x3,x5 : longint;

j:integer; const

k2:integer=l;

k3:integer=l;

k5:integer=l; begin

Xam[l]:=1;

writeln(l:4,' ',1:10);

for j:=2 to 1000 do

begin

x2:=Xam[k2]*2;

x3:=Xam[k3]*3;

x5:=Xam[k5]*5;

if(x2<=x3) and (x2<=x5) then

begin

Xam [ j ] : =x2;

inc(k2);

end;

if(x3<=x2) and (x3<=x5) then

begin Xam[j] := x3; inc(k3);

end;

if (x5 <= x2) and (x5 <= x3) then begin Xam[j] := x5; inc(k5);

end;

writeln(j:4,' ',Xam[j]:10);

if (j mod 20)=0 then readln; end; readln; end.

Программа 2_24a.pas (полный перебор)

program Hammingl;

uses crt,WinDos;

var

j,Hour,Hourl,min,mini,sec,seel,hsec,hsecl : word; i,k : longint;

begin clrscr;

gettime(Hour,min,sec,hsec); i:=l; j:=0; repeat k:=i;

while (k mod 2)=0 do k:=k div 2;

while (k mod 3)=0 do k:=k div 3;

while (k mod 5)=0 do k:=k div 5;

if k=l then begin

{ write(i:10); } {отключение вывода } inc(j);

end; inc(i);

until j>=1000;

gettime (Hourl,min1,secl,hsecl) ;

writeln;

writeln(Hour,':',min,':',sec,'.',hsec);

writeln(Hourl,':',minl,':',seel,'.',hsecl); readln; end.

Задание 2.25. Генерация неправильно сокращаемых дробей

Существует очень мало правильных дробей вида m/n, которые можно привести к несократимой дроби "незаконным" образом — зачеркнув одинаковые цифры в числителе и знаменателе. Например:




- Начало -  - Назад -  - Вперед -