IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Задача на тему "Сортировки", Ребята, помогите сделать задание...
Garis
сообщение 6.10.2005 13:33
Сообщение #1


Гость






Ребята, всем доброго времени суток!
Прошу вашей помощи, т.к. сам с Паскалём можно сказать не работал (переписывал задачки с доски и всё). В общем мне дали задание, написать программу со всеми пояснениями и составить к ней схему алгоритма… Для меня это вообще что-то не реальное…(( Помогите, пожалуйста, кто чем может..)) Книжки читать времени совсем нету, а задание уже скоро сдавать.
Вот собственно само задание (оно по теме «Сортировки»):
Дана последовательность из «N» целых чисел, содержащая положительные, отрицательные числа и нули.
Получить три последовательности содержащие только отрицательные числа, только нули и только положительные числа в порядке их следования в исходной.
Ранжировать полученные последовательности по возрастанию и напечатать друг под другом с пояснениями.
Задокументировать исходную последовательность.

Вот такое заданьеце….((
теперь о том что я понимаю: т.е. задан массив, из него нужно сделать выборку, а затем эту выборку(три последовательности) разместить по возрастанию.

Заранее вам огромное спасибо!
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 7)
volvo
сообщение 6.10.2005 13:42
Сообщение #2


Гость






Ну, значит, так:
1. Проходишь по всему первоначальному массиву и делаешь следующее:
Var
arr: array[1 .. N] of integer; { сам исходный массив }

{ буферы для хранения полож. (positive) и отриц. (negative) чисел }
positive, negative: Array[1 .. N] of integer;

{ счетчики полож., отриц., и нулевых чисел }
i_pos, i_neg, i_zero: integer;
begin
...
{
устанавливаем счетчики всех последовательностей,
которые будем искать, в 0
}
i_pos := 0; i_neg := 0; i_zero := 0;

for i := 1 to N do { идем по всему исходному массиву }

if arr[i] < 0 then begin { число отрицательное ? }
{ увеличиваем счетчик отр. чисел и записываем само число в буфер }
inc(i_neg); negative[i_neg] := arr[i];
end
else
{ число = 0 ? }
if arr[i] = 0 then inc(i_zero) { просто увеличиваем число нулей }
else begin { число положительное ? }
{ увеличиваем счетчик полож. чисел и записываем само число в буфер }
inc(i_pos); positive[i_pos] := arr[i];
end;
...
end.

2. А потом полученные массивы positive и negative сортируешь любым способом, который есть здесь: FAQ: Методы сортировки
(нули сортировать не надо, для того, чтобы их вывести на печать достаточно просто знать их количество)
 К началу страницы 
+ Ответить 
Garis
сообщение 6.10.2005 13:57
Сообщение #3


Гость






Пасиба за столь скорый ответ...... но хотел чтоб мне дали не просто голую программу, а с пояснениями и объяснениями, не сочтите за наглость...)) Но я хочу сам что-то понимать, что и где происходит....))) Из того что написано выше понял только то, что задаётся массив и всё, больше ничего...((((
А ещё нужно задокументировать исходную последовательность, это как я понимаю должен создаться txt файл....
 К началу страницы 
+ Ответить 
volvo
сообщение 6.10.2005 14:07
Сообщение #4


Гость






Я добавил комментарии, попробуй прочесть и понять, что именно происходит ...

Насчет файла - ты сначала сделай, чтобы программа правильно работала с выводом на экран, а добавить вывод в файл можно всегда ;)
 К началу страницы 
+ Ответить 
Garis
сообщение 6.10.2005 20:39
Сообщение #5


Гость






Спасибо огромное.... На выходных буду разбираться... надеюсь тема никуда не денется..)) Или кто-нить ещё чё-нить напишет..))
 К началу страницы 
+ Ответить 
Garis
сообщение 14.10.2005 17:39
Сообщение #6


Гость






Вот что у меня получилось..... но здесь мнеого недороботок, к сожалению....
program p1;

const
INPUT_FILE_NAME = 'с:\p1.in';

type
TCondition = function(x : integer) : boolean;

var
f : text;
i, n, t : integer;
flag : boolean;
a : array [1..100] of integer;

function less0(x : integer) : boolean; far;
begin
if x < 0 then
less0 := true
else
less0 := false;
end;

function equal0(x : integer) : boolean; far;
begin
if x = 0 then
equal0 := true
else
equal0 := false;
end;

function above0(x : integer) : boolean; far;
begin
if x > 0 then
above0 := true
else
above0 := false;
end;

procedure print(cond : TCondition);
begin
for i := 1 to n do
if cond(a[i]) then
write(a[i] , ' ');
writeln;
end;

begin
assign(f, INPUT_FILE_NAME);
reset(f);

readln(f, n);

for i := 1 to n do
read(f, a[i]);

repeat
flag := true;
for i := 1 to n-1 do
if a[i] > a[i+1] then begin
t := a[i];
a[i] := a[i+1];
a[i+1] := t;
flag := false;
end;
until flag;

print(less0);
print(equal0);
print(above0);

close(f);
end.



'с:\p1.in' - это файл с массивом smile.gif

Помогите её доработать..... В частности нужны подробные комментарии и срочно нужна блок-схема(алгоритм)..... А также, она чуть-чуть не соответствует самому тексту.... текст задачи выше....
Заранее спасибо!
 К началу страницы 
+ Ответить 
volvo
сообщение 14.10.2005 17:54
Сообщение #7


Гость






Цитата
В частности нужны подробные комментарии и срочно нужна блок-схема(алгоритм)
Garis, а сдать за тебя программу не надо? А то ты только скажи, мы приедем, сдадим... И на работу вместо тебя устроимся, ты только деньги получать будешь... <_<
 К началу страницы 
+ Ответить 
Garis
сообщение 14.10.2005 18:36
Сообщение #8


Гость






unsure.gif Злые вы какие-то..... Я понимаю, если бы это было для вас очень сложно....
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 6:28
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"