Страница 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 писал(а):в районе полуночи у всех программеров мозги явно пробуждаются...

да, самая работа начинается
обе задачи - куйня полная. не о чем говорить
зы: паскаль не помню давно это было
ззы: пацаны на паскале не играюцца
зззы: пицдец крадецца на зачот
Добавлено: Пн июн 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
зачотный топик )
айтишнегов на гитарбае фсегда было больше чем музыкантов. )))))