Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Два наименьших и два наибольших элемента 
:(
    Опции темы
Guest
  Дата 7.7.2005, 13:56 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Как найти два наименьших и два наибольших элемента из десяти данных элементов. smile
  Вверх
~FoX~
Дата 7.7.2005, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 2
Всего: 68



определяем 4-е переменных, при проходе заносим в них первые 4-е элемента, дальше проверям на большее/меньшее и переоопределям при надобности......

Это сообщение отредактировал(а) ~FoX~ - 7.7.2005, 14:02


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Akina
Дата 7.7.2005, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Отсортировать по величине, взять 2 первых и 2 последних... smile


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
SoWa
Дата 7.7.2005, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 6
Всего: 74



Ну да! Методом сортировки, выбора или полного перебора.


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
Guest
Дата 7.7.2005, 17:37 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(SoWa @ 7.7.2005, 17:19)
Ну да! Методом сортировки, выбора или полного перебора.

Попробовал завести четыре переменных, всё равно че то не робит...
А можно пример на паскале smile Плиз...
  Вверх
Akina
Дата 7.7.2005, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(Guest @ 7.7.2005, 18:37)
А можно пример на паскале  Плиз...

можно... в разделе "Центр помощи".

PS. А заодно можно зарегистрироваться - это совершенно бесплатно и даже не больно...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
vadims
Дата 7.7.2005, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 8.6.2005

Репутация: нет
Всего: 17



Выложи код как бы бы искал одно максимальное/минимальное число в массиве - попробую подталкнуть в нужном напралении
Или сортировку массива


--------------------
Cpu not found ! Press any key for software emulation.
PM MAIL   Вверх
Guest
Дата 7.7.2005, 19:19 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(vadims @ 7.7.2005, 18:42)
Выложи код как бы бы искал одно максимальное/минимальное число в массиве - попробую подталкнуть в нужном напралении
Или сортировку массива

Вообще то с массивом я знаю как-это просто, нужно без массива и использовать "однопроходной" алгоритм ....
Вот код:
Код

uses crt;
const count_d=10;
var d,i:Integer;
    min,max:Integer;
begin
     Clrscr;
     min:=maxint; max:=-maxint;
     Write('Введите 10 целочисленных элементов:');
     for i:=1 to count_d do begin
        Read(d);
        if (min>d) then   min:=d;  
        if (max<d) then  max:=d;  
     end;
     WriteLn('Min:',min);
     WriteLn('Max:',max);
     Readkey;
end.

Так находится наименьший и наибольший элементы min и max.
  Вверх
vadims
Дата 7.7.2005, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 8.6.2005

Репутация: нет
Всего: 17



Если это можешь - в чем тогда проблема ???
Только паскаль подзабыл и могут быть синтаксические ошибки, например так (но можно конечно и красоту понаводить)

uses crt;
const count_d=10;
var d,i:Integer;
array min[0..1]:Integer; //тут не помню точно синтаксис
array max[0..1]:Integer; // но 2 массива по 2 числа типа int
begin
Clrscr;

Write('Введите 10 целочисленных элементов:');

Read(d);
min[0]:=d; min[1]:= d;
max[0]:=d; max[1]:=d;


for i:=2 to count_d do begin
Read(d);

if (d<min[0]) then begin
min[1]:=min[0];
min[0]:=d;
end;
else begin
if (d<min[1]) then min[1]:=d;
end;

if (d>max[0]) then begin
max[1]:=max[0];
max[0]:=d;
end;
else begin
if (d>max[1]) then max[1]:=d;
end;

end;
WriteLn('Min:',min[0]);
WriteLn('Min:',min[1]);
WriteLn('Max:',max[0]);
WriteLn('Max:',max[1]);
Readkey;
end.



--------------------
Cpu not found ! Press any key for software emulation.
PM MAIL   Вверх
Guest
  Дата 8.7.2005, 07:59 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











vadims, на мысль ты меня натолкнул...
Только условия пришлось немного подправить, вот так будет правильно:
Код

uses crt;
const count_d=10;
var d,i:Integer;
     min:array [0..1]of Integer;
     max:array [0..1]of Integer;
begin
     Clrscr;
     Write('Ââåäèòå 10 öåëî÷èñëåííûõ ýëåìåíòîâ:');
     for i:=1 to 2 do begin
        Read(d);
        if i=1 then begin
          min[0]:=d;
          max[0]:=d;
        end;
        if i=2 then begin
          min[1]:= d;
          max[1]:=d;
        end;
     end;
     for i:=3 to count_d do begin
     Read(d);
     if (d<min[0]) then begin
       min[1]:=min[0];
       min[0]:=d;
     end
     else if (d<min[1]) and (d<>min[0]) then
         min[1]:=d;
     if (d>max[0]) then begin
       max[1]:=max[0];
       max[0]:=d;
     end
     else if (d>max[1]) and (d<>max[0]) then
         max[1]:=d;
     end;
     WriteLn('Min:',min[0]);
     WriteLn('Min:',min[1]);
     WriteLn('Max:',max[0]);
     WriteLn('Max:',max[1]);
     Readkey;
end. 

Огромное тебе спасибо, что навёл на мысль smile
  Вверх
vadims
Дата 8.7.2005, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 8.6.2005

Репутация: нет
Всего: 17



Цитата(Guest @ 8.7.2005, 07:59)
);
    for i:=1 to 2 do begin
        Read(d);
        if i=1 then begin
          min[0]:=d;
          max[0]:=d;
        end;
        if i=2 then begin
          min[1]:= d;
          max[1]:=d;
        end;
   


