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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.06.2011, 15:01   #1
oRik24
 
Регистрация: 13.06.2011
Сообщений: 9
По умолчанию Задача на зачёт. Поиск элементов в 1-мерном массиве

1. Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-1000,1000]. Найти сумму четных отрицательных элементов.
2. Вывести индексы тех элементов, значения которых кратны 3 и 6.
3. Определить, есть ли пара соседних элементов с суммой, равной заданному числу.

Всё сделал, не получается только последний (3) пункт. Помогите плиз.
Код:
var
  Form1: TForm1;
  N, sum, i, x:integer;
  M: array of integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
randomize;
n:=strtoint(edit1.Text);
setlength(M,N);
edit2.text:=' ';
for i:=0 to n-1 do
begin
m[i]:=round(sin(random(1000))*1000);
edit2.Text:=edit2.Text+'   '+inttostr(m[i]);
end
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
edit3.Text:=' ';
edit4.Text:=' ';
edit5.Text:=' ';
edit6.Text:=' ';
sum:=0;
for i:=0 to n-1 do
begin
if checkbox1.Checked then
begin
if (m[i]<0) and (m[i] mod 2=0) then sum:=sum+m[i];
edit3.Text:=inttostr(sum);
end;
if checkbox2.Checked then
begin
if (m[i] mod 6=0) or (m[i] mod 3=0) and (m[i]<>0) then
edit4.Text:=edit4.text+' '+inttostr(m[i]);
end;
if checkbox3.Checked then
begin
for i:=1 to n-1 do
begin
if strtoint(edit5.text)=(m[i]+(m[i+1])) then x:=i;
edit6.text:=inttostr(x);
end;
end;
end;
end;
end.
Рабочий вид программы загрузил. Если отмечаю третий чекбокс, то вылезает ошибка типа EConvertError.
Изображения
Тип файла: jpg zadanie.JPG (27.0 Кб, 104 просмотров)

Последний раз редактировалось oRik24; 15.06.2011 в 15:07.
oRik24 вне форума Ответить с цитированием
Старый 15.06.2011, 15:07   #2
G-Kyller
Пользователь
 
Регистрация: 11.03.2011
Сообщений: 67
По умолчанию

Обнули X при объявлении - из-за этого ошибка

и попробуй заменить n-1 на n-2
Код:
for i:=1 to n-2 do
begin
if strtoint(edit5.text)=(m[i]+(m[i+1])) then x:=i;
edit6.text:=inttostr(x);
end;
Если помог, жми спасибо

Последний раз редактировалось G-Kyller; 15.06.2011 в 15:11. Причина: причина найдена
G-Kyller вне форума Ответить с цитированием
Старый 15.06.2011, 15:17   #3
oRik24
 
Регистрация: 13.06.2011
Сообщений: 9
По умолчанию

Не помогает Всё та же ошибка.
oRik24 вне форума Ответить с цитированием
Старый 15.06.2011, 15:29   #4
G-Kyller
Пользователь
 
Регистрация: 11.03.2011
Сообщений: 67
По умолчанию

а так?
Код:
edit6.text:=x;
или так
Код:
edit6.text:=StrToIntDef(x);
Если помог, жми спасибо

Последний раз редактировалось G-Kyller; 15.06.2011 в 15:32. Причина: дополнение
G-Kyller вне форума Ответить с цитированием
Старый 15.06.2011, 15:39   #5
oRik24
 
Регистрация: 13.06.2011
Сообщений: 9
По умолчанию

Цитата:
Сообщение от G-Kyller Посмотреть сообщение
а так?
Так не запускается. Требует, чтобы Х был строкой.
Цитата:
Сообщение от G-Kyller Посмотреть сообщение
или так
Код:
edit6.text:=StrToIntDef(x);
Аналогично. У меня x:integer, зачем икс переделывать из строки в интеджер?

Последний раз редактировалось oRik24; 15.06.2011 в 15:53. Причина: дополнение
oRik24 вне форума Ответить с цитированием
Старый 16.06.2011, 09:21   #6
oRik24
 
Регистрация: 13.06.2011
Сообщений: 9
По умолчанию

Поднимаю тему. Вопрос всё ещё открыт
oRik24 вне форума Ответить с цитированием
Старый 16.06.2011, 10:07   #7
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

Код:
     for i:=0 to n-2 do
     if a[i]+a[i+1]=m then
     begin showmessage('Есть!');break;end;
Вложения
Тип файла: rar zachot.rar (7.6 Кб, 28 просмотров)
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.
Sparkman вне форума Ответить с цитированием
Старый 16.06.2011, 11:04   #8
oRik24
 
Регистрация: 13.06.2011
Сообщений: 9
По умолчанию

Большое спасибо
oRik24 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поиск максимальных элементов в массиве radiokarazinec Общие вопросы Delphi 1 26.12.2010 12:53
В массиве из п элементов много совпадающих элементов. Найти количество различных элементов Strax Фриланс 11 12.06.2010 20:13
C++ поиск повторяющихся (строковых) элементов в массиве danslash Помощь студентам 5 29.03.2010 01:35
ДЭЛФИ 2 задачи для зачета(поиск элементов в массиве) Archetype Помощь студентам 12 10.12.2009 18:18
В одномерном массиве, состоящем из n вещественных элементов, вычислить сумму элементов массива HazelHen Общие вопросы C/C++ 2 29.03.2009 15:16