Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Object Pascal: кроссплатформенные технологии > Массивы


Автор: Gunya 3.4.2008, 18:24
Здравствуйте!!!
Помогите написать, а то я начинающии и пока не знаю как это делать:

В массиве а[5,5], введенном с клавиатуры, наити сумму первой и последней строки. Затем выполнить следующие деиствия:
*Если сумма первой меньше суммы последней строки, то на место предыдущеи строки массива записать элементы последующей строки. Элементы первой строки записать на место последней
*Если сумма первой больше суммы последней строки, то рассортировать исходный массив методом перебора(прямого выбора) в порядке убывания
*Если суммы строк равны, то найти сумму всех нечетных чисел массива..

Автор: digitech 6.4.2008, 20:51
В коде я эти задачки не предоставлю, хотя сам когда-то решал - терпеть не могу типа если то больше, тогда с тем сложи, если меньше то с тем подели. 
Подсказываю: Вобщем в цикле, где вводишь, спрашивай постоянно какая строка: 
Код

for i:=1 to 5 do
  for k:=1 to 5 do
  begin
  readln(i,k);
  if i=1 then inc(sum,a[i,k]);
  if i=5 then inc(sum2, a[i,k]);
  end;


ну и потом уж сам разберись что больше, что меньше из sum и sum2 (кстати, это доп. переменные, - ну понятно зачем). 
inc(a,b) это то же самое что a:=a+b; см. справку TP_7.0

Автор: Gunya 7.4.2008, 18:18
Вот сварганил, тока ненаю правильно или нет, но при проверки все рабит)) 

Код
var
a: array[1..5,1..5]of integer;           
t: array[1..5] of integer;           
i,j,x,y: integer;            
s1,s5: integer;             
p: integer;            
b: boolean;         
begin
for i:=1 to 5 do            
 for j:=1 to 5 do
  begin
   write('a(',i,',',j,')= ');
   readln(a[i,j]);
  end;
for i:=1 to 5 do       
 begin
  for j:=1 to 5 do
   write(' ',a[i,j]);
  writeln;
 end;

for i:=1 to 5 do
 s1:=s1+a[1,i];        
for i:=1 to 5 do
 s5:=s5+a[5,i];          

b:=true;       

if s1<s5 then    
 begin
  for i:=1 to 5 do       
   t[i]:=a[1,i];
  for i:=2 to 5 do       
   for j:=1 to 5 do
    a[i-1,j]:=a[i,j];
  for i:=1 to 5 do         
   a[5,i]:=t[i];
 end;



if s1>s5 then     
 begin
  for x:=1 to 5 do
   for y:=1 to 5 do
    for i:=1 to 5 do
     for j:=1 to 5 do
      begin
       if a[x,y]>a[i,j] then
        begin
         p:=a[x,y];
         a[x,y]:=a[i,j];
         a[i,j]:=p;
        end;
       end;
 end;

if s1=s5 then           
 begin
  for i:=1 to 5 do
   for j:=1 to 5 do
    if a[i,j]mod 2 =1 then p:=p+a[i,j];
  b:=false;            
 end;
 
writeln;            

if b then                
 begin
  writeln('New array:');
  for i:=1 to 5 do
   begin
    for j:=1 to 5 do
     write(' ',a[i,j]);
    writeln;
   end;
 end
else                
 writeln('summa= ',p);

readln;

end.




Автор: digitech 7.4.2008, 18:36
что такое рабит? и зачем всякие логические переменные? можно и без этого. чётность\нечётность можно проверять с помощью odd(x)=false\true
и куда столько циклов? это не очень хорошо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)