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

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

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

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> Баг
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

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

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


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

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


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

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

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


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


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


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гуру
*****

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

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


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


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


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

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

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


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

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


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


Профи
****

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

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


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

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

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


Гуру
*****

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

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


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


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Новичок
*

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

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


просто если будет хоть один отрицательный четный элемент, то в этом случает переменная min примет значение 0 . но ведь это неправильно blink.gif wacko.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


Новичок
*

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

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


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


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

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

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


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


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

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

 





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