Автор: Clane 13.11.2002 23:31
Вот алгоритм поиска максимального числа в массиве.
Код
program maxmassiv(input,output);
var a: array [1..10] of Byte;
Max:integer;
I:byte;
begin
I:=0;
for I:=1 to 10 do
begin
writeln('Enter an integer:');
readln(a[i]);
end;
Max:=A[1];
For I:=1 to 10 do
begin
if Max<A[I] then Max:=A[I];
end;
writeln(Max);
readln;
readln;
end.
Автор: Alex 14.11.2002 0:33
Ну это Clane по-моему примитивщина.Мне кажется здесь надо писать алгоритмы посложнее.Например слияние, переворот на 90 градусов и тд и тп.
Автор: Clane 14.11.2002 0:50
Может это и примитивщина, но для новичков сойдет.. Тем более что просто никто ничего не пишешь, вот я решил что-то черкнуть..
Автор: Ivs 14.11.2002 1:22
Определение максимального из 2-х чисел:
max:=int((abs(a-B)+a+B)/2);
усе.............
Автор: Ivs 15.11.2002 1:32
Цитата
Ну это Clane по-моему примитивщина.Мне кажется здесь надо писать алгоритмы посложнее.Например слияние, переворот на 90 градусов и тд и тп.
Ну напиши -- посмотрим...........
Автор: Alex 15.11.2002 20:01
ЧО написать-то не понял!!!!
Автор: Alex 15.11.2002 21:30
Если переворот на 90 градусов(например вправо), то вот он алгоритм(мой):
program perevorot;
Код
uses Crt;
const n=5;
var a,c:array [1..n,1..n] of integer;i,j,s:integer;
begin
ClrScr;
Randomize;
s:=n;
for i:=1 to n do begin
for j:=1 to n do begin
a[i,j]:=Random(21)+10;
c[j,s]:=a[i,j];
write(a[i,j],' ');
end;
s:=s-1;
writeln;
end;
writeln;
for i:=1 to n do begin
for j:=1 to n do begin
a[i,j]:=c[i,j];
write(a[i,j],' ');
end;
writeln
end;
readln
end.
если на 180 градусов (тоже вправо), то алгоритм чуть-чуть изменяется на:
Код
s:=n;
for i:=1 to n do begin
k:=n;
for j:=1 to n do begin
a[i,j]:=Random(21)+10;
c[s,k]:=a[i,j];
write(a[i,j],' ');
k:=k-1;
end;
s:=s-1;
writeln;
end;
соответственно переменную k надо описать.
Автор: Dogmatic 1.12.2002 0:56
Clane, во 2-м цикле не for i := 1 to 10, а for i := 2 to 10, зачем лишний раз сравнивать Max и A[1]=Max. К тому же begin и end в цикле с одним оператором не нужны. Знающий поймет, но ты же для новичков пишешь, должно быть как конфетка.
Автор: Clane 1.12.2002 1:42
Угу.. Понял.. Просто иногда сложно в час ночи выловить какие - то баги.. Спасибки еще раз.. Рад видеть тебя на форуме..
Автор: Vit 4.01.2003 7:39
Кстати если кого интересует как это сделать в дельфи, то в модуле Math есть готовая функция для этого
Автор: chucha 23.04.2003 11:47
Может, кто поможет составить программу!!!
В Pascale – только учусь
Не могу составить программу:
Дана матрица а:array[1..n,1..m]
мне необходимо суммировать в каждой строке элементы, которые равны 1,
потом полученные результаты от каждой строки сравнить между собой и вывести на экран номер той строки, в которой сумма будет максимальной.
Например:
- в этой матрице программа должна вывести строку№2, т.к. в ней сумма элементов равных 1 больше чем в остальных строках.
Никак не разберусь, хожу только вокруг да около.
Заранее большое благодарю тем, кто поможет разобраться с этой задачей.
Автор: Shadow 23.04.2003 14:59
:D
их индексы равны единице
или сами числа
Автор: chucha 23.04.2003 15:29
равны единице
сами числа
Пример:
первоя строка[1 0 1 0 0]
втрая строка [1 1 1 1 1]
третья строка[1 0 1 0 1]
в этой матрице программа должна вывести строку№2, т.к. в ней сумма элементов равных 1 больше чем в остальных строках.
Никак не разберусь, хожу только вокруг да около.
Заранее большое благодарю тем, кто поможет разобраться с этой задачей.
Автор: Shadow 23.04.2003 16:23
:D sorry
а только 1 и 0 или друг числа
Автор: chucha 23.04.2003 16:52
В принципе подсчет только тех элементов матрицы, которые =1, а остальные не важно ноль там стоит или другое число.
вообще матрица должна вводится в ходе программы, т.е. программа должна сделать запрос на ввод матрицы с клавиатуры.
Автор: Shadow 24.04.2003 0:24
:'(
отвратиетельный дебильный код написал но работает вроде
---
там протестируешь
-----
кстати насчет нахождение иаксимально числа в массиве а не проще его
от сортировать по возраст и взять последнее число из массива
---
Код
Uses Crt,Dos;
Const color : Array [0..6,0..6] Of byte =
((1,1,1,1,1,1,1),{4}
(1,1,1,1,1,8,1), {6}
(1,1,1,1,1,8,8), {5}
(6,7,8,1,1,1,1), {4}
(1,1,1,1,6,1,1), {3}
(1,1,6,7,5,1,1), {2}
(1,2,4,0,5,6,0)); {1 13 chtuck}
Var
x,y,x1,y1,d,v,g,n,n1,sum:byte;
x2:byte;
y2:byte;
s,s1,s2,s3,s4,s5,s6:byte;
p,p1,p2,p3,p4:byte;
st:array[0..7] of integer;
label we;
BEGIN
n:=6;
n1:=6;
for x:=0 to n do
for y:=0 to n1 do begin
x1:=color[x,y];
if x1=1 then begin
sum:=sum+1;
end;
if x=0 then if y=n then begin
s:=sum;
st[0]:=s;
sum:=0;
end;
if x=1 then if y=n then begin
s1:=sum;
st[1]:=s1;
sum:=0;
end;
if x=2 then if y=n then begin
s2:=sum;
st[2]:=s2;
sum:=0;
end;
if x=3 then if y=n then begin
s3:=sum;
st[3]:=s3;
sum:=0;
end;
if x=4 then if y=n then begin
s4:=sum;
st[4]:=s4;
sum:=0;
end;
if x=5 then if y=n then begin
s5:=sum;
st[5]:=s5;
sum:=0
end;
if x=6 then if y=n then begin
s6:=sum;
st[6]:=s6;
sum:=0;
end;
end;
st[7]:=78;
asm
mov ax,3
int 10h
end;
write('0st=',s,'; 1-st=',s1,'; 2st=',s2,'; 3st=',s3);
write('; 4st=',s4,'; 5st=',s5,'; 6st=',s6);
asm
mov ah,0
int 16h
end;
g:=0;
v:=0;
repeat
p:=st[v];
v:=v+1; {0}
p1:=st[v]; {1}
if p=78 then goto we;
if p>p1 then begin
st[v]:=p; {1}
v:=v-1;
st[v]:=p1;{0}
v:=0;
end;
Until KeyPressed;
we:
gotoxy(10,10);
write('st0=',st[0],' st1=',st[1],' st2=',st[2],' st3=',st[3]);
write(' st4=',st[4],' st5=',st[5],' max sum in matrix 1 st6=',st[6]);
asm
mov ah,0
int 16h
end;
END.
Автор: chucha 24.04.2003 6:15
Огромное спасибо Shadow !!! :D
Автор: AlaRic 24.04.2003 14:36
to Chucha: я не по-русски сказал?
Автор: wormball 24.04.2003 21:33
Цитата
Ну это Clane по-моему примитивщина.Мне кажется здесь надо писать алгоритмы посложнее.Например слияние, переворот на 90 градусов и тд и тп.
а ещё лучше то же нахождение максимума, только раз в 10 больше кода. вот тогда ты действительно станешь настоящим Программистом. ;D
Автор: Shadow 25.04.2003 0:18
:D
---
есчли просто отсортировать масс по возрост и взять последнее
Автор: Gid 1.05.2003 7:03
Скажите мне, фигли такая огромная программа?
Код
uses crt;
const n=6;
type mass=array[1..n,1..n]of integer;
mas=array[1..n]of ibteger;
var
i,g:integer;
matr:mass;
max:mas;
begin
clrscr;
writeln('Введите матрицу ');
for i:1 to n do for g:=1 to 10 do read(matr[i,g]);
for i:=1 to n do for g:=1 to n do
if matr[i,g]=1 then max[i]:=max[i]+1;
i:=max[1];
for i:=2 to n do if i<max[i] then i:=max[i];
writeln('Наибодьшая сумма-',i);
end.