Выпуск № 898 от 03.06.2009, 04:35
Администратор рассылки: Калашников О.А., Руководитель
В рассылке: подписчиков - 337, экспертов - 146
В номере: вопросов - 2, ответов - 2
Нам очень важно Ваше мнение об этом выпуске рассылки. Вы можете оценить этот выпуск по пятибалльной шкале, пройдя по ссылке: оценить выпуск >>
Вопрос № 168450: Дан линейный связный список содержащий вещественные числа: 1 задание.Найти элемент с заданным значением и вывести его номер. 2 задание.Найти самое минимальное значение четных элементов списка...
Вопрос № 168452: Даны матрицы х(6,10),y(10,8) действительных чисел.Найти сумму и количество элементов,удовлетворяющих условию 0<=х[i,j]=<1, 0<=y[i,j]=<1. Для вычислений использовать процедуру.????...
Вопрос № 168450:
Дан линейный связный список содержащий вещественные числа: 1 задание.Найти элемент с заданным значением и вывести его номер. 2 задание.Найти самое минимальное значение четных элементов списка
{ Удаляет элемент в текущей позиции } procedure TList.Remove; var node:PNode; begin if currentptr<>@myhead then begin node:=currentptr; currentptr^.prev^.next:=currentptr^.next; currentptr^.next^.prev:=currentptr^.prev; currentptr:=currentptr^.next; Dispose(node); Dec(count); end; end;
{ Устанавливает указатель в требуемую позицию относительно базы } function
TList.Seek(base: TSeekPosition; offset: Integer):Boolean; var step:Integer; begin Seek:=false; if count<>0 then begin offset:=offset mod count; case base of head: currentptr:=myhead.next; tail: currentptr:=myhead.prev; current:; end; if offset<0 then step:=-1 else step:=1; while offset<>0 do begin case step of -1:currentptr:=currentptr^.prev; +1:currentptr:=currentptr^.next; end; if currentptr<>@myhead then offset:=offset-step else Exit; end; Seek:=true; end; end;
{ Добавляет элемент в конец списка } procedure TList.Add(value: Integer); var node:PNode; begin New(node); node^.data:=value; node^.next:=@myhead; node^.prev:=myhead.prev; myhead.prev^.next:=node; myhead.prev:=node; Inc(count); end;
{ Возвращает размер списка } function TList.Size: Integer; begin Size:=count; end;
{
Деструктор } destructor TList.Done; begin while count>0 do begin currentptr:=myhead.next; Remove; end; end;
{ Возвращает значение в текущей позиции списка } function TList.Get(var item: Integer):Boolean; begin if currentptr<>@myhead then begin item:=currentptr^.data; Get:=true; end else Get:=false; end;
const NumCount=20; { Количество элементов которое будем загонять в список }<
br> var list:TList; i,val,num,no,cnt,min:Integer; flag:Boolean; begin { Вызовем конструктор списка } list.Init; { Заполним список случайными значениями и распечатаем его } Randomize; WriteLn('List contain:'); for i := 1 to NumCount do begin val:=Random(50)-25; list.Add(val); Write(val,','); end; WriteLn(#08,' '); { Установим указатель на начало списка } if list.Seek(head,0) then begin { Вводим искомый элемент } Write('num=');ReadLn(num); no:=0; {
Номер элемента } min:=(1 shl (SizeOf(Integer)*8-1))-1; { Минимальный четный } cnt:=0; { Просто счетчик } flag:=false; { true если есть четные } { Идем по списку } { Извлекаем элемент пока есть что извлекать } while list.Get(val) do begin { Увеличим счетчик } Inc(cnt); { Если нашли запомним номер } if (no=0) and (val=num) then no:=cnt; { Если четное и меньше найденного }
if (not Odd(val)) and (val<min) then begin min:=val; flag:=true; end; { Указатель на следующий элемент } list.Seek(current,1); end; { Если нашли печатаем номер } if no<>0 then WriteLn('Index of ',num,' is ',no) else WriteLn(num,' not found'); { Если есть четные печатаем минимальный элемент } if flag then WriteLn('Even the minimal element is ',min) else WriteLn('Even items not found'); end; {
Уничтожим список } list.Done; ReadLn; END.
Пример работы:
Код:
List contain: -7,-18,10,22,-6,21,-25,6,-12,20,22,18,-11,9,-12,5,-24,-9,11,-12 num=-11 Index of -11 is 13 Even the minimal element is -24
pre>
Ответ отправил: Micren, Практикант
Ответ отправлен: 28.05.2009, 22:41
Оценка ответа: 5
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 249991
на номер 1151 (Россия) |
Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Вопрос № 168452:
Даны матрицы х(6,10),y(10,8) действительных чисел.Найти сумму и количество элементов,удовлетворяющих условию 0<=х[i,j]=<1, 0<=y[i,j]=<1. Для вычислений использовать процедуру.????
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.