Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Помогите пожалуйста. Pascal ABC (http://www.tehnari.ru/f41/t106334/)

brickbazuka 13.01.2016 15:50

Помогите пожалуйста. Pascal ABC
 
1.Имеются сведения о количестве проданных билетов в 17-ти вагонах поезда. Найти наименее загруженный вагон, учитывая, что количество мест в вагоне зависит от типа вагона: в мягком и купейном вагонах — по 36 мест, а в плацкартном — 46 мест.
2.Программу написать с использованием подпрограмм (процедуры или функции)
Составить программу для проверки, можно ли заданное натуральное число N представить в виде куба простого числа.

Евгений 13.01.2016 16:20

2.Программу написать с использованием подпрограмм (процедуры или функции)
Составить программу для проверки, можно ли заданное натуральное число N представить в виде куба простого числа.

Код:

function Proverka(an:integer; var at:integer):boolean;
var  e,k:Real;
begin
    e:=0.00001;
      k:=Exp((1/3)*Ln(an));
      if Frac(k)<e
        then
        begin
          Proverka:=true ;
          at:=Trunc(k);
        end
        else Proverka:=false;
end;
var  n,t:integer;
begin
      Write('N = ');
      Readln(n);
        Writeln;
    t:=0;
    if Proverka(n,t)
      then Writeln('DA rezultat = ',t)
      else Writeln('NET');
    Readln;
end.


Vladimir_S 13.01.2016 16:25

Цитата:

Сообщение от brickbazuka (Сообщение 1198074)
2.Программу написать с использованием подпрограмм (процедуры или функции) Составить программу для проверки, можно ли заданное натуральное число N представить в виде куба простого числа.

Код:

Var
 N,i,Q:Integer;
 BLN:Boolean;

Function Prime(J:Integer):Boolean;
Var
 m:Integer;
 b:Boolean;
begin
 b:=true;
 if J>3 then
  begin
  m:=(J div 2)+1;
  Repeat
    Dec(m);
    If (J mod m)=0 then b:=false;
  Until (b=false) or (m=2);
  end;
 Prime:=b;
end;

Begin
 Write('N = ');
 Readln(N);
 Q:=0;
 Repeat
  Inc(Q);
  BLN:=Prime(Q) and (Q*Q*Q=N);
 Until BLN or (Q*Q*Q>N);
 if BLN then
  Writeln('Yes: ',N,' = ',Q,'*',Q,'*',Q)
 else
  Writeln('No');
End.


Vladimir_S 13.01.2016 16:33

Женя, извини, но что-то у тебя не то:
1. Где проверка на то, что кубический корень - ПРОСТОЕ число?
2. В функциях "var" не употребляется: это тип формального параметра процедуры.
3. Что означает t? Какой в нем смысл, если ему присваивается глухо нулевое значение?

Евгений 13.01.2016 17:26

1. А вот до простого и не дочитал
2. Первый раз слышу, что "var" не употребляется в функциях. Но я слышал, что если функция кроме прямого результата делает ещё что-то, то это очень даже хорошо.

Дописал:
Код:

function Prostoe(aa:integer):boolean;
var  pr:boolean;
      d:integer;
begin
    if aa<1
      then pr:=false
      else
      begin
        pr:=true;
        for d:=2 to (aa div 2) do
          if (aa mod d=0) then
          begin
            pr:=false;
            Break;
          end;
      end;
      Prostoe:=pr;
end;
function Proverka(an:integer; var at:integer):boolean;
var  e,k:Real;
    a:integer;
begin
    e:=0.00001;
      k:=Exp((1/3)*Ln(an));
      if Frac(k)<e
        then
        begin
          a:=Trunc(k);
            if Prostoe(a) then
            begin
              Proverka:=true ;
              at:=a;
            end
        end
        else Proverka:=false;
end;
var  n,t:integer;
begin
      Write('N = ');
      Readln(n);
        Writeln;
    t:=0;
    if Proverka(n,t)
      then Writeln('DA rezultat = ',t,'*',t,'*',t)
      else Writeln('NET');
    Readln;
end.


brickbazuka 13.01.2016 20:54

Спасибо большое!А первую программу кто-нибудь сможет помочь?

Vladimir_S 13.01.2016 20:57

Цитата:

Сообщение от brickbazuka (Сообщение 1198170)
Спасибо большое!А первую программу кто-нибудь сможет помочь?

Тут так. Вопрос.
Цитата:

Имеются сведения
Где и в каком виде эти сведения "имеются"? Сколько каких вагонов в составе?

Vladimir_S 13.01.2016 21:01

Цитата:

Сообщение от Евгений (Сообщение 1198096)
2. Первый раз слышу, что "var" не употребляется в функциях. Но я слышал, что если функция кроме прямого результата делает ещё что-то, то это очень даже хорошо.

Женя, я, признаться, смущен и озадачен. Впервые вижу такой гибридный тип подпрограмм. Интересно. Ладно, будем разбираться. "Век живи, век учись - дураком помрешь". Это я о себе.

brickbazuka 13.01.2016 22:09

Цитата:

Сообщение от Vladimir_S (Сообщение 1198173)
Цитата:

Сообщение от brickbazuka (Сообщение 1198170)
Спасибо большое!А первую программу кто-нибудь сможет помочь?

Тут так. Вопрос.
Цитата:

Имеются сведения
Где и в каком виде эти сведения "имеются"? Сколько каких вагонов в составе?

Больше в условии не дано ничего, скорее всего произвольные значения

Daniellos 13.01.2016 22:50

Владимир Игоревич, насколько помню, как в процедуре, так и в функции присутствует раздел объявления переменных, при этом функция оформляется в следующем виде:

Код:

Function <имя функции>(формальные параметры): тип значения функции;
Var
  . . .
Begin
  . . .
End ;



Часовой пояс GMT +4, время: 10:27.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.