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

Технический форум (http://www.tehnari.ru/)
-   Delphi, Kylix and Pascal (http://www.tehnari.ru/f43/)
-   -   Написать программу... (http://www.tehnari.ru/f43/t62675/)

Рысена 16.01.2012 20:52

Написать программу...
 
ПРОШУ!!! ПОМОГИТЕ!!! В ЧЕТВЕРГ ЭКЗАМЕН!!! А ЭТО ДОПУСК!!!*** (циклы)
:tehnari_ru_281::tehnari_ru_281::tehnari_ru_281::t ehnari_ru_281::tehnari_ru_281:
А) Дан набор ненулевых чисел; признак его завершения число 0. Вывести сумму всех положительных четных чисел из данного набора. Если требуемые числ в наборе отсутствуют, то вывести 0.

Б) Написать программу, которая вычисляет наибольший общий делитель 2х целых чисел.

В) Дано целое число N и набор из N вещественных чисел. Вывести сумму и произведение чисел из данного набора.

*** (одномерный и двумерный массивы)

Г) Дан одномерный массив. Переставить в обратном порядке элементы массива, распространив между максимальными и минимальными элементами.

Д) Дана матрица размером 5х10. Вывести номер ее первой и последней строки, содержащей только положительные элементы. Если таких строк нет, то вывести 0.

***
Е) Даны два целых числа A и B (A<B). Вывести все целые числа, расположенные между данными числами (не включая сами эти числа) в порядке их убывания, а так же количество N этих чисел.


*** (Процедуры и функции)

Ж) Даны два числа. Поменять местами их значения.
Даны два целых числа. Поменять местами их значения.

З) Дано N целых чисел. Найти среди них число, у которого сумма цифр имеет максимальное значение.

Vladimir_S 17.01.2012 12:23

Цитата:

Сообщение от Рысена (Сообщение 654408)
ПРОШУ!!! ПОМОГИТЕ!!! В ЧЕТВЕРГ ЭКЗАМЕН!!! А ЭТО ДОПУСК!!!

Понятно. Ну что же - с пробуждением! Надеюсь, Вашему сладкому сну в течение целого семестра никто не мешал? Понимаю: всё было так прекрасно, а тут, откуда ни возьмись - сессия! Ну что же - не оставлять же Вас один на один с этим кровожадным чудовищем... Поможем, ладно. Только вот одно обстоятельство. Итак, Вы последовали твёрдо установившейся на нашем форуме традиции: никогда и при каких обстоятельствах не выдавать тайны языка программирования, на котором следует выполнить задание. А на наши отчаянные просьбы, увещевания, угрозы и т.п. не обращать ни малейшего внимания: не скажу, и всё тут! Ну что же, в таком случае я оставляю выбор за собой, и выбираю Free Pascal. А если у Вас Delphi или даже Pascal ABC, то это - Ваши проблемы.
Цитата:

Сообщение от Рысена (Сообщение 654408)
А) Дан набор ненулевых чисел; признак его завершения число 0. Вывести сумму всех положительных четных чисел из данного набора. Если требуемые числ в наборе отсутствуют, то вывести 0.

Код:

Var
 a:Integer;
 Sum:LongInt;
Begin
 Sum:=0;
 Repeat
  Write('Next element: ');
  Readln(a);
  If (a>0) and ((a mod 2)=0) then Inc(Sum,a);
 Until a=0;
 Writeln('Sum = ',Sum);
 Readln;
End.

Цитата:

Сообщение от Рысена (Сообщение 654408)
Б) Написать программу, которая вычисляет наибольший общий делитель 2х целых чисел.

Код:

Var
 a,b,d,NOD:Word;
Begin
 Write('a= ');
 Readln(a);
 Write('b= ');
 Readln(b);
 If a>b then NOD:=b+1 else NOD:=a+1;
 Repeat
  Dec(NOD);
 Until ((a mod NOD)=0) and ((b mod NOD)=0);
 Writeln('NOD= ',NOD);
 Readln
End.

Цитата:

Сообщение от Рысена (Сообщение 654408)
В) Дано целое число N и набор из N вещественных чисел. Вывести сумму и произведение чисел из данного набора.

Код:

Var
 N,i:Byte;
 A,P,S:Extended;
