Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Delphi]Дин.Массивы поиск мин.Нечётного! числа, как пользоватся ф-ей Odd 
:(
    Опции темы
Нэраварин
Дата 9.3.2009, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Впринципе довольно распространёная задачка, фактически она  у меня решена, "но я считаю что я немного смошеничал". Суть в том что мне нужно найти миниальный нечётный элемент при помощи функции ODD , по моей логике 0-чётное (и число и в 0-ой позиции масива обычно хранится тоже чётное) а в последующей обычно Random ставит Мин.нечётный. вот я тупо и сделал Min:=x[1].
Но подскажите как грамотно реализовать цикл с использованием ODD.


Условие моей задачи :
//Даны  целые числа a, x1, x2, ..., xn.
//Если в последовательности x1, x2, ..., xn есть хотя бы один член, равный a,
// то получить сумму всех членов, следующих за первым таким членом,
// иначе найти минимальный среди нечетных чисел последовательности x1, x2, ..., xn

Код моей задачи (Суть в конце кода, (но на всякий случай описал абсолютно полностью всю ситуацию неабесудьте если "Многа_БУкафф  smile "))

Код

procedure TForm1.Button1Click(Sender: TObject);
begin
  SetLength(X, 10);   // устанавливает длинну динамического массива
  for i:=0 to 9 do begin
    X[i]:=Random(50)-50;   //задаём случайные числа динамическому массиву Х
    S.cells[i,0]:=floattostr(x[i]); //  отображаем случайные числа из динамического масива Х в Стринг грид
  end;
end;


procedure TForm1.Button2Click(Sender: TObject);
var
  j,sum,min,n,a,i:integer;
  ok: boolean;
begin
  a := strtoint(Edit2.Text);
  i := 0;
  ok :=false;
  n := Length(x);
  sum:=0;
  min:=x[1];

  while not ok and (i < n) do
  begin
      if x[i] = a then
        ok := true   //поиск элемента А
      else
        i:=i+1;
  end;
  if Ok then
    for j:=I+1 to 9 do begin   //Если элемент А найден считаем суму последующих чисел за ним
      sum:=sum+x[j];
      Label1.Caption := IntToStr(sum) + ' ' + IntToStr(sum);
      end
    else                                   //Если эл. А ненайден ищем Минимальное нечётное чилсо
     for i:=1 to 9 do begin
       {while odd(x[i]) do begin} {Тщетные попытки заставить ф-цию odd работать на автоматизме через цыкл}
       {if odd(x[i])then begin}       //ВОТ тут то и нужна мне ваша помощь!
        if odd(x[i]) < odd(min) then  min:=x[i];
        //end;
        //end;
       end;
       Label1.Caption := IntToStr(min);



end;
end.



При помощи этой задачи понимал суть масивов, Но нивкакую немогу реализовать другую задачу т.к у вас правило одна тема-один вопрос то пожалуйста перейдите по ссылочке на другую тему Сравнение двух строк

З.Ы Оформил вроде правильно, но у мну что то неощущается подсветки кода ...



Это сообщение отредактировал(а) Нэраварин - 9.3.2009, 14:36
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

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

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


 




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


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

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