Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Массивы и организация циклов

Автор: Black_Jack 16.05.2007 0:54

Люди добрые, помогите сделать их, поиском пользоватсья умю, но не нашел подобных решений... я уже сломал голову как их делать.
1)Дан двумерный массив, содержащий 5 строк и 3 столбца. Элементами массива являются целые числа. Упорядочить массив по не убыванию элементов второй строки.
2)Найти сумму 15 членов ряда, в котором An=n^ln(n)/(ln(n))^n
Правда на вторую задачу совсем мыслей нет никаких =(


Эскизы прикрепленных изображений
Прикрепленное изображение

Автор: Артемий 16.05.2007 1:15

Ха!И мы должны аккуратно с картиночки переписать??Давай нормальный код!

Цитата
2)Найти сумму 15 членов ряда, в котором

Закончим? smile.gif

Автор: Black_Jack 16.05.2007 1:42

как выложить код? могу приложить паскалевский файлик если это то то вот он


Прикрепленные файлы
Прикрепленный файл  MASSIV.PAS ( 708 байт ) Кол-во скачиваний: 128

Автор: ramzes 16.05.2007 2:04

Это издевательство, а не код. Пробелы не пробовал расставлять.
Если бы там было хотябы строк 300, то это уже нечитабельно без форматирования.

Автор: Black_Jack 16.05.2007 2:08

Если честно, я всего 2й месяц изучаю паскаль, и мало что в нем понимаю, пробелы в чем ставить? между строчками?

Автор: klem4 16.05.2007 2:24

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 16.05.2007 2:45

Спасибо огромное, только вот в строчке var x: TArray = ( он говорит что ошибка, говорит что не хватает ; перед равно

Автор: klem4 16.05.2007 2:47

Сделай ввод матрицы вручную ...

Автор: volvo 16.05.2007 2:53

Лучше поменяй в той строчке Var на Const ...

Автор: Black_Jack 16.05.2007 2:59

Поменял, теперь ошибок не выдает, но зато не ъхочет запускатсья... никак не реагирует на CTRL+F9

Автор: ramzes 16.05.2007 4:41

Блин, я неполенился отструктурировать твою писанину.


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 Ну так же нельзя.
Здесь не надо выдумывать нечто страшное

Автор: мисс_граффити 16.05.2007 5:07

    begin
;

а это зачем? для красоты???

Автор: ramzes 16.05.2007 5:28

Вот держи 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 16.05.2007 6:51

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

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 16.05.2007 11:08

Цитата
Поменял, теперь ошибок не выдает, но зато не ъхочет запускатсья... никак не реагирует на CTRL+F9


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

Автор: Black_Jack 16.05.2007 19:01

klem4

Нажал, говорит что "Could not find tool, TurboPro filer". Что это значит и как исправить?

Автор: volvo 16.05.2007 19:37

Сказано же было - Alt+F5, а не Shift+F5 ...

То же самое - в меню Debug -> User Screen

Автор: Black_Jack 16.05.2007 20:25

2all
спасибо за задачки! Народ, очень помогли!!!

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