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

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

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

 
 Ответить  Открыть новую тему 
> упорядочение элементов массива после второго отрицательного
18192123
сообщение 29.10.2006 21:30
Сообщение #1


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


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

что-то у меня не вяжется здесь
помогите найти ошибку

uses crt
const n=10;
type vect=array[1..n] of integer;
var a:vect;
i,j,k,t:integer;
begin
clrscr;
writeln ('vvod massiva');
for i:=1 to n do read (a[i]);
i:=1;
k:=0;
while (i<=n)and(a[i]>=0)and(k<2) do
begin
i:=i+1;
if a[i]<0 then k:=k+1
end;
for j:=k to n-1 do
for i:=k to n-1 do
begin
if a[i]<a[i+1] then
begin
t:=a[i];
a[i]:=a[i+1];
a[i+1]:=t;
end;
end;
writeln ('sortirovka zavershena');
for i:=1 to n do writeln (a[i]);
readkey;
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 29.10.2006 21:48
Сообщение #2


Гость






Во-первых, у тебя лишнее условие... Вот этого вполне достаточно при поиске второго отрицательного элемента:
while (i<=n)and(k<2) do


Во-вторых, K у тебя всегда = 2 (ты нашла 2 отриц. элемента), а ты действуешь так, как будто нашла индекс второго отр. элемента... Нужно перед сортировкой сделать еще:
k := i+1;
Ну, и наконец, классическая ошибка - посмотри, КАК делается "пузырек"... Я ж не просто так это все выкладывал, ты думаешь, ты первая, кто так ошибается?

FAQ: Методы сортировки -> Пузырьковая сортировка

Итого, с учетом всех замечаний, правильный кусок программы выглядит так:
  while (i<=n)and(k<2) do begin
i:=i+1;
if a[i]<0 then k:=k+1
end;

k := i+1;
for j:=k to n do
for i:=n downto j+1 do begin

if a[i]<a[i-1] then begin
t:=a[i]; a[i]:=a[i-1]; a[i-1]:=t;
end;

end;
 К началу страницы 
+ Ответить 
18192123
сообщение 29.10.2006 22:49
Сообщение #3


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


спасибо большое! постараюсь таких ошибок больше не делать!
хорошо, когда есть люди, способные объяснить что-либо!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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