Излишества на мой взгляд



--------------------
Cpu not found ! Press any key for software emulation.
PM MAIL   Вверх
Guest
Дата 8.7.2005, 09:41 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(vadims @ 8.7.2005, 08:57)
Цитата(Guest @ 8.7.2005, 07:59)
);
     for i:=1 to 2 do begin
        Read(d);
        if i=1 then begin
          min[0]:=d;
          max[0]:=d;
        end;
        if i=2 then begin
          min[1]:= d;
          max[1]:=d;
        end;
    


Излишества на мой взгляд

А помоему нет, если написать так:
Код

  Read(d);
          min[0]:=d;
          max[0]:=d;
          min[1]:= d;
          max[1]:=d;

И задать последовательность:1 2 3 ... 7 8 9 10, то min[0] и min[1] будут равны 1.

И ещё, если оставить вот так:
Код

if (d<min[1]) then min[1]:=d;
end;

И задать последовательность:6 5 1 2 3 1 7 8 9 10, то min[0] и min[1], тоже будут равны 1.
Поэтому:
Код

if (d<min[1]) and (d<>min[0]) then min[1]:=d;
end;


Короче говоря проверил на все виды последовательностей, и попытался предусмотреть любую из них.
  Вверх
Akina
Дата 8.7.2005, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



вообще коли integer, то начать бы с

Код

min[0]=-32768
min[1]=-32768
max[0]=32767
max[1]=32767


и потом только считывание и сравнение.

Цитата(vadims @ 8.7.2005, 09:57)
Излишества на мой взгляд

не излишество, а ошибка. Если второе введенное число будет самым большим (или самым маленьким) - сбойнет.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
vadims
Дата 8.7.2005, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 8.6.2005

Репутация: нет
Всего: 17



Согласен что мой выбор первых max/min значений некорректен, но и твой последний вариант как и сказал Akina тоже ошибка - проше всего вернуться к твоему изначальному
Цитата(Guest @ 7.7.2005, 19:19)
min:=maxint; max:=-maxint;

хотя возможны и другие варианты



--------------------
Cpu not found ! Press any key for software emulation.
PM MAIL   Вверх
Alex101
Дата 8.7.2005, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 891
Регистрация: 8.4.2002
Где: Москва

Репутация: 1
Всего: 10



Может так?
Код

uses Crt;
var min1,min2,max1,max2: Integer;
a,i:Integer;
begin
readln(min1);
readln(min2);
readln(max1);
readln(max2);
{*Выстроим переменные в порядке возрастания так:
min1,min2,max2,max1*}
if min2<min1 then begin
 min2:=min1 xor min2;
 min1:=min1 xor min2;
 min2:=min1 xor min2
end;
if max2>max1 then begin
 max2:=max1 xor max2;
 max1:=max1 xor max2;
 max2:=max1 xor max2
end;
if (max2<min1)
then begin
 max2:=min1 xor max2;
 min1:=min1 xor max2;
 max2:=min1 xor max2
end;

if (min2>max1)
then begin
 max1:=min2 xor max1;
 min2:=min2 xor max1;
 max1:=min2 xor max1
end;

if (min2>max2)
then begin
 max2:=min2 xor max2;
 min2:=min2 xor max2;
 max2:=min2 xor max2
end;
for i:=5 to 10 do
begin
 readln(a);
 if a<min1 then begin
  min2:=min1;
  min1:=a;
 end
 else if a<min2 then min2:=a;

 if a>max1 then begin
  max2:=max1;
  max1:=a;
 end
 else if a>max2 then max2:=a;
end;
writeln(min1,' ',min2,' ',max2,' ',max1);
end.

Проверьте, у меня компилятора нет.

Это сообщение отредактировал(а) Alex101 - 8.7.2005, 11:19


--------------------
С уважением, А. Фролов.
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0594 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.