Помощь - Поиск - Пользователи - Календарь
Полная версия: Массивы и организация циклов
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Black_Jack
Люди добрые, помогите сделать их, поиском пользоватсья умю, но не нашел подобных решений... я уже сломал голову как их делать.
1)Дан двумерный массив, содержащий 5 строк и 3 столбца. Элементами массива являются целые числа. Упорядочить массив по не убыванию элементов второй строки.
2)Найти сумму 15 членов ряда, в котором An=n^ln(n)/(ln(n))^n
Правда на вторую задачу совсем мыслей нет никаких =(
Артемий
Ха!И мы должны аккуратно с картиночки переписать??Давай нормальный код!
Цитата
2)Найти сумму 15 членов ряда, в котором

Закончим? smile.gif
Black_Jack
как выложить код? могу приложить паскалевский файлик если это то то вот он
ramzes
Это издевательство, а не код. Пробелы не пробовал расставлять.
Если бы там было хотябы строк 300, то это уже нечитабельно без форматирования.
Black_Jack
Если честно, я всего 2й месяц изучаю паскаль, и мало что в нем понимаю, пробелы в чем ставить? между строчками?
klem4
1)

const
  n = 5;
  m = 3;

type
  TArray = array [1..n, 1..m] of Integer;

procedure Print(const arr: TArray);
var
  i, j: Integer;
begin
  for i := 1 to n do begin
    writeln;
    for j := 1 to m do write(arr[i, j]:3);
  end;
end;

procedure ChangeCols(var arr: TArray; const p, q: Integer);
var
  i, T: Integer;
begin
  for i := 1 to n do begin
    T := arr[i, p]; arr[i, p] := arr[i, q]; arr[i, q] := T;
  end;
end;

procedure Sort(var arr: TArray; const row: Integer);
var
  i, j: Integer;
begin
  for i := m downto 2 do
   for j := 1 to i - 1 do
    if arr[row, j] < arr[row, j + 1] then ChangeCols(arr, j, j + 1);
end;

var
  x: TArray = (
  (4, 5, 1),
  (10, 6, 11),
  (1, 6, 5),
  (6, 6, 1),
  (1, 2, 3)
  );

begin
  Print(x);
  Sort(x, 2); writeln;
  Print(x);
end.
Black_Jack
Спасибо огромное, только вот в строчке var x: TArray = ( он говорит что ошибка, говорит что не хватает ; перед равно
klem4
Сделай ввод матрицы вручную ...
volvo
Лучше поменяй в той строчке Var на Const ...
Black_Jack
Поменял, теперь ошибок не выдает, но зато не ъхочет запускатсья... никак не реагирует на CTRL+F9
ramzes
Блин, я неполенился отструктурировать твою писанину.

var
  a       : array [1..5 , 1..3] of real;
  i,j,k,n : integer;
  min,zap,
  zap1    : real;
begin
  for i:=1 to 5 do
    begin
      ;
      for j:=1 to 3 do
        begin
          ;
          write ('input a[',i,',',j,']=');
          readln (a[i,j]);
          for i:=1 to 4 do
            begin
              min:=a[i,2];
              n:=i;
              for j:=i+1 to 5 do
                begin
                  if a [j, 2] < min then
                    begin
                      min:= a[j, 2];
                      n:=j;
                    end;
                end;
              write ('input a[',i,',',j,']=');
              readln (a[i,j]);
              for i:=2 to 4 do
                begin
                  min:=a[i,2];
                  n:=i;
                  for j:=i+2 to 5 do
                    begin
                      if a [j, 2] < min then
                        begin
                          min:= a[j, 2];
                          n:=j;
                        end;
                    end;
                end;
              for k:=1 to 3 do
                begin
                  zap:= a[i, k];
                  a[i, k]:=a [n,k];
                  a[n, k]:=zap;
                end;
            end;
          for i:=1 to 5 do
            begin
              for j:=1 to 3 do write (a[i, j]: 4:1);
              writeln;
            end;
          readln;
        end;
    end;
end.



sad.gif Ну так же нельзя.
Здесь не надо выдумывать нечто страшное
мисс_граффити
    begin
      ; 

а это зачем? для красоты???
ramzes
Вот держи 1.
Если что неясно спрашивай.
Про пузырьковую сортировку смотри в инете.


USES Crt;
VAR
  A      : array [1..5,1..3] of integer;
  tmpArr : array [1..5] of integer;
  i,j,k  : byte;
BEGIN
  randomize;
  clrscr;

  writeln('ishodnyi massiv:');
  for i:=1 to 5 do
    begin
      for j:=1 to 3 do
        begin
          {zadaem massiv sluchaino ot -5000 do 4999}
          A[i][j]:=random(10000)-5000;
{--------------------------------------
mozhno vmesto:
   A[i][j]:=random(10000)-5000;
vvodit' vruchnyu:
   read(A[i][j]);
togda vyvod nado delat' otdel'no
---------------------------------------}
          {vyvodim ego s otstupom 7}
          write(A[i][j]:7);
        end;
      writeln;
    end;

{puzyr'kovaj sortirovka}
  for i := 2 to 3 do
    for j := 3 downto i do
      if A[2][j-1] > A[2][j] then
        {perekidyvaem stroki poelementno}
        for k:=1 to 5 do
          begin
            tmpArr[k]:=A[k][j-1];
            A[k][j-1]:=A[k][j];
            A[k][j]:=tmpArr[k];
          end;

{vyvod otsortirovannogo massiva}
  writeln('otsortirovannyi massiv:');
  for i:=1 to 5 do
    begin
      for j:=1 to 3 do write(A[i][j]:7);
      writeln;
    end;

  repeat until keypressed;
END.

ramzes
Вторая совсем просто.

CONST
N=15;
VAR
SummaRiada : real;
i : byte;
BEGIN
SummaRiada:=0;
for i:=2 to N+1 do SummaRiada:=SummaRiada+exp(ln(i)*ln(i))/exp(i*ln(ln(i)));
writeln(SummaRiada)
END.

Начинаем со второго члена ряда, т.к. при i=1 общий член ряда равен бесконечности (1/0).
А лучше формулу уточни. Для возведения в степень используется то свойство, что
x^y=exp(yln(x))
klem4
Цитата
Поменял, теперь ошибок не выдает, но зато не ъхочет запускатсья... никак не реагирует на CTRL+F9


после запуска alt+F5 не пробовал нажимать ?
Black_Jack
klem4

Нажал, говорит что "Could not find tool, TurboPro filer". Что это значит и как исправить?
volvo
Сказано же было - Alt+F5, а не Shift+F5 ...

То же самое - в меню Debug -> User Screen
Black_Jack
2all
спасибо за задачки! Народ, очень помогли!!!

Остался тока один вопрос, во второй задачке которую написал ramzes не реагиру на нажате ctrl+F9, после нажатия Alt+F5 начинает мерцать экран и больше ничего. как сделать что бы работала прога?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.