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

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

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

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> Баг
fr33m
сообщение 7.01.2007 22:48
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской

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


Ребят, помогите пожалуйста с прогой, не знаю в чем проблема, вроде написано всё верно, а вылетает. Програмка маленькая mega_chok.gif

Цитата
Найти номер и значение минимального положительного элемента массива. Рассматривать элементы массива, имеющие четные значения.


Uses Crt ;
Var
A: Array[1..20] of Integer;
I,min,n: Integer;
Begin
ClrScr;
Writeln('Лабораторная работа 1');
Writeln('Найти номер и значение минимального положительного элемента массива.');
Writeln('Рассматривать элементы массива, имеющие четные значения.');
Writeln('Количество элементов массива - целое число <=20');
Writeln('Введите n');
Readln (N);
If (N>=1) and ( N<=20) then
begin
Writeln('Значения элементов массива - целые числа');
For I := 1 to N do
Begin
Write('A[',I,']=');
Readln(A[I]);
End;
Writeln('В исходном массиве ', N, ' элементов');
Writeln('Исходный массив');
For I:=1 to N do
Write(A[I]:4);
Writeln;
i:=2;
min:=a[2];
while a[i]<=n do
If (a[i]<=min) and (a[i]>0) Then
begin
A[i]:=min;
i:=i+2;
End;
writeln('Минимальный положительный элемент равен ',min);
readln;
end
Else
Writeln('Ошибка ! Число элементов массива от 1 до 20');
readln;
End.


while a[i]<=n do
If (a[i]<=min) and (a[i]>0) Then
begin
A[i]:=min;
i:=i+2;
End;

в этом месте что-то происходит не так sad.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Bokul
сообщение 7.01.2007 22:51
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

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


Должно быть так:

while i<=n do begin
If (a[i]<=min) and (a[i]>0) Then
A[i]:=min;
i:=i+2;
End;



--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 7.01.2007 22:51
Сообщение #3


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


зацикливается или выходит за границы массива?

   while a[i]<=n do {почему a[i], а не i?}
If (a[i]<=min) and (a[i]>0) Then
begin
A[i]:=min;
i:=i+2;{а если a[i] не меньше минимума, на след. элемент переходить не надо?}
End;


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
fr33m
сообщение 7.01.2007 23:02
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской

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


 while a[i]<=n do {почему a[i], а не i?}

да , здесь я понял . исправил на i . но почемуто всё равно не пашет sad.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 7.01.2007 23:04
Сообщение #5


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


а во втором месте исправил?
тебе же Bokul написал, как должно быть


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Malice
сообщение 7.01.2007 23:08
Сообщение #6


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

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


Bokul тоже накосячил чуть-чуть smile.gif

   while i<=n do begin
If (a[i]<=min) and (a[i]>0) Then
min:=i;
i:=i+2;
End;
writeln('Минимальный положительный элемент равен ',a[min]);
writeln('Индекс равен ',min);
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
fr33m
сообщение 7.01.2007 23:21
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской

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


Цитата(мисс_граффити @ 7.01.2007 23:04) *

а во втором месте исправил?
тебе же Bokul написал, как должно быть

так я не понял begin ставить после do или после if .у вас по-разному написано.в любом случае и так и так получается ,что 2ой элемент всегда считается отрицательным sad.gif

Цитата(Malice @ 7.01.2007 23:08) *

Bokul тоже накосячил чуть-чуть smile.gif

   while i<=n do begin
If (a[i]<=min) and (a[i]>0) Then
min:=i;
i:=i+2;
End;
writeln('Минимальный положительный элемент равен ',a[min]);
writeln('Индекс равен ',min);


да .попробовал вот так .прога проходит больше тестов smile.gif , но неполностью . например ввожу n=4 . дальше ввожу элементы 1,5,2,3 . то есть четные элементы - это 5 и 3. минимальный из низ 3. а прога напишет что 5 sad.gif blink.gif


может не надо перед циклом min:=a[2] . может в этом проблема ? непонимаю sad.gif

Сообщение отредактировано: fr33m - 7.01.2007 23:25
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Bokul
сообщение 7.01.2007 23:25
Сообщение #8


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

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



Uses Crt ;
Var
A: Array[1..20] of Integer;
I,min,n: Integer;
Begin
ClrScr;
Writeln('Лабораторная работа 1');
Writeln('Найти номер и значение минимального положительного элемента массива.');
Writeln('Рассматривать элементы массива, имеющие четные значения.');
Writeln('Количество элементов массива - целое число <=20');
Writeln('Введите n');
Readln (N);
If (N>=1) and ( N<=20) then
begin
Writeln('Значения элементов массива - целые числа');
For I := 1 to N do Begin
Write('A[',I,']=');
Readln(A[I]);
End;
Writeln('В исходном массиве ', N, ' элементов');
Writeln('Исходный массив');
For I:=1 to N do
Write(A[I]:4);
Writeln;
i:=2;
min:=0;
while i<=n do begin
If (a[i]<=min) and (a[i]>0) Then
min:=A[i];
i:=i+2;
End;
if min>0 then
writeln('Минимальный положительный элемент равен ',min)
else
writeln('Нету положительных элементов, стоящих на четных местах');
readln;
end
Else
Writeln('Ошибка ! Число элементов массива от 1 до 20');
readln;
End.



Сообщение отредактировано: Bokul - 7.01.2007 23:33


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Malice
сообщение 7.01.2007 23:26
Сообщение #9


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

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


