Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.03.2009, 12:06   #1
1cheater1
Новичок
Джуниор
 
Регистрация: 12.03.2009
Сообщений: 2
По умолчанию Паскаль. Задачи с массивами.

Я заочно учусь, не ругайте и не обзывайте меня сильно, лучше помогите. Во всех книгах, что я читал массивы практически не разбираются

1. Переписать положительные элементы массива x, до последнего вхождения максимального элемента, в массив y, упорядоченными по неубыванию и подсчитать их количество.

С этой у меня кое-что получилось... наверное. Вообщем там, где выделено красным почему-то присваиваются нули. Хотя наверно еще где-то ошибки есть. Помогите, пожалуйста.
Код:
const n=5; m=5;
var
   i,k,l:integer;
   max,u:real;
   x:array [1..n] of real;
   y:array [1..m] of real;
begin
   for i:=1 to n do read (x[i]);

   max:=x[1];
   for i:=1 to n do
    begin
    if max<=x[i] then
      begin
       max:=x[i];
       k:=i;
     end;
   end;

   l:=0;
   for i:=1 to k do
   begin
   if x[i]>0 then
     begin
      l:=l+1;
      x[i]:=y[l];
     end;
   end;

   for i:=1 to l do

   begin
   if y[i]>y[i+1] then
    begin
    u:=y[i];
    y[i]:=y[i+1];
    y[i]:=u;
    end;
    end;

   for i:=1 to l do
   writeln (y[i]:2:2);
end.
2. Дана квадратная матрица порядка n(n=5). Если все строки упорядочены по убыванию, то в элементы вектора x записать элементы строки, содержащей наименьшее количество отрицательных элементов, а иначе наибольшее количество нулевых элементов. Сделать с использованием процедур.

Тут вообще все плохо, то что я наделал попросту виснет
1cheater1 вне форума Ответить с цитированием
Старый 12.03.2009, 12:37   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Первая исправленная:
Код:
uses crt;
const n=5; m=5;
var
   i,k,l:integer;
   max,u:real;
   x:array [1..n] of real;
   y:array [1..m] of real;

begin
clrscr;
for i:=1 to n do read (x[i]);

max:=x[1];
k:=1;
for i:=1 to n do
 begin
 if max<=x[i] then
  begin
  max:=x[i];
  k:=i;
  end;
 end;

l:=0;
for i:=1 to k do
 begin
 if x[i]>0 then
  begin
  l:=l+1;
  y[l]:=x[i];
  end;
 end;

for i:=1 to l-1 do
 for k:=i to l do
  begin
   if y[i]>y[i+1] then
    begin
    u:=y[i];
    y[i]:=y[i+1];
    y[i]:=u;
    end;
  end;

for i:=1 to l do
 writeln (y[i]:5:2);
readln;
end.
Вторая, например, так:
Код:
uses crt;
const n=5;
type matrix = array[1..n,1..n] of integer;
vector = array[1..n] of integer;
var
M : matrix;
x : vector;
i,j : integer;
k,a,b : integer;

function poubyv(M : matrix) : boolean;
 var i,j : integer;
 begin
 for i:=1 to n do
  for j:=2 to n do
   if M[i,j]>M[i,j-1] then
    begin
    poubyv := false;
    exit;
    end;
 poubyv := true;
 end;

function kolotric(M : matrix; ni : integer) : integer;
 var j,k : integer;
 begin
 k := 0;
 for j:=1 to n do
  if M[ni,j]<0 then inc(k);
 kolotric := k;
 end;

function kolnuli(M : matrix; ni : integer) : integer;
 var j,k : integer;
 begin
 k := 0;
 for j:=1 to n do
  if M[ni,j]=0 then inc(k);
 kolnuli := k;
 end;

procedure zap(M : matrix; ni : integer; var V : vector);
 var j : integer;
 begin
 for j:=1 to n do
  V[j] := M[ni,j];
 end;



begin
clrscr;
for i:=1 to n do
 for j:=1 to n do
  begin
  write('M[',i,',',j,']= ');
  readln(M[i,j]);
  end;
writeln;

if poubyv(M) then
 begin
 k := 1;
 b := n;
 for i:=1 to n do
   begin
   a := kolotric(M,i);
   if a<b then
     begin
     b := a;
     k := i;
     end;
   end;
 zap(M,k,x);
 end
else
 begin
 k := 1;
 b := 0;
 for i:=1 to n do
  begin
  a := kolnuli(M,i);
  if a>b then
    begin
    b := a;
    k := i;
    end;
  end;
 zap(M,k,x);
 end;

for i:=1 to n do
 write(x[i]:4);

readln;
end.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задачи Pascal c массивами Baby33 Паскаль, Turbo Pascal, PascalABC.NET 3 26.01.2009 13:17
помогите решить 3 задачи с массивами! эра Помощь студентам 5 20.02.2008 14:57
Паскаль. Задачка с массивами. ProPaL Помощь студентам 4 11.11.2007 18:58