Задача на сравнения |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Задача на сравнения |
maq |
Сообщение
#1
|
Группа: Пользователи Сообщений: 7 Пол: Мужской Репутация: 0 |
Ребят, помогите полегче решить задачу, а то фигня какая-то получается...
Даны действит. числа a,b,c,d Разраб. программу, кот. сравнивает эти числа - Если a<=b<=c<=d, то наименьшее число заменить наибольшим из них - Если a>b>c>d, то числа оставить без изменений, а иначе наибольшее заменить наименьшим. Интересует в общем только вторая часть. Спасибо заранее. |
klem4 |
Сообщение
#2
|
Perl. Just code it! Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
Ты бы показал свою фигню, мы бы поправили, а вообще я бы хранил 4 числа в массиве, так как нам надо будет запмнить номера, где располагаются макс. и мин. элементы. Алгоритм значит такой : Ищешь в массиве номера максимального и минимального элементов, запоминаешь их, потом проверяешь для массивов свои условия : Если массив образует неубывающую последовательность, то x[imin] := x[imax], иначе если последовательность возпрастающая, то оставить числа без зименений, иначе x[imax] := x[imin];
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
maq |
Сообщение
#3
|
Группа: Пользователи Сообщений: 7 Пол: Мужской Репутация: 0 |
klem4, спасибо за ответ!
Вот написал, но сдается мне, что что-то не сходится Код program la; uses crt; var k:array[1..4] of integer; i,tmp1,tmp2,imax,imin:integer; begin; clrscr; writeln('Vvedite a b c d:'); readln(k[1],k[2],k[3],k[4]); if (k[1]<=k[2]) and (k[2]<=k[3]) and (k[3]<=k[4]) then k[1]:=k[4]; if (k[1]>k[2]) and (k[2]>k[3]) and (k[3]>k[4]) then else begin; tmp1:=K[1]; tmp2:=k[1]; for i:=2 to 4 do begin if k[i]>tmp1 then begin imax:=i; tmp1:=k[i]; end; if k[i]<tmp2 then begin imin:=i; tmp2:=k[i]; end; end; k[imax]:=k[imin]; end; write('a=',k[1],'b=',k[2],'c=',k[3],'d=',k[4]); readkey; end. буду благодарен, если кто поможет |
volvo |
Сообщение
#4
|
Гость |
Так нельзя? program la; |
maq |
Сообщение
#5
|
Группа: Пользователи Сообщений: 7 Пол: Мужской Репутация: 0 |
volvo, не к сож. так не получится т.к.:
Код Vvedite a b c d: 1 6 3 5 a=1 b=6 c=3 d=1 Не определяется максимальное число... Но все равно спасибо за ответ%) Кстати в программе, которую я написал прикол еще лучше: Код Vvedite a b c d: 1 6 2 9 a=1 b=6 c=2 d=69 Не пойму, в чем ошибка... |
volvo |
Сообщение
#6
|
Гость |
maq, ты свое же задание ВНИМАТЕЛЬНО читал? Что по-твоему должно произойти если
Цитата Vvedite a b c d: 1 6 2 9 ?Все, понял... Сделаем |
volvo |
Сообщение
#7
|
Гость |
Вот так (кстати, этот алгоритм и предлагал во втором посте klem4 ):
program la; |
maq |
Сообщение
#8
|
Группа: Пользователи Сообщений: 7 Пол: Мужской Репутация: 0 |
volvo, я это задание наизусть уже выучил
Но ведь нужно наибольшее заменить наименьшим, а тут так не получается... [добавлено] поздно запостил, но все же... [/добавлено] Сообщение отредактировано: maq - |
maq |
Сообщение
#9
|
Группа: Пользователи Сообщений: 7 Пол: Мужской Репутация: 0 |
volvo, спасибо за программу! Все работает!
Я тоже примерно так сделать хотел, но почему-то решил находить min&max в конце. И вообще с ошибкой получилось. Спасибо за помощь! Сообщение отредактировано: maq - |
Текстовая версия | 23.12.2024 20:33 |