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

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

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

 
 Ответить  Открыть новую тему 
> Задача на сравнения
maq
сообщение 9.03.2006 4:33
Сообщение #1





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

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


Ребят, помогите полегче решить задачу, а то фигня какая-то получается... blink.gif

Даны действит. числа a,b,c,d
Разраб. программу, кот. сравнивает эти числа
- Если a<=b<=c<=d, то наименьшее число заменить наибольшим из них
- Если a>b>c>d, то числа оставить без изменений, а иначе наибольшее заменить наименьшим.

Интересует в общем только вторая часть. Спасибо заранее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 9.03.2006 8:14
Сообщение #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";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
maq
сообщение 13.03.2006 20:39
Сообщение #3





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

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


klem4, спасибо за ответ!

Вот написал, но сдается мне, что что-то не сходится wacko.gif

Код
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.


буду благодарен, если кто поможет rolleyes.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 13.03.2006 20:49
Сообщение #4


Гость






blink.gif
Так нельзя?
program la;
uses crt;
var
a, b, c, d: integer;
begin;
clrscr;
writeln('Vvedite a b c d:');
readln(a, b, c, d);

if (a<=b) and (b<=c) and (c<=d) then a := d
else
if (a>b) and (b>c) and (c>d) then { Ничего не делать }
else d := a;

write('a = ',a,' b = ',b,' c = ',c,' d = ',d);
readkey;
end.
 К началу страницы 
+ Ответить 
maq
сообщение 13.03.2006 21:02
Сообщение #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


Не пойму, в чем ошибка... blink.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 13.03.2006 21:05
Сообщение #6


Гость






maq, ты свое же задание ВНИМАТЕЛЬНО читал? Что по-твоему должно произойти если
Цитата
Vvedite a b c d: 1 6 2 9
?

Все, понял... Сделаем smile.gif
 К началу страницы 
+ Ответить 
volvo
сообщение 13.03.2006 21:16
Сообщение #7


Гость






Вот так (кстати, этот алгоритм и предлагал во втором посте klem4 yes2.gif ):
program la;
uses crt;
var
ar: array[1 .. 4] of integer;
i, min, max: integer;
begin;
clrscr;
writeln('Vvedite a b c d:');
readln(ar[1], ar[2], ar[3], ar[4]);

min := 1; max := 1;
for i := 2 to 4 do begin
if ar[max] < ar[i] then max := i;
if ar[min] > ar[i] then min := i;
end;

if (ar[1]<=ar[2]) and (ar[2]<=ar[3]) and (ar[3]<=ar[4])
then ar[min] := ar[max]
else
if (ar[1]>ar[2]) and (ar[2]>ar[3]) and (ar[3]>ar[4]) then
else ar[max] := ar[min];

write('a = ',ar[1],' b = ',ar[2],' c = ',ar[3],' d = ',ar[4]);
readkey;
end.
 К началу страницы 
+ Ответить 
maq
сообщение 13.03.2006 21:20
Сообщение #8





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

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


volvo, я это задание наизусть уже выучил smile.gif
Но ведь нужно наибольшее заменить наименьшим, а тут так не получается... wacko.gif

[добавлено]
поздно запостил, но все же...
[/добавлено]

Сообщение отредактировано: maq - 13.03.2006 21:22
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
maq
сообщение 13.03.2006 21:32
Сообщение #9





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

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


volvo, спасибо за программу! Все работает! good.gif
Я тоже примерно так сделать хотел, но почему-то решил находить min&max в конце. И вообще с ошибкой получилось.
Спасибо за помощь! smile.gif

Сообщение отредактировано: maq - 13.03.2006 21:36
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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