Begin
 Write('N= ');
 Readln(N);
 S:=0;
 P:=1;
 For i:=1 to N do
  begin
  Write('Element N',i:2,': ');
  Readln(A);
  S:=S+A;
  P:=P*A;
  end;
 Writeln('Sum = ',S:0:5);
 Writeln('Product = ',P:0:8);
 Readln;
End.

Цитата:

Сообщение от Рысена (Сообщение 654408)
Г) Дан одномерный массив. Переставить в обратном порядке элементы массива, распространив между максимальными и минимальными элементами.

Простите - ни бельмеса не понял. Как это "распространив"? В каком смысле?
Цитата:

Сообщение от Рысена (Сообщение 654408)
Д) Дана матрица размером 5х10. Вывести номер ее первой и последней строки, содержащей только положительные элементы. Если таких строк нет, то вывести 0.

Код:

Var
 M:Array[1..5,1..10] of Integer;
 i,j,first_i,last_i:Byte;
 b:boolean;
Begin
 Randomize;
 first_i:=0;
 last_i:=0;
 For i:=1 to 5 do
  begin
  For j:=1 to 10 do
    begin
    M[i,j]:=-10+Random(100);
    Write(M[i,j]:5);
    end;
  Writeln;
  end;
 Writeln;
 Writeln;
 For i:=1 to 5 do
  begin
  b:=true;
  j:=0;
  Repeat
    Inc(j);
    If M[i,j]<=0 then b:=false;
  Until Not(b) or (j=10);
  If b then
    begin
    if first_i=0 then first_i:=i
    else last_i:=i;
    end;
  end;
 Writeln('First line has number ',first_i);
 Writeln('Last line has number ',last_i);
 Readln;
End.

Цитата:

Сообщение от Рысена (Сообщение 654408)
Е) Даны два целых числа A и B (A<B). Вывести все целые числа, расположенные между данными числами (не включая сами эти числа) в порядке их убывания, а так же количество N этих чисел.

Код:

Var
 A,B,i:Integer;
Begin
 Write('A= ');
 Readln(A);
 Write('B= ');
 Readln(B);
 For i:=B-1 downto A+1 do write(i:8);
 Writeln;
 Writeln;
 Writeln('N = ',B-A-1);
 Readln;
End.

Цитата:

Сообщение от Рысена (Сообщение 654408)
Ж) Даны два числа. Поменять местами их значения. Даны два целых числа. Поменять местами их значения.

Код:

Var
 a,b:Integer;

Procedure Exchange(q,p:Integer; var q1:Integer; var p1:Integer);
begin
 q1:=p;
 p1:=q;
end;

Begin
 Write('a= ');
 Readln(a);
 Write('b= ');
 Readln(b);
 Writeln;
 Exchange(a,b,a,b);
 Writeln('a= ',a);
 Writeln('b= ',b);
 Readln
End.

Цитата:

Сообщение от Рысена (Сообщение 654408)
З) Дано N целых чисел. Найти среди них число, у которого сумма цифр имеет максимальное значение.

Код:

Var
 A:Array[1..100] of Word;
 N,Max_S,i,I_max:Byte;

Function Sum_of_figures(p:Word):Byte;
var
 d:Word;
 S,j:Byte;
begin
 d:=10000;
 S:=0;
 For j:=1 to 5 do
  begin
  S:=S+(p div d);
  p:=p mod d;
  d:=d div 10;
  end;
 Sum_of_figures:=S;
end;

Begin
 Randomize;
 Write('N= ');
 Readln(N);
 Writeln;
 Writeln('Initial array:');
 For i:=1 to N do
  begin
  A[i]:=Random(65535);
  Write(A[i]:8);
  end;
 Writeln;
 Writeln;
 Writeln('Sums of figures:');
 Max_S:=0;
 For i:=1 to N do
  begin
  Write(Sum_of_figures(A[i]):8);
  If Sum_of_figures(A[i])>Max_S then
    begin
    Max_S:=Sum_of_figures(A[i]);
    I_max:=i;
    end;
  end;
 Writeln;
 Writeln;
 Writeln('Maximal sum of figures (',Max_S,') has the element N',I_max,' equal to ',A[I_max]);
 Readln;
End.



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

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