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

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

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

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





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

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


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

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

Интересует в общем только вторая часть. Спасибо заранее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






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

Все, понял... Сделаем smile.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8





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

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


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

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

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





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

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


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

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

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

 





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