Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2012, 22:18   #1
apelsun
Пользователь
 
Регистрация: 03.05.2012
Сообщений: 24
По умолчанию индексы в массиве

Подскажите, есть программа, которая находить индекс числа. Генерируется массив случайных чисел и программа должна вывести индекс числа, которое задается вручную.

Например массив: 3 5 8 3 5 2 16 58 74 2
Число 3

Программа выдаст ответ: 4

в программе ошибка, или так и должно быть, что индекс числа в массиве берется у последнего такого числа?

Как изменить программу, что бы она выводила первый индекс?
Код:
unit Unit1;

interface

uses
  SysUtils, Types, Classes, Variants, QTypes, QGraphics, QControls, QForms, 
  QDialogs, QStdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Button1: TButton;
    Edit1: TEdit;
    Label2: TLabel;
    Edit2: TEdit;
    Button2: TButton;
    Label3: TLabel;
    Edit3: TEdit;
    Button3: TButton;
    Button4: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
ik, k, i : integer;
s : string;
a : array [1..15] of integer;
implementation

{$R *.xfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Text:= '';
Edit2.Text:= '';
Edit3.Text:= '';
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Edit1.Text:= '';
Edit2.Text:= '';
Edit3.Text:= '';
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
k:= StrToInt (Edit2.Text);
For i:= 1 to 15 do
if k= a[i] then ik := i;
if ik= 0 then Edit3.Text := 'number ubsent'
else Edit3.Text := IntToStr (ik);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
randomize;
s:= '';
For i:= 1 to 15 do
begin
a[i]:= random (26);
s:= concat (s, IntToStr (a[i]), #32);
end;
Edit1.Text := s;
end;

end.

Последний раз редактировалось Stilet; 08.11.2012 в 22:43.
apelsun вне форума Ответить с цитированием
Старый 08.11.2012, 22:39   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
procedure TForm1.Button2Click(Sender: TObject);
begin
  k:= StrToInt (Edit2.Text);
  ik:=0;
  For i:= 1 to 15 do if k= a[i] then begin ik := i; Break; end;
  if ik= 0 then Edit3.Text := 'number ubsent'
           else Edit3.Text := IntToStr (ik);
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 08.11.2012, 23:07   #3
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Код:
Например массив: 3 5 8 3 5 2 16 58 74 2
Число 3

Программа выдаст ответ: 4
Нумерация элементов, стандартно, начинается с нуля, а не с единицы.
mass:array[0..3] og ShortInt = (0,1,2,3) - всего в массиве 4 элемента. Элемент с числом 3 имеет индекс 4
mass:array[1..3] og ShortInt = (1,2,3) - всего в массиве 3 элемента. Элемент с числом 3 имеет индекс 3

Последний раз редактировалось Человек_Борща; 08.11.2012 в 23:12.
Человек_Борща вне форума Ответить с цитированием
Старый 08.11.2012, 23:21   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Нумерация элементов, стандартно, начинается с нуля, а не с единицы.
Для динамичкских, для статических начинай с чего хочешь
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 08.11.2012, 23:29   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Для динамичкских, для статических начинай с чего хочешь
так это да. Вероятно ТС объявил статический массив [0..X] и интересуется почему элемент Y имеет индекс на единицу больше необходимого, ведь 0 не в счет. Оказалось 0 это тоже что-то значит.
Человек_Борща вне форума Ответить с цитированием
Старый 08.11.2012, 23:31   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Массив объявлен a : array [1..15] of integer; Просто в цикле ТС забыл Break вставить после нахождения 1-го вхождения
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 08.11.2012, 23:48   #7
apelsun
Пользователь
 
Регистрация: 03.05.2012
Сообщений: 24
По умолчанию

задание звучит вывести индекс числа.
Если массив 14 15 22 14 25 4 28 1 8 9 10 12 16 45 85

число 14

программа должна выводить 1 или 4?

Последний раз редактировалось apelsun; 09.11.2012 в 13:22.
apelsun вне форума Ответить с цитированием
Старый 09.11.2012, 00:02   #8
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

а каков диапазон?
Человек_Борща вне форума Ответить с цитированием
Старый 09.11.2012, 08:46   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ребят, Вы чего? Аватар уже ДВАЖДЫ дал ответ (второй раз даже пояснил, в чём была ошибка у TC)! Зачем толочь воду в ступе и говорить про пустой мешок?! ;(

Цитата:
Сообщение от apelsun
программа должна выводить 1 или 4?
Очевидно, что 1 (единицу)

Цитата:
Сообщение от Человек_Борща
а каков диапазон?
Диапазон чего, простите?!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти в одномерном массиве индексы первого и последнего отрицательных элементов(с++) Борис. Помощь студентам 3 29.02.2012 20:49
индексы Neymexa SQL, базы данных 2 18.11.2009 20:03
Индексы в БД GenniY БД в Delphi 7 23.09.2009 12:14
Индексы AlexDoul БД в Delphi 12 24.11.2007 16:52
Индексы Таня84 БД в Delphi 4 20.03.2007 14:09