powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Массивы с помощью процедур и функций
8 сообщений из 8, страница 1 из 1
Массивы с помощью процедур и функций
    #39472411
weathes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Написать подпрограмму нахождения элементов двумерного массива целых чисел размера 6х4 в промежутке -10;9 , вычислить произведение этих элементов, в качестве входного параметра подпрограммы должен быть двумерный массив, а выходным параметром - произведение заданных элементов. Составить программу, которая определяет и заполняет три различных массива случайными числами, вызывает данную подпрограмму для этих массивов и находит максимальное число таких элементов. Подпрограмма кроме выше сказанного должна выводить на экран линейный массив, найденные элементы, их сумму и количество


Я в общем, пытался написать программу. Дошел до "Составить программу, которая..." и перестал понимать, что хочет задание.
Мне советовали к вам обратиться.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
var A:array [1..6,1..4] of integer; 
i,j:integer;
x,y,z:A;
p,k:real;
procedure WTF (e:A; var k,p:real);
begin
p:=0;
k:=0;
for i:=1 to 6 do begin
for j:=1 to 4 do begin
write(a[i,j]:3);
if ((a[i,j]>=-10) and (a[i,j]<=9)) the begin
p:=p*A[i,j];
k:=k+1;
end;
end;
writeln
end;
writeln ('Произведение заданных чисел',p);
writeln ('Количестве элементов в промежутке от -10 до 9',k);



Вот. Дошел до этого.
Составить программу, которая определяет и заполняет три различных массива случайными числами, вызывает данную подпрограмму для этих массивов и находит максимальное число таких элементов. Подпрограмма кроме выше сказанного должна выводить на экран линейный массив, найденные элементы, их сумму и количество

Не понимаю что хотят дальше
...
Рейтинг: 0 / 0
Массивы с помощью процедур и функций
    #39472427
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
weathesДошел до "Составить программу, которая..." и перестал понимать, что хочет задание.
Мне советовали к вам обратиться.


Почему бы не обратиться к тому, кто дал задание - он всяко лучше знает.
...
Рейтинг: 0 / 0
Массивы с помощью процедур и функций
    #39472433
weathes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
schi,

преподу? ну он один раз объясняет, и то не задачи, которые нам попадаются, в общем тему, когда спрашиваешь, не помогает
...
Рейтинг: 0 / 0
Массивы с помощью процедур и функций
    #39472445
Жышы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
weathesНаписать подпрограмму нахождения элементов двумерного массива целых чисел размера 6х4 в промежутке -10;9 , вычислить произведение этих элементов, в качестве входного параметра подпрограммы должен быть двумерный массив, а выходным параметром - произведение заданных элементов. Составить программу, которая определяет и заполняет три различных массива случайными числами, вызывает данную подпрограмму для этих массивов и находит максимальное число таких элементов. Подпрограмма кроме выше сказанного должна выводить на экран линейный массив, найденные элементы, их сумму и количество


Я в общем, пытался написать программу. Дошел до "Составить программу, которая..." и перестал понимать, что хочет задание.
Мне советовали к вам обратиться.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
var A:array [1..6,1..4] of integer; 
i,j:integer;
x,y,z:A;
p,k:real;
procedure WTF (e:A; var k,p:real);
begin
p:=0;
k:=0;
for i:=1 to 6 do begin
for j:=1 to 4 do begin
write(a[i,j]:3);
if ((a[i,j]>=-10) and (a[i,j]<=9)) the begin
p:=p*A[i,j];
k:=k+1;
end;
end;
writeln
end;
writeln ('Произведение заданных чисел',p);
writeln ('Количестве элементов в промежутке от -10 до 9',k);



Вот. Дошел до этого.
Составить программу, которая определяет и заполняет три различных массива случайными числами, вызывает данную подпрограмму для этих массивов и находит максимальное число таких элементов. Подпрограмма кроме выше сказанного должна выводить на экран линейный массив, найденные элементы, их сумму и количество

Не понимаю что хотят дальше

