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

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

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

 
 Ответить  Открыть новую тему 
> Задача на тему "Сортировки", Ребята, помогите сделать задание...
сообщение
Сообщение #1


Гость






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

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

Заранее вам огромное спасибо!
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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: Методы сортировки
(нули сортировать не надо, для того, чтобы их вывести на печать достаточно просто знать их количество)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






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


Гость






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

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


Гость






Спасибо огромное.... На выходных буду разбираться... надеюсь тема никуда не денется..)) Или кто-нить ещё чё-нить напишет..))
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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

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


Гость






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


Гость






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

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

 





- Текстовая версия 20.04.2024 14:40
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name