Помощь - Поиск - Пользователи - Календарь
Полная версия: Матрица
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Carola
Ещё одна..Последняя зачётная задачка...Решить подробно и полностью.Расцелую всех.

Ввести размерность матрицы и значения ее элементов. Построить вектор В, где В(i) - максимальное значение в i-ом столбце.

Задание второе....(сперва решить,а потом это)

Сделать в виде МЕНЮ.(очень нужно)

1. Ввод данных
2. Ввод массива
3. <задание по лабе>
4. ....
0. Выход

после нажатия цифры на клавиатуре я должна перейти к указанному действию, после выполнения которого вернуться в меню.
klem4
Ты хоть начни делать .. поможем, не принято у нас полные решения давать ... rolleyes.gif

Задача твоя решалась неоднократно, поищи по форуму... с меню тоже все просто, попробуй сдеалть сама, не получится поправим.
Carola
Цитата(klem4 @ 14.12.2005 22:31) *

Ты хоть начни делать .. поможем, не принято у нас полные решения давать ... rolleyes.gif

Задача твоя решалась неоднократно, поищи по форуму... с меню тоже все просто, попробуй сдеалть сама, не получится поправим.


Мммм.как я сделаю сама,если даже не знаю что такое Паскаль....Объясняла...Из больницы я...Знала бы и правдда сама сделала..Зачёт уже сдавать надо....Я не успею даже прочитать что и как делать.
klem4
вот посмотри, набросал, далеко не идеально, но думаю поможет тебе разобраться что к чему ...

uses crt;
const
n=3;
type
TVector = array[1..n] of integer;
TMatrix = array[1..n] of TVector;
var
vector : TVector;
matrix : TMatrix;
quit : boolean;

procedure InputMatrix(var x : TMatrix);
var
i,j : byte;
begin
for i := 1 to n do
for j := 1 to n do begin
write('x[',i,',',j,']=');
readln(x[i,j]);
end;

writeln;
writeln('Input Done');
readln;
end;

procedure PrintMatrix(x : TMatrix);
var
i,j : byte;
begin
clrscr;
for i := 1 to n do begin
writeln;
for j := 1 to n do
write(x[i,j]:3,' ');
end;

writeln;
writeln('Print Done');
readln;
end;

function GetMax(var x : TMatrix; col : byte) : integer;
var
i : byte;
max : integer;
begin
max := 1;
for i := 2 to n do
if x[i,col] > x[max, col] then
max := i;
GetMax := x[max,col];

end;

procedure GetVector(var v : TVector; x : TMatrix);
var
j : byte;
begin
for j := 1 to n do
v[j] := GetMax(x,j);

writeln;
writeln('Get Vector Done');
readln;
end;

procedure PrintVector(v : TVector);
var
i : byte;
begin
clrscr;
for i := 1 to n do
writeln('v[',i,']=',v[i]);

writeln;
writeln('Print Vector Done');
readln;
end;

procedure Menu(var q : boolean);
var
choice : char;
begin
clrscr;
writeln('1 -> Input Matrix');
writeln('2 -> Print Matrix');
writeln('3 -> Get Vector');
writeln('4 -> Print Vector');
writeln;
writeln('0 -> Quit');

repeat
choice := readkey;
until choice in ['0'..'4'];

case choice of
'1' : InputMatrix(matrix);
'2' : PrintMatrix(matrix);
'3' : GetVector(vector, matrix);
'4' : PrintVector(vector);
'0' : quit := true;
end;

exit;
end;

begin
clrscr;
quit := false;
while not(quit) do Menu(quit);
end.
volvo
Еще один, раз уж сделал...
uses crt;

Const
max_n = 10; // rows
max_m = 10; // cols
Type
Vector = Array[1 .. max_m] Of Integer;
Matrix = Array[1 .. max_n, 1 .. max_m] of Integer;

Procedure Read_Dimension(var n, m: Integer);
Begin
Repeat
Write('Enter the rows count: [1 .. ', max_n, '] ');
ReadLn(n);
Until (n > 0) and (n <= max_n);

Repeat
Write('Enter the columns count: [1 .. ', max_m, '] ');
ReadLn(m);
Until (m > 0) and (m <= max_m);
End;

Procedure Read_Matrix(Var A: matrix; n, m: Integer);
Var
i, j: Integer;
Begin

For i := 1 To n Do
For j := 1 To m Do Begin
Write('A[', i:2, ',', j, '] = '); ReadLn(A[i,j]);
End

End;


Procedure Calculate(A: matrix; n, m: Integer;
Var B: vector);
Var
i, j, max: Integer;
Begin

For j := 1 To m Do Begin

max := a[1, j];
For i := 2 To n Do
If a[i, j] > max Then max := a[i, j];
B[j] := max;

End;
WriteLn('Done');

End;

Procedure Show_Array(B: Vector; m: integer);
Var
i: integer;
Begin
For i := 1 To m Do
Write(B[i]:4);
Writeln;
End;


var
A: Matrix;
B: Vector;
i, m, n: integer;

menu: char;

const
menu_size = 5;
menu_str: array[1 .. menu_size] of string =
('1. Enter dimensions',
'2. Enter the matrix',
'3. Calculate ',
'4. Show an array ',
'0. Exit ');

begin
repeat
clrscr;
for i := 1 to menu_size do begin
gotoxy(10, 10+i); write(menu_str[i]);
end;

repeat
menu := readkey;
until menu in ['0' .. '4'];

ClrScr;
case menu of
'1': Read_Dimension(n, m);
'2': Read_Matrix(A, n, m);
'3': Calculate(A, n, m, B);
'4': Show_Array(B, m);
'0': WriteLn('Halting...');
end;
WriteLn;
WriteLn('Press ENTER to continue...');
ReadLn;

until menu = '0';
end.
Carola
give_rose.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.