Страница 1 из 1

Есть тут программеры? =)

Добавлено: Пн июн 02, 2008 10:53 pm
z1m
ААА, завтра зачот, мозги не варят после инженерки никак!. Помогите составить программу на ПАСКАЛЕ.Используя процедуру решить след. задачу :
1.дан массив В(10,10). Необходимо вывести массив Х(10), каждый элемент которого равен разности максимума i-той строки и минимума этой строки, деленной на 10.
т.е. X[1]=(max(i)-min(i))/10 и т.д.

2. Решить используя процедуру без глобальной переменной. Даны 3 матрицы A,B,C 10х10. Необходимо вычислить A1=maxA строки, B1=maxB строки и С1=maxC. A1[1..10] ,B1[1..10], C1[1..10] соответственно. затем вычислить D=A1+B1+C1.

Добавлено: Пн июн 02, 2008 10:59 pm
Vad
в районе полуночи у всех программеров мозги явно пробуждаются... :)

Добавлено: Пн июн 02, 2008 11:10 pm
ANT
Vad писал(а):в районе полуночи у всех программеров мозги явно пробуждаются... :)
да, самая работа начинается
обе задачи - куйня полная. не о чем говорить :roll:

зы: паскаль не помню давно это было

ззы: пацаны на паскале не играюцца

зззы: пицдец крадецца на зачот

Добавлено: Пн июн 02, 2008 11:29 pm
z1m
ну дык и выложил тут ибо задачи не сложные, но все равно морда падает на стол, не решается никак :(

Re: Есть тут программеры? =)

Добавлено: Вт июн 03, 2008 9:53 am
MishkaZ
Друг, звыняй, паскаль уже сто лет в глаза не видел, могут быть абшибки, патамушта в блокноте писал.

Вот это первая задачка

Код: Выделить всё

procedure Write1(a: array of integer);
var
  i: integer;
  maxV, minV: integer;
  resultArr: array[10] of integer;

  procedure GetMaxMin(tempArr: array of integer; var maxValue: integer; var minValue: integer);
  var
    i: integer;
  begin
    maxValue = tempArr[0];
    minValue = tempArr[0];
    for i := 1 to 9 do
    begin
      if tempArr[i] > maxValue then
        maxValue := tempArr[i];
      if tempArr[i] < minValue then
        minValue := tempArr[i];
    end;
  end;
  
begin
  for i:= 0 to 10 do
  begin
    GetMaxMin(a[i], maxV, minV);
    resultArr[i] := (maxV - minV) div 10; //если надо нецелочисленно, то поменять тип массива
    { //если надо вывести то вместо предыдущей строчки пишем прямо вывод, и массив объявлять не надо
    Writeln((maxV - minV) div 10);
    }
  end;
end;
Вот это вторая.

Код: Выделить всё

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

procedure Write2(a, b, c: array of integer; var d: array of integer);
var
  i: integer;

  function GetMax(tempArr: array of integer; strNo: integer): integer;
  var
    i: integer;
    val: integer;
  begin
    val := tempArr[0; strNo];
    for i := 1 to 9 do
      if val < tempArr[i; strNo] then
        val := tempArr[0; strNo];
    result := val;
    // или так как указано ниже - не помню, бо последний раз 
    // юзал Delphi, там немного подругому.
    // GetMax := val; 
  end;

begin
  for i := 0 to 9 do
    d[i] := GetMax(a, i) + GetMax(b, i) + GetMax(c, i);
end;

В общем ничего не тестировалось. Чуть что гитарбаевцы все поправят. Если пришлешь мне на почту паскаль (желательно без вирусов), то могу потестить ибо на паскале последний раз что-то писал году в 1999м. Что-то могу соврать взяв из Delphi - там чуть попривольней можно обращаться с переменными и т.п.

Успехов.

Добавлено: Вт июн 03, 2008 3:28 pm
z1m
Спасибо большущее!! :)
Тему можно закрывать. Суть не в ошибках, а в самом ходе построения проги.

Добавлено: Вт июн 03, 2008 3:37 pm
z1m
первую прогу я написал так :

Код: Выделить всё

uses crt;
var B:array[1..10,1..10] of integer;
i,j:byte;
max,min,maxB,minB:integer;
procedure maxmin(var m:real;n:real;x:array of real;K:array of integer);
begin
i:=1;
j:=1;
max:=0;
min:=10000;
for i:=1 to 10 do
    for j:=1 to 10 do
    if K[i,j]>max then max:=K[i,j] ;
    if K[i,j]<min then min:=K[i,j];
   end;
x[i]:=(max-min)/10;
writeln('X',i,'=',x[i]);
end;
m:=max;
n:=min;
begin
randomize;
clrscr;
for i:=1 to 10 do
for j:=1 to 10 do B[i,j]:=random(20);
for i:=1 to 10 do begin
for j:=1 to 10 do write( B[i, j]:3);
writeln;  writeln;
end;
maxmin(maxB,minB,x,B);
writeln(X);
readln;
end.
но оно выдавало ошибку типов. Там в процедуре массив одномерный, а нужен двумерный. поэтому там вначалае нужно както через типы объявлять было.....
Короче я зачот сдал! =) Все гуд.

Добавлено: Вт июн 03, 2008 4:05 pm
MishkaZ
Поздравляю. Рад если чем-то помог.

ЗЫ: Это, если будешь в дальнейшем сталкиваться с поиском максимума/мнинмума в массиве - строчки типа min = 1000 и макс = 0 не пойдут. Прикинь у нас все числа отрицательные или больше 1000 - возникнет лажа с максимумом или минимумом. Лучший вариант максимуму и минимуму присвоить значение первого элемента массива, заодно уменьшив число итераций на 1.

Добавлено: Ср июн 04, 2008 10:21 am
Maestro
зачотный топик )
айтишнегов на гитарбае фсегда было больше чем музыкантов. )))))