Исполни задание буквально . То есть, так, как написано.
Написано - "подпрограмма" - оформи в виде подпрограммы. То есть, в виде функции паскаля.
Написано - "линейный массив" - значит, создай одномерный массив с результатами и по одному элементу выведи их.
Сложи все элементы этого массива и выведи сумму. Выведи размер этого массива (т.е., фактически, их количество).

И так, тебе нужно научиться в процессе работы создавать массив элементов заданного типа и нужной длины.
А также выносить часть кода в функции ("подпрограммы").

Андырстэнд?
...
Рейтинг: 0 / 0
Массивы с помощью процедур и функций
    #39472450
weathes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Жышы,

Жышы пищи с буквой ы.
Ай эм но андерстенд. Но как вы сказали, я попробовал создать три разных массива с помощью случайных чисел.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
var A:array [1..6,1..4] of integer; 
    i,j:integer;
    x,y,z:A;
    p,k:real;
    procedure WTF (e:A; k:integer; var p:real);
    begin
    p:=0;
    k:=0;
         for i:=1 to 6 do begin
                          for j:=1 to 4 do begin
                                           write(a[i,j]:3);
                                           if ((a[i,j]>=-10) and (a[i,j]<=9)) the begin
                                                                                  p:=p*A[i,j];
                                                                                  k:=k+1;
                                                                                  end;
                                           end;
                          writeln
                          end;
   writeln ('Произведение заданных чисел',p);
   writeln ('Количестве элементов в промежутке от -10 до 9',k);
    begin 
    for i:=1 to 6 do
    for j:=1 to 4 do
                    begin
                    x[i,j]:=-10+random(30);
                    y[i,j]:=-15+random(20);
                    z[i,j]:=-30+random(80);
                    end;
   WTF (x,k,p);
   ..
WTF (y,k,p);




Теперь не понимаю часть, где говорится о максимальном числе таких элементов. И крайнее предложение. Суть объясните пожауйлста
...
Рейтинг: 0 / 0
Массивы с помощью процедур и функций
    #39472493
Жышы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
weathes,

ты просто читай задание по словам и пытайся его интерпретировать.

Определи сперва, можно ли вообще данное задание выполнить. Смотри, например:
например массива целых чисел размера 6х4 в промежутке -10;9 , вычислить произведение этих элементов

6х4 = это 24 элемента. Предположим, карты (случайное заполнение, по условию) легли так, что все значения в массиве будут равны 9. То, есть, подходить по условию (-10..9)

Произведение 9х9х9х9х9х9х9х9х9х9х9х9х9х9х9х9х9х9х9х9х9х9х9х9 = 79766443076872509863361.
Где ты будешь хранить этот результат?
В Integer не получится, туда больше 2147483647 не влезет.
В Int64 - тоже не влезет, 9223372036854775807 его максимальная величина.

В общем, иди к преподу, расспроси его и расскажи про возможные "проблемы".
...
Рейтинг: 0 / 0
Массивы с помощью процедур и функций
    #39472497
weathes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Жышы,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
Type A=array [1..6,1..4] of integer; 
    var i,j,k:integer;
        x,y,z:A;
        p:real;
    procedure WTF (e:A; k:integer; var p:real);
    var i,j:integer;
    begin
    p:=1;
    k:=0;
         for i:=1 to 6 do begin
                          for j:=1 to 4 do begin
                                           write(E[i,j]:3);
                                           if ((E[i,j]>=-10) and (E[i,j]<=9)) then begin
                                                                                    p:=p*E[i,j];
                                                                                    k:=k+1;
                                                                                    end;
                                           end;
                          writeln
                          end;
   writeln ('Произведение заданных чисел ',p);
   writeln ('Количестве элементов в промежутке от -10 до 9 ',k);
   end;
   begin                                                               

    begin 
    for i:=1 to 6 do
    for j:=1 to 4 do
                    begin
                    x[i,j]:=-10+random(30);
                    y[i,j]:=-15+random(20);
                    z[i,j]:=-30+random(80);
                    end;
    WTF(x,k,p);
    writeln;
    writeln;
    WTF(y,k,p);
    writeln;
    writeln;
    WTF(z,k,p);
    end;
    end.



