Помогите решить!!!
Заполнить с клавиатуры матрицу, в которой 10 столбцов и 5 строк. (1 вариант) Найти и выделить цветом строку с наибольшей суммой.
(2 вариант) Найти и выделить цветом столбец с наибольшей суммой.
Помогите, пожалуйста, решить вторую часть задачи!
Для введения с клавиатуры 10 столбцов и 5 строчек я программу написал, а вот как найти строку с наибольшей суммой!?
***
var
a: array[1..20,1..20] of integer;
s,x,y: integer;
begin
clrscr;
for x:=1 to 10 do
for y:=1 to 5 do
begin
write('stolbets',x,'; stroka',y,'=');
readln(a[x,y]);
end;
clrscr;
textcolor(10);
for x:=1 to 10 do
for y:=1 to 5 do
begin
gotoxy(x*4,y);
write(a[x,y]);
end;
***
Здесь надо вставить следующую часть задачи...
***
readkey;
end.
***
ПОМОГИТЕ ПОЖАЛУЙСТА! СРОЧНО!!!
clrscr;
for x:=1 to 10 do
for y:=1 to 5 do
begin
write('stolbets',x,'; stroka',y,'=');
readln(a[x,y]);
end;
clrscr;
textcolor(10);
for x:=1 to 10 do
for y:=1 to 5 do
begin
gotoxy(x*4,y);
write(a[x,y]);
end;
***
А не проще random-ом воспользоваться?
randomize;
for y:=1 to 5 do
begin
for x:=1 to 10 do
begin
a[x,y]:=random(10);
write(a[x,y]:4);
end;
writeln;
end;
readkey;
а ето собсна то, что нужно для 1-го и 2-го варианта:
begin
n:=1;
for y:=1 to 5 do
begin
b[y]:=0;
for x:=1 to 10 do
begin
inc(b[y],a[x,y]);
inc(c[x],a[y,x]);
end;
if y<>1 then if b[y]>b[n] then n:=y;
end;
m:=1;
for x:=2 to 10 do if c[x]>c[m] then m:=x;
for y:=1 to 5 do
begin
if y=n then textcolor(red) else textcolor(lightgray);
for x:=1 to 10 do
begin
if x=m then textcolor(red) else if y<>n then textcolor(lightgray);
write(a[x,y]:4);
end;
writeln;
end;
end;
Вот тебе еще и вар:
b: array[1..5] of integer;
c: array[1..10] of integer;
x,y,n,m: integer;
1 - прошел строку, вычислил по ходу sum ее переменных
2 - сравниваешь max_sum с sum
begin
max_sum := sum;
row = currentrow;
end;
3 - возращаемся к 1 этапу
после оканчания цикла в row у тебя будет номер нужной строки
Задача.
Заполнить с клавиатуры матрицу, [COLOR=orangered]в которой 10 столбцов и 5 строк.[/color]
и у тебя на мой взгляд явная ошибка, то что ты в цикле перепутал кол-во строк с кол-вом столбцев:
for y:=1 to 5 do[/color]
begin
write('stolbets',x,'; stroka',y,'=');
readln(a[x,y]);
end;
нужно:
for x:=1 to 5 do
for y:=1 to 10 do[/color]
begin
write('stolbets',x,'; stroka',y,'=');
readln(a[x,y]);
end;
for indexcolumn := 1 to M do
A[indexrow,indexcolumn] := 10;{for example}
если хотим исследовать массив по столбцам
for indexrow := 1 to N do
A[indexrow,indexcolumn] := 10;{for example}
Спасибо огромное за помощь!
***
LastSoul!
Датчик случайных чисел легче, но препод акцентировал своё внимание, что в этой задаче нужно ввести числа самому, то бишь с клавиатуры! Поэтому и программа получилась соответствующая!
***
OlgaKr!
Наш препод заключил снами договорённость, что первое значение - это количество столбцов, а второе - строк!
Поэтому a[x,y]=a[1..10,1..5] значит, что в массиве 10 столбцов и 5 строчек!!!
***
Ещё раз спасибо!
Я очень ценю вашу благородность!!!
LastSoul и OlgaKr!!!
OlgaKr!
Наш препод заключил снами договорённость, что первое значение - это количество столбцов, а второе - строк!
Поэтому a[x,y]=a[1..10,1..5] значит, что в массиве 10 столбцов и 5 строчек!!!
***
не сочти тупой :), а поподробней о договоре можно? а то звучит странно, вроде у нас договор: "что день это ночь, а ночь день".
если надо работать со столбцами пусть так и говорит
p.s.
Поэтому a[x,y]=a[1..10,1..5] значит, что в массиве 10 строчек и 5 столбцов i ne inache, ili v Rossii drugie zakony :)
Но ты тоже меня не сочти тупым!
***
Ладно, а почему у меня в Pascale он печатает 10 столбцов и 5 строк, когда я задаю массив a[x,y]=a[1..10,1..5]! Серьёзно!!!
Почему?!!!
Ладно, а почему у меня в Pascale он печатает 10 столбцов и 5 строк, когда я задаю массив a[x,y]=a[1..10,1..5]!
Потомучто:
for x:=1 to 10 do
А не:
for y:=1 to 5 do
OlgaKr насчет этого уже писала...
Не знаю, можно ли сравнивать это с таким законом, как день и ночь!!!
Но ты тоже меня не сочти тупым!
***
Ладно, а почему у меня в Pascale он печатает 10 столбцов и 5 строк, когда я задаю массив a[x,y]=a[1..10,1..5]! Серьёзно!!!
Почему?!!!
Честно? не знаю :). Паскаль не учила, но в общем в любом языке, с которым знакома, нет проблем организовать печать массива таким образом (т.е. чтобы столбцы печатать как строки, и строки как столбцы )
Это код печати массива? :
for y:=1 to 5 do
begin
gotoxy(x*4,y);
write(a[x,y]);
end;
Незнакома с функцией gotoxy(x*4,y);, может она это и организует. Если кто то знает, объясните пожалуйста предназначение этой функции.
Эта функция устанавливает курсор в какую-то позицию какой-то строки на экране, например: gotoxy(20,10) установит курсор в 20-ю позицию 10-й строки (отсчет начинается с 1). Всего: 25 строк по 80 позиций.
Раз уж заговорили как устанавливать курсор в какую-то позицию какой-то строки, то:
WhereY - Узнает в какой строке находиться курсор
WhereX - Узнает в какой позиции находиться курсор