Помощь - Поиск - Пользователи - Календарь
Полная версия: Максимальное число
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Clane
Вот алгоритм поиска максимального числа в массиве.
Код
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
Ну это Clane по-моему примитивщина.Мне кажется здесь надо писать алгоритмы посложнее.Например слияние, переворот на 90 градусов и тд и тп.
Clane
Может это и примитивщина, но для новичков сойдет.. Тем более что просто никто ничего не пишешь, вот я решил что-то черкнуть..
Ivs
Определение максимального из 2-х чисел:
max:=int((abs(a-B)+a+B)/2);
усе.............
Ivs
Цитата
Ну это Clane по-моему примитивщина.Мне кажется здесь надо писать алгоритмы посложнее.Например слияние, переворот на 90 градусов и тд и тп.

Ну напиши -- посмотрим...........
Alex
ЧО написать-то не понял!!!!
Alex
Если переворот на 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
Clane, во 2-м цикле не for i := 1 to 10, а for i := 2 to 10, зачем лишний раз сравнивать Max и A[1]=Max. К тому же begin и end в цикле с одним оператором не нужны. Знающий поймет, но ты же для новичков пишешь, должно быть как конфетка.
Clane
Угу.. Понял.. Просто иногда сложно в час ночи выловить какие - то баги.. Спасибки еще раз.. Рад видеть тебя на форуме..
Vit
Кстати если кого интересует как это сделать в дельфи, то в модуле Math есть готовая функция для этого
chucha
Может, кто поможет составить программу!!!
В Pascale – только учусь
Не могу составить программу:

Дана матрица а:array[1..n,1..m]
мне необходимо  суммировать в каждой строке элементы, которые равны 1,
потом полученные результаты от каждой строки сравнить между собой и вывести на экран номер той строки, в которой сумма будет максимальной.
Например:
      - в этой матрице программа должна вывести строку№2, т.к. в ней сумма                                элементов равных 1 больше чем в остальных строках.
Никак не разберусь, хожу только вокруг да около.
Заранее большое  благодарю тем, кто поможет разобраться с этой задачей.
smile.gif
Shadow
:D
их индексы равны единице
или сами числа
chucha
равны единице
сами числа smile.gif

Пример:

первоя строка[1 0 1 0 0]
втрая строка  [1 1 1 1 1]
третья строка[1 0 1 0 1]
в этой матрице программа должна вывести строку№2, т.к. в ней сумма       элементов равных 1 больше чем в остальных строках.
Никак не разберусь, хожу только вокруг да около.
Заранее большое  благодарю тем, кто поможет разобраться с этой задачей.
Shadow
:D sorry
а только 1 и 0 или друг числа
chucha
В принципе подсчет только тех элементов матрицы, которые =1, а остальные не важно ноль там стоит или другое число.

вообще матрица должна вводится в ходе программы, т.е. программа должна сделать запрос на ввод матрицы с клавиатуры.

smile.gif
Shadow
:'(
отвратиетельный дебильный код написал но работает вроде
---
там протестируешь
-----
кстати насчет нахождение иаксимально числа в массиве а не проще его
от сортировать по возраст и взять последнее число из массива
---
Код
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
Огромное спасибо Shadow !!! smile.gif :D
AlaRic
to Chucha: я не по-русски сказал?
wormball
Цитата
Ну это Clane по-моему примитивщина.Мне кажется здесь надо писать алгоритмы посложнее.Например слияние, переворот на 90 градусов и тд и тп.

а ещё лучше то же нахождение максимума, только раз в 10 больше кода. вот тогда ты действительно станешь настоящим Программистом. ;D
Shadow
:D
---
есчли просто отсортировать масс по возрост и взять последнее
Gid
Скажите мне, фигли такая огромная программа?
Код
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.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.