Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Минимум среди нечетных

Автор: asder 16.06.2011 16:24

Приветствую! Помогите решить простую задачу на паскале:
"Даны N целых чисел. Найти и вывести на экран минимальное среди нечётных чисел."

Автор: DarkWishmaster 16.06.2011 16:25

Цитата(asder @ 16.06.2011 12:24) *

Приветствую! Помогите решить простую задачу на паскале:
"Даны N целых чисел. Найти и вывести на экран минимальное среди нечётных чисел."

И чем помочь? Что не понял? Где испытываешь трудности?

Автор: asder 16.06.2011 16:28

Напишите, как эту задачу оформить в самом паскале

Автор: DarkWishmaster 16.06.2011 16:31

Цитата(asder @ 16.06.2011 12:28) *

Напишите, как эту задачу оформить в самом паскале



Uses Crt;
var N,min,number:integer;
Begin
write('N= ');
readln(n);
writeln('Insert ',N,' numbers: ');
min:=MaxInt;
while n>0 do
begin
readln(number);
if odd(number) then
if number<min then min:=number;
dec(n);
end;
writeln(Min);
readln;
end.



Автор: asder 16.06.2011 16:34

DarkWishmaster большое спасибо! Выручили! smile.gif

Автор: Lapp 17.06.2011 2:39

DarkWishmaster, три вопросика к тебе. Сумеешь правильно ответить - ставлю + в репу без разговоров (за помощь новичкам)). Первые два вопроса - в комменетах:


Uses Crt; // зачем тут эта строка?
var N,min,number:integer;
Begin
write('N= ');
readln(n);
writeln('Insert ',N,' numbers: ');
min:=MaxInt;
while n>0 do
begin
readln(number);
if odd(number) then // почему эта строка сдвинута?
if number<min then min:=number;
dec(n);
end;
writeln(Min);
readln;
end.

Последний вопрос такой:
Что выведет твоя прога в таком случае:
n=2
10
20
и в таком случае:
n=2
10
32767
smile.gif

Автор: Krjuger 17.06.2011 16:18

А можно я скажу smile.gif можно?))) lol.gif
Кстати его вроде пытались научить не использовать ЦРТ,когда он сам тут задавал вопросы.

Автор: DarkWishmaster 17.06.2011 20:10

Цитата(Lapp @ 16.06.2011 22:39) *

DarkWishmaster, три вопросика к тебе. Сумеешь правильно ответить - ставлю + в репу без разговоров (за помощь новичкам)). Первые два вопроса - в комменетах:



1) Uses Crt обычно я всегда исп. потому что всегда исп. ClrScr, но тут забыл )
2)Ну сдвинул потому что хотел подчеркнуть это строку
3)ага, промажка. Нужна переменая boolean чтоб всё исправить.


Uses Crt;
var N,min,number:integer; q:boolean;
Begin ClrScr;
write('N= ');
readln(n);
writeln('Insert ',N,' numbers: ');
min:=MaxInt;
q:=false;
while n>0 do
begin
readln(number);
if odd(number) then
if number<min then
begin
min:=number;
q:=true;
end;
dec(n);
end;
if q=true then writeln('min= ',min) else writeln('не существует такое число');
readln;
end.



Автор: Krjuger 17.06.2011 21:30

А почему нельзя вообще обьединить эти 2 условия?)


if (odd(number)) and (number<min) then
....


Функциональность не страдает.
Ведь никакие другие случаи не рассматриваются.

Автор: Lapp 18.06.2011 2:11

Ответы, увы, требуют уточнений.. Даю тебе возможность это сделать )).

Цитата(DarkWishmaster @ 17.06.2011 17:10) *
1) Uses Crt обычно я всегда исп. потому что всегда исп. ClrScr, но тут забыл )
А _зачем_ ты "всегда исп." ClrScr? Эт. треб. по усл.?

Цитата
2)Ну сдвинул потому что хотел подчеркнуть это строку
Сдвиг имеет вполне конкретный смысл. Нельзя вешать на торт табличку "горький" просто потому, что хочется пометить, что он сладкий, а таблички "сладкий" нету.. Хочется подчеркнуть - выдели комментариями, выдели пустыми строками снизу и сверху - но _не_сдвигом_.

Цитата
3)ага, промажка. Нужна переменая boolean чтоб всё исправить.


Uses Crt;
var N,min,number:integer; q:boolean;
Begin ClrScr;
write('N= ');
readln(n);
writeln('Insert ',N,' numbers: ');
min:=MaxInt;
q:=false;
while n>0 do
begin
readln(number);
if odd(number) then
if number<min then
begin
min:=number;
q:=true;
end;
dec(n);
end;
if q=true then writeln('min= ',min) else writeln('не существует такое число'); // тут (Lapp)
readln;
end.

Вопрос: почему в той строке, которую я пометил, ты не написал так:
if (true=((q=true)=true))=true then ...
- ? smile.gif

2 Krjuger: я лично ничего не имею против разбиения условия на два оператора (для ясности или чтоб устранить неоднозначность полного/краткого вычисления логики при компиляции)

Автор: Krjuger 18.06.2011 3:31

Цитата

Вопрос: почему в той строке, которую я пометил, ты не написал так:
if (true=((q=true)=true))=true then
...
- ?

Потому что слишком много букафФ lol.gif а еще вы забыли про true после true,ну про тот самый ,что после того true.(надеюсь никого это не обидит).

Автор: IUnknown 18.06.2011 3:39

DarkWishmaster, хочешь еще один совет? Если твоя программа что-то печатает - лучше, чтобы это было корректно. Вот ты вывел фразу "Не существует такое число"... Какое это число не существует? Озвучь, пожалуйста... Ах, ты имел в виду "Не было введено нечетных чисел"... Так и пиши...

Автор: Lapp 18.06.2011 3:53

Цитата(Krjuger @ 18.06.2011 0:31) *
Потому что слишком много букафФ lol.gif а еще вы забыли про true после true,ну про тот самый ,что после того true.(надеюсь никого это не обидит).

if not (q = false) and (true = not (1 = 2)) or not true then ..
))

Цитата(IUnknown @ 18.06.2011 0:39) *
DarkWishmaster, хочешь еще один совет? Если твоя программа что-то печатает - лучше, чтобы это было корректно. Вот ты вывел фразу "Не существует такое число"... Какое это число не существует? Озвучь, пожалуйста... Ах, ты имел в виду "Не было введено нечетных чисел"... Так и пиши...
Присоединяюсь, совершенно согласен yes2.gif. Определение "такой" следует вообще запретить.. ))