Страница 1 из 1
Сортировка массива
Добавлено: 21 фев 2007, 07:21
Philin
Помогите плз. Я что-то не могу разобраться как сделать чтобы кол-во элементов массива вводилось с клавиатуры а не заранее определялось константой. А точнее не понял как обявить переменныу n до объявления массива. А вообще если кто может помочь то задача следующая:
Вводится с клавиатуры кол-во элементов массива, затем вводиться сам массив, затем его нужно отсортировать по возрастанию. Но отсортировать нужно не созданием ещё одного массива или как-то подругому а надо просматривать массив с n-ого элемента находить самое большое, затем запоминать значение n-ого элмента в какую-то переменную, потом найденный максимум ставить на место n а то что было на n(тобиш то что в новой переменной) ставить на место максимума. Заранее спаибо.
Re: Сортировка массива
Добавлено: 21 фев 2007, 10:36
Nem
Просто при объявлении массива указываешь какое-то максимально кол-во элементов, например max_kol. Потом просто вводишь n с клавиатуры и заполняешь элементы массива от 1 до n. То же самое с сортировкой и выводом. Вот пример:
const max_kol=100;
type mas:array[1..max_kol] of integer;
var a:mas;
n:integer;
procedure zapol(var a:mas; n:integer);
{заполение элементов массива с 1 до n}
var i:integer;
begin
randomize;
for i:=1 to n do a:=random(50)-20;
end;
procedure out(a:mas; n:integer);
{процедура выводжа массива на экран}
var i:integer;
begin
for i:=1 to n do write(a:3);
writeln;
end;
procedure sort(var a:mas; n:integer);
{сортировка массива};
begin
{То, что ты описал похоже на сортировку подсчётом.
Её алгоритм можно найти в интрнете.
Опять же нужно сортировать элементы от 1 до n}
end;
begin
readln(n); {n - количесвто элементов массива}
zapol(a,n);
out(a,n);
sort(a,n);
end.
Re: Сортировка массива
Добавлено: 21 фев 2007, 15:59
Philin
Спасиб всё сделал всё работает, я просто раньше не пользовался а точнее и не занл про procedure(); а щас почитал фаронова во всём разобрался. Всё вообще шикарно. Только у меня там массив вводится с клавы а не рандомом и вывод на экран уже отсортированного. Но эт я всё сделал.
Re: Сортировка массива
Добавлено: 22 фев 2007, 10:32
Philin
А ещё никто не подскажет программку вот такую:
программа на яве мнеб её на паскале ну или хотябы смысл того что она делает, а то я что-то не понял что мне надо сделать
Нахождение корня нелинейного уравнения методом бисекции
class Bisection{
static double f(double x){
return x*x*x — 3*x*x +3; // Или что-то другое
}
public static void main(String!] args){
double a = 0.0, b = 1,5, с, y, eps = le-8;
do{
с = 0.5 *(a + b); у = f(с);
if (Math.abs(y) < eps) break;
if (f (а) * у < 0.0) b = с;
else а * с;
} while (Math, abs (b-a) >= eps);
System.out.println("x = " +c+ ", f(" +c+ ") = " +y) ;
}
}
Re: Сортировка массива
Добавлено: 22 фев 2007, 10:51
Хыиуду
Метод бисекции, он же метод деления отрезка пополам, он же метод дихотомии. Суть простая: если функция f имеет единственный корень на промежутке (a,b), то на одном из концов этого промежутка функция положительна, а на другом отрицательна. Следовательно, если знак функции в середине промежутка совпадает со знаком функции в начале, то корень где-то во второй половине промежутка, а если не совпадает - то в первой.
Так что
repeat
c:=(a+b)/2;
if f(a)*f(c)>0 then a:=c else b:=c
until abs(a-b)<eps;
где eps - порог точности поиска (обычно берут где-то 0.001)