Я думаю, что я правильно выполнил до момента где написано "и находит максимальное число... и далее"
я этот момент не пойму. А так, программа работает.
...
Рейтинг: 0 / 0
Массивы с помощью процедур и функций
    #39472556
Жышы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
weathes,

мой сынуля - школьник написал тебе эту программу.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
program Cobra;

{$APPTYPE CONSOLE}

uses
  SysUtils, Math;
const
  // Границы массива
  c_Dim1_min = 0;
  c_Dim1_max = 5;

  c_Dim2_min = 0;
  c_Dim2_max = 3;
  // Диапазон значений для отбора:
  c_min = -10;
  c_max = 9;
  // Число итераций
  c_iter = 3;
type
  tCobraArray = array[c_Dim1_min..c_Dim1_max, c_Dim2_min..c_Dim2_max] of Integer;
var
  fMaxItems: Integer; // Максимальное число подходящих элементов

function TheCobraIsAttacking(const aSrcArr: tCobraArray; out aMultError: string): Integer;
var
  i: Integer;
  j: Integer;
  fIsExists: Boolean;
  fCnt: Integer;
  fSum: integer;
  fSuitArray: array of Integer;
begin
  Result := 0;
  aMultError := '';
  fCnt := 0;
  fSum := 0;
  fSuitArray := nil;
  fIsExists := False;
  for i := c_Dim1_min to c_Dim1_max do
    for j := c_Dim2_min to c_Dim2_max do
      if (aSrcArr[i, j] >= c_min) and (aSrcArr[i, j] <= c_max) then begin
        // Вычисление произведений
        if not fIsExists then begin
          Result := aSrcArr[i, j];
          fIsExists := True
        end else
        try
          Result := Result * aSrcArr[i, j];
        except
          on E: Exception do
            aMultError := E.Message;
        end;
        SetLength(fSuitArray, Length(fSuitArray) + 1); // Заполнение линейного массива
        fSuitArray[High(fSuitArray)] := aSrcArr[i, j];
        Inc(fCnt); // Подсчет количества подходящих элементов в массиве
        Inc(fSum, aSrcArr[i, j]) // Суммирование элементов
      end;

  Writeln('Items :'); // Показ подходящих элементов
  for i := 0 to High(fSuitArray) do
    Write(fSuitArray[i]: 4);

  Writeln;
  Writeln('Total items :', fCnt); // Показ количества
  fMaxItems := Max(fMaxItems, fCnt)  // Вычисление максимальное количеств элементов

end;

procedure CobraShow(const aSrcArr: tCobraArray);
var
  i: Integer;
  j: Integer;
begin
  Writeln('Src array :');
  for i := c_Dim1_min to c_Dim1_max do begin
    for j := c_Dim2_min to c_Dim2_max do
      Write(aSrcArr[i, j]: 4);
    Writeln;
  end;

end;

procedure CobraInit(var aSrcArr: tCobraArray);
var
  i: Integer;
  j: Integer;
begin
  Randomize;
  for i := c_Dim1_min to c_Dim1_max do
    for j := c_Dim2_min to c_Dim2_max do
      aSrcArr[i, j] := 18 - Random(36); // Заполнение случайными числами -18..+18
end;

procedure doIt;
var

  faSrcArr: tCobraArray;
  fMult: Integer;
  fMultErr: string;
  i: Integer;
begin
  Randomize;
  fMaxItems := 0;
  Writeln('Cobra');
  Writeln('Copyright (c) 2017 Zhyshy');
  for i := 1 to c_iter do begin
    Writeln('----------- Iteration # ', i);
    CobraInit(faSrcArr); // Заполнение случайными значениями
    CobraShow(faSrcArr); // Показ исходного массива
    fMult := TheCobraIsAttacking(faSrcArr, fMultErr);
    writeln;
    write('Mult = '); // Показ произведения подходящих элементов
    if fMultErr <> '' then
      writeln(fMultErr)
    else
      writeln(fMult);
  end;
  Writeln('===============');
  Writeln('Copbra: Max Items = ', fMaxItems);



end;
begin
  doIt();
  Readln;
end.




С тебя печенька.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Массивы с помощью процедур и функций
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]