Цитата(fr33m @ 7.01.2007 23:21) *

может не надо перед циклом min:=a[2] . может в этом проблема ? непонимаю sad.gif

Это потому, что я тоже накосячил smile.gif
Вариант №2:
   min:=2;
while i<=n do begin
If (a[i]<=a[min]) and (a[i]>0) Then
min:=i;
i:=i+2;
End;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Bokul
сообщение 7.01.2007 23:30
Сообщение #10


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

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


Malice, опять косяк, смотри мою прогу.. wink.gif


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 7.01.2007 23:33
Сообщение #11


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


все понакосячили smile.gif)
давайте, что ли, определимся: min - это индекс эл-та или он сам? а то в этом дружно путаемся.

fr33m, я ничего не переделывала. просто указала на места с ошибками...


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Malice
сообщение 7.01.2007 23:34
Сообщение #12


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

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


Цитата(Bokul @ 7.01.2007 23:30) *

Malice, опять косяк, смотри мою прогу.. wink.gif

Точно косяк - не нашел у тебя нахождение индекса blum.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Bokul
сообщение 7.01.2007 23:35
Сообщение #13


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

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


В авторской версии - он сам. Это Malice обозвал его индексом.


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
fr33m
сообщение 7.01.2007 23:35
Сообщение #14


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской

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


Цитата(Bokul @ 7.01.2007 23:30) *

Malice, опять косяк, смотри мою прогу.. wink.gif

спасибо Bokul . твоя прога работает ! только вот вопрос .допутим второй элемент массива отрицательное число . в цикле этого не проверяется . там проверяется только >0 . и тогда этот второй элемент засчитается за минимальный , потому что будет меньше всех, даже меньше положительных значений. то есть если есть 4 элемента массива 1 -9 3 6 , то -9 будет минимальным положительным , хотя нужно 6 . вот не знаю ,как это на паскале написать
p.s. почему я репу не могу никому дать ? smile.gif)

Сообщение отредактировано: fr33m - 7.01.2007 23:39
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Bokul
сообщение 7.01.2007 23:46
Сообщение #15


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

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


fr33m, посмотри еще раз - я вносил изменения ..
Цитата
не нашел у тебя нахождение индекса


min:=0;
ind:=0;
while i<=n do begin
If (a[i]<min) and (a[i]>0) Then begin
ind:=i;
min:=A[i];
end;
i:=i+2;
End;



Цитата
Точно косяк - не нашел у тебя нахождение индекса

Я имел ввиду что у тебя косяк, описанный fr33m.. smile.gif

Сообщение отредактировано: Bokul - 7.01.2007 23:47


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Malice
сообщение 7.01.2007 23:49
Сообщение #16


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

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


Цитата(Bokul @ 7.01.2007 23:46) *

min:=0;
ind:=0;
while i<=n do begin
If (a[i]<min) and (a[i]>0) Then begin
ind:=i;
min:=A[i];
end;
i:=i+2;
End;

Эх, чую не один я пиво пил smile.gif Наверное у тебя всегда 0 будет..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
fr33m
сообщение 7.01.2007 23:50
Сообщение #17


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской

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


просто если будет хоть один отрицательный четный элемент, то в этом случает переменная min примет значение 0 . но ведь это неправильно blink.gif wacko.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Bokul
сообщение 8.01.2007 0:01
Сообщение #18


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

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


Это ты видел?

if min>0 then
writeln('Минимальный положительный элемент равен ',min)
else
writeln('Нету положительных элементов, стоящих на четных местах');
readln;



Цитата
Эх, чую не один я пиво пил smile.gif Наверное у тебя всегда 0 будет..




Uses Crt ;
Var
A: Array[1..20] of Integer;
I,n,ind: Integer;
Begin
ClrScr;
Writeln('Лабораторная работа 1');
Writeln('Найти номер и значение минимального положительного элемента массива.');
Writeln('Рассматривать элементы массива, имеющие четные значения.');
Writeln('Количество элементов массива - целое число <=20');
Writeln('Введите n');
Readln (N);
If (N>=1) and ( N<=20) then
begin
Writeln('Значения элементов массива - целые числа');
For I := 1 to N do Begin
Write('A[',I,']=');
Readln(A[I]);
End;
Writeln('В исходном массиве ', N, ' элементов');
Writeln('Исходный массив');
For I:=1 to N do
Write(A[I]:4);
Writeln;
i:=2;
ind:=0;
while i<=n do begin
If (a[i]>0) Then
if ind=0 then
ind:=i
else
if a[i]<a[ind] then
ind:=i;
i:=i+2;
end;
if ind>0 then
writeln('Минимальный положительный элемент равен ',a[ind], ' Index ',ind)
else
writeln('Нету положительных элементов, стоящих на четных местах');
readln;
end
Else
Writeln('Ошибка ! Число элементов массива от 1 до 20');
readln;
End.




--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
fr33m
сообщение 8.01.2007 0:09
Сообщение #19


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской

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


я конечно понимаю что всех за%%ал на этом форуме но всё равно не получается unsure.gif YYY.gif ypriamii.gif
если брать самый конечный вариант Bokul , то получается,что вводя например 4 элемента таких : 1 -7 5 8
прога напишет, что нет таких положит . минимальных элементов. но они то есть !
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 8.01.2007 0:13
Сообщение #20


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


это потому что самый минимальный - отрицательный. а надо искать минимальный среди положительных? то есть отриц. не анализировать вообще?


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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