• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

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

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Паскаль. Помогите с кодом пожалуйста для четырёх маленьких программ

Рома123

Ученик
Регистрация
26 Июн 2011
Сообщения
435
Реакции
3
Баллы
0
Паскаль. Помогите с кодом пожалуйста для четырёх маленьких программ

Парни, девушки помогите пожалуйста с кодом на паскале. АПытаюсь учить Паскаль , но пока плохо разбираясь очень...а программы нужно сделать уже ко вторнику.
Вот задания для программ, и если можно то хоть с маленькими комментариями... Спасиба за ранее ребят.
1 задание) найти площадь круга с использованием процедуры и функции.
2) найти наиб.общий делитель и наим.общее кратное (для любого числа).
3) найти 1!+2!+...+n!
4) упорядочить значения трёх переменных a,b и c в порядке их убывания.

Спасибо большое кто откликается и помогает!
 
Да ладно, сделаем, не переживай. Вот только...
Парни, девушки помогите пожалуйста с кодом на паскале.
О каком Паскале речь? Turbo/Free? ABC? Это очень важно, по крайней мере для третьей задачи.
1 задание) найти площадь круга с использованием процедуры и функции.
Просто по формуле S=πR²?
2) найти наиб.общий делитель и наим.общее кратное (для любого числа).
Не понял... Что значит "для любого числа"? Вероятно, "для любой пары чисел"? Потому что и для НОК, и для НОД чисел нужно как минимум два.
 
Да.да.. Просто по формуле s=πр^2
 
И да для пары чисел пожалуйста . спасиба
 
Сегодня уже не буду, завтра с утра нарисую.
 
1 задание) найти площадь круга с использованием процедуры и функции.
Комментировать тут, по-моему, нечего.
Код:
Var
 R,S:Real;

Function Sq_C(Ro:Real):Real;
begin
 Sq_C:=Ro*Ro*Pi;
end;

Procedure Sq_Crc(Ro:Real; var S_C:Real);
begin
 S_C:=Ro*Ro*Pi;
end;

Begin
 Write('R = ');
 Readln(R);
 Sq_Crc(R,S);
 Writeln('Procedure: S = ',S:0:3);
 Writeln(' Function: S = ',Sq_C(R):0:3);
 Readln
End.
 
2) найти наиб.общий делитель и наим.общее кратное (для любого числа).
Код:
Var
 m,n,p,GCD:LongInt; {формат Longint выбран потому, что в программе будет
                     использоваться произведение чисел m и n}

Function Min(p,q:LongInt):LongInt;
{вспомогательная функция поиска минимального из двух чисел}
begin
 if p>q then Min:=q else Min:=p;
end;

Function Find_GCD(p,q:LongInt):LongInt;
{Ищем Наибольший Общий Делитель (Greatest Common Divisor) двух чисел.
Алгоритм таков: проверяем делимость бОльшего числа на меньшее, и в случае
отрицательного результата в цикле отнимаем от меньшего по единичке до
тех пор, пока не окажется, что оба исходных числа делятся на полученное.
Делимость проверяется по равенству нулю остатка от деления.}
var
 i:LongInt;
begin
 i:=Min(p,q)+1;
 repeat
  i:=i-1;
 until ((p mod i)=0) and ((q mod i)=0);
 Find_GCD:=i;
end;

Begin
 Repeat
 {Цикл организован для проверки выполнения условия строгой положительности
  вводимых чисел}
  Write('m = ');
  Readln(m);
  Write('n = ');
  Readln(n);
  if (m<=0) or (n<=0) then writeln('Both numbers must be positive!!!');
 Until (m>0) and (n>0);
 GCD:=Find_GCD(m,n);
 Writeln('Greatest Common Divisor = ',GCD);
 {Для поиска Наибольшего Общего Кратного используется теорема о том,
  что произведение НОД и НОК равно произведению самих чисел.}
 Writeln('  Least Common Multiple = ',(m*n div GCD));
 Readln
End.
 
3) найти 1!+2!+...+n!
Тут есть такая закавыка.
Дело в том, что факториал - очень быстро возрастающая функция. Отсюда сразу вытекает ограничение на параметр n. Так вот, если Ваш Паскаль поддерживает восьмибайтовый формат QWord (максимальное число - 18446744073709551615), то наибольшее n составляет 20. Если же не поддерживает - придется ограничиться четырехбайтовым LongInt (2147483647), и тогда наибольшее n есть 12. На всякий случай выкладываю оба варианта:
Код:
Var
 n,i:Byte;
 a,Sum:QWord;
Begin
 Repeat
  Write('n = ');
  Readln(n);
  if n>20 then writeln('Too big!!! Must be <=20');
 Until n<21;
 a:=1;
 Sum:=0;
 for i:=1 to n do
  begin
   a:=a*i;
   Sum:=Sum+a;
  end;
 Writeln('Sum = ',Sum);
 Readln
End.
Код:
Var
 n,i:Byte;
 a,Sum:LongInt;
Begin
 Repeat
  Write('n = ');
  Readln(n);
  if n>12 then writeln('Too big!!! Must be <=12');
 Until n<13;
 a:=1;
 Sum:=0;
 for i:=1 to n do
  begin
   a:=a*i;
   Sum:=Sum+a;
  end;
 Writeln('Sum = ',Sum);
 Readln
End.
 
4) упорядочить значения трёх переменных a,b и c в порядке их убывания.
Тут есть куча способов. Например, так. Поясняю:
1. Введены вспомогательные функции поиска максимума двух (Max2) и (Max3) чисел.
2. Из трех введенных ищется максимальное.
3. Если это не первое из них (а), то путем обмена переменной а присваивается максимальное значение, а бывшей максимальной (b или c) - старое значение переменной а.
4. Делается аналогичная манипуляция по двум оставшимся переменным (b и c).
Код:
Var
 a,b,c,d,m:Real;

Function Max2(q1,q2:real):real;
begin
 if q1>q2 then Max2:=q1 else Max2:=q2;
end;

Function Max3(q1,q2,q3:real):real;
var p:real;
begin
 p:=max2(q1,q2);
 if p>q3 then Max3:=p else Max3:=q3;
end;

Begin
 Write('a = ');
 Readln(a);
 Write('b = ');
 Readln(b);
 Write('c = ');
 Readln(c);
 m:=Max3(a,b,c);
 if m=b then
  begin
   d:=a;
   a:=b;
   b:=d;
  end;
 if m=c then
  begin
   d:=a;
   a:=c;
   c:=d;
  end;
 m:=Max2(b,c);
 if m=c then
  begin
   d:=b;
   b:=c;
   c:=d;
  end;
 Writeln(a:0:3,'  ',b:0:3,'  ',c:0:3);
 Readln
End.
 
Спасиба Вам Огромнейшее. Выручили. Щас в тетрадку перепишу,поразбираться попробую. Спасибо ещё раз Вам
 
Назад
Сверху