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

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

kaprizzzz 24.10.2010 19:46

Интересные программы
 
Ребят. Обращаюсь к Вам за помощью. У меня ГОСы на носу, а вот с Паскалем не дружу и поэтому нет одного зачета.
Прошу написать проги и рассказать что и как в них. Какие-то элементарные вещи я знаю (напр. var-описание переменной, array -массив), но этого мало.
Задача 1
Вводятся длина одномерного массива, состоящего из целых чисел, и его элементы. С этим массивом произвести указанные действия - найти минимум среди чисел, кратных 4 и вывести результаты. Если используется "заданное число", то оно тоже вводится.

Задача 2
Вводятся размеры двумерного массива, состоящего из целых чисел, и его элементы. С этим массивом произвести указанные действия - найти столбец с минимальным средним арифметическим чётных чисел и вывести результаты.
Очень на Вас расчитываю.

MrSTEP 24.10.2010 20:33

Вопрос по первой задаче: о каком "заданном числе" идет речь? Я так понял, оно не используется, значит и не нужно ничего с ним делать?

kaprizzzz 24.10.2010 20:41

да, в данном варианте не задано. те как я понимаю мы должны ввести вектор произвольно с клавиатуры.

MrSTEP 24.10.2010 20:49

Ну сейчас будет

Vladimir_S 24.10.2010 20:51

Вот:
Код:

VAR
 A:ARRAY[1..100] of INTEGER;
 i,N,Minimum:Integer;
BEGIN
 Write('N= ');
 ReadLn(N);
 Minimum:=32000;
 For i:=1 to N do
  begin
  Write('A[',i:2,']= ');
  ReadLn(A[i]);
  If (A[i]<Minimum) and ((A[i] mod 4)=0) then Minimum:=A[i];
  end;
 WriteLn('Minimum= ',Minimum);
 ReadLn;
END.

Здесь предполагается, что максимальный размер массива - 100 элементов. Исходное значение минимума (32000) - просто произвольное очень большое число, заведомо превышающее вводимые с консоли числа.
Код:

VAR
 A:ARRAY[1..100,1..100] of INTEGER;
 i,j,Jfix,N,M,p,q:Integer;
 Minimum,Medium:Real;
BEGIN
 Write('Number of lines (N)= ');
 ReadLn(N);
 Write('Number of columns (M)= ');
 ReadLn(M);
 Minimum:=100000;
 For i:=1 to N do
  For j:=1 to M do
  begin
    Write('A[',i:2,',',j:2,']= ');
    ReadLn(A[i,j]);
  end;
 q:=0;
 Jfix:=0;
 For j:=1 to M do
  begin
  Medium:=0;
  p:=0;
  For i:=1 to N do
    If (A[i,j] mod 2)=0 then
    begin
      Medium:=Medium+A[i,j];
      p:=p+1;
    end;
  If p>0 then
    begin
    Medium:=Medium/p;
    If Medium<Minimum then
      begin
        Minimum:=Medium;
        Jfix:=j;
      end;
    q:=q+1;
    end;
  end;
 If q>0 then
  WriteLn('Column number= ', Jfix,'  Minimum= ',Minimum)
 else
  WriteLn('Array contains no even numbers');
 ReadLn;
END.

Здесь несколько сложнее. Проверяется, имеются ли в столбце четные члены (если да, то p>0), а также имеются ли таковые в матрице в целом (да соответствует q>0). Исходное значение Minimum как и в предыдущем случае - некое произвольное большое число (в программе взято 100000).

Vladimir_S 24.10.2010 20:51

Цитата:

Сообщение от MrSTEP (Сообщение 409057)
Ну сейчас будет

Ох... извините...

MrSTEP 24.10.2010 20:57

Ах, не успел. Ну ничего

Vladimir_S 24.10.2010 21:07

Сейчас заметил, что номер столбца забыл зафиксировать и вывести. Исправил.

kaprizzzz 24.10.2010 21:32

А теперь можно для блондинок. Во второй задаче. Что мы подразумеваем под: Jfix, p, q.
i и j это индексы матрицы
m и n это число строк и столбцов соотв.
И если можно поэтапно, что в каком этапе мы делаем.
Спасибо за понимание.

Vladimir_S 24.10.2010 22:24

Цитата:

Сообщение от kaprizzzz (Сообщение 409075)
А теперь можно для блондинок. Во второй задаче. Что мы подразумеваем под: Jfix, p, q.
i и j это индексы матрицы
m и n это число строк и столбцов соотв.
И если можно поэтапно, что в каком этапе мы делаем.
Спасибо за понимание.

Jfix - это искомый номер столбца, в котором наименьшее значение среднего по четным числам.
p и q это служебные параметры. В программе (после ввода самОй матрицы) последовательно перебираются столбцы. Вначале каждого исследования столбца параметру p присваивается значение p=0. Далее считается количество четных чисел в столбце - это и есть p. И только если p оказывается для данного столбца отличным от нуля, тогда, во-первых, производится деление суммы четных чисел на это самое p, и во-вторых, производится сравнение полученного среднего значения с найденным ранее (по предыдущим столбцам) минимальным средним.
Что касается q, то он отвечает за наличие четных чисел ВО ВСЕЙ МАТРИЦЕ. Если таковых не обнаруживается, то выводится соответствующее сообщение: "Четных чисел в массиве нет".


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

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