Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.06.2010, 09:08   #1
Izymka
Пользователь
 
Регистрация: 24.05.2010
Сообщений: 31
Вопрос

После ввода с клавиатуры одномерного массива целых чисел (в пределах зна-кового целого типа) отобразить отсортированые по убыванию первые k и отсортированые по возрастанию последние k элементов массива/

помогите сделать вторую часть задачи!!!

Код:
program n_8;
uses CRT;
const
max=100;
min=-100;

var
m:array[min..max] of integer;
k,j,i,t:integer;
n:byte;
begin
Write('n=');Read(n);Write('k=');Read(k);
for i:=1 to n do
begin
Write('m[',i,']=');Readln(m[i]);
end;
for i:=1 to k-1 do
for j:=1 to k-i do
if m[j+1]>m[j] then
begin
t:=m[j];m[j]:=m[j+1];m[j+1]:=t;
end;
for i:=1 to k do
begin
Writeln(m[i]);
end;
for i:=n+k-1 to n-1 do
 for j:=i+1 to n do
  if m[j]<m[i] then
  begin
t:=m[i];m[i]:=m[j];m[j]:=t;
  end;
for i:=n+k-i to n do
begin
Write(m[i]:8);
end;
end.
вот что у меня получилось! в чем ошибка??

Последний раз редактировалось Stilet; 08.06.2010 в 09:57.
Izymka вне форума Ответить с цитированием
Старый 07.06.2010, 09:32   #2
Chudo4258
Форумчанин
 
Аватар для Chudo4258
 
Регистрация: 19.02.2009
Сообщений: 622
По умолчанию

Чет я не понял, по-моему в задании написано надо просто проверить отсортированы или нет. А вы зачем-то еще сортируете. Или я просто не так понял задание?

Вот проверка отсортированы или нет:
Код:
program Project2;
const
max=100;
min=-100;

var
m:array[min..max] of integer;
k,i,n:integer;
p:boolean;
begin
Write('n=');Read(n);Write('k=');Read(k);
for i:=1 to n do
begin
Write('m[',i,']=');Readln(m[i]);
end;
p:=true;
for i:=1 to k-1 do
 if m[i]<=m[i+1] then begin p:=false; break; end;
writeln ('pervje k ', p);

p:=true;
for i:=n to n-(k-1) do
 if m[i]<=m[i+1] then begin p:=false; break; end;
writeln ('pasledie k ', p);
readln
end.
Жми на весы!!!

Последний раз редактировалось Chudo4258; 07.06.2010 в 09:35.
Chudo4258 вне форума Ответить с цитированием
Старый 07.06.2010, 09:46   #3
Izymka
Пользователь
 
Регистрация: 24.05.2010
Сообщений: 31
По умолчанию

нет, нужно отсортировать! только я не знаю как сделать сортировку последних k элементов!?!
Izymka вне форума Ответить с цитированием
Старый 07.06.2010, 12:13   #4
Ol'ga_new
Форумчанин
 
Регистрация: 12.05.2010
Сообщений: 125
По умолчанию

Наверное, ошибка в условии цикла:
Код:
for i:=n+k-1 to n-1 do
если всего n элементов, зачем прибавлять k.
Код:
for i:=k to n-1 do
Ol'ga_new вне форума Ответить с цитированием
Старый 07.06.2010, 12:25   #5
Izymka
Пользователь
 
Регистрация: 24.05.2010
Сообщений: 31
По умолчанию

Цитата:
Сообщение от Ol'ga_new Посмотреть сообщение
Наверное, ошибка в условии цикла:
Код:
for i:=n+k-1 to n-1 do
если всего n элементов, зачем прибавлять k.
Код:
for i:=k to n-1 do
нет, так будет считать не последнии k что требуется!!
Izymka вне форума Ответить с цитированием
Старый 07.06.2010, 12:30   #6
Ol'ga_new
Форумчанин
 
Регистрация: 12.05.2010
Сообщений: 125
По умолчанию

Т.е. есть массив из 15 элементов, 5 первых и 5 последних нужно отсортировать, правильно? Тогда условие:
Код:
for i:=n-k to n do
что значит проверяем с 10 до 15 элементы!
Ol'ga_new вне форума Ответить с цитированием
Старый 07.06.2010, 12:30   #7
Serj_D
Пользователь
 
Регистрация: 26.05.2010
Сообщений: 13
По умолчанию

Последние k :
for i:=(n-k+1) to n do
Serj_D вне форума Ответить с цитированием
Старый 07.06.2010, 12:33   #8
Chudo4258
Форумчанин
 
Аватар для Chudo4258
 
Регистрация: 19.02.2009
Сообщений: 622
По умолчанию

у меня в коде нет никаких ошибок, писал в делфи 7 (кансоль).
Код:
for i:=k to n-1 do
этим способом будет перебираться все элементы с к-го и до конца, а надо последние к элементов.

Код:
for i:=n-к+1 to n do
перебод последних к элементов, и применяй сэде сортировку.

Цитата:
с 10 до 15 элементы!
тут находятся 6 элементов.
Жми на весы!!!
Chudo4258 вне форума Ответить с цитированием
Старый 07.06.2010, 12:39   #9
S_Yevgeniy
Форумчанин
 
Аватар для S_Yevgeniy
 
Регистрация: 08.07.2009
Сообщений: 246
По умолчанию

Может вам стоит использовать цикл Repeat until

I:= N;
Repeat

Тут то что вам нужно сравнивать или вычеслять

I:=I-1;

until I<=K;
Да прибудет с Вами свет и радость!!!
S_Yevgeniy вне форума Ответить с цитированием
Старый 07.06.2010, 12:52   #10
Ol'ga_new
Форумчанин
 
Регистрация: 12.05.2010
Сообщений: 125
По умолчанию

Я смотрела код, который выложила Izymka, по-поводу 6 элементов согласна 100%, только вопрос был не в количестве, а в качестве!
Теперь вопрос возник у меня
Код:
for i:=n to n-(k-1) do
работает нормально, я не проверяла, но мне кажется должно быть или
Код:
for i:=n dowto n-(k-1) do
или
Код:
for i:=n-(k-1) to n do
?????
Ol'ga_new вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массивы в Pascal Шахрия Помощь студентам 2 13.10.2009 20:01
pascal, массивы nastya8984999 Помощь студентам 1 31.03.2009 20:12
Pascal. Массивы. Help. adelaida Помощь студентам 11 24.11.2008 17:02
Pascal/Массивы ромка) Паскаль, Turbo Pascal, PascalABC.NET 6 14.06.2008 18:29
Pascal. Массивы Danilyuk Помощь студентам 1 22.01.2008 19:56