Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 17.07.2009
Сообщений: 7

Преобразовать один массив в другой

18.07.2009, 21:41. Показов 3609. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет Всем!
Тут такая проблемка случилась: программист я одним словом – никакой, но нужно написать программу. О ней сейчас я расскажу. Вобщем, дан массив с уже веденными данными (около 1000) вещественного типа. Назовем его massiv_a. Нужно этот массив преобразовать в новый, massiv_b, massiv_b:=(massiv_a[i] - massiv_a[i+1])*(-1) //т.е. второй массив это разность между первым число и вторым второго массива. Можно еще умножить на 100, чтоб число стало как-бы целым. Затем по-идеи нужно ввести в память компа два числа, найти их последовательность в massiv_b и вывести на экран следующее число после них.

N1 – первое вводимое число // допустим 136
N2 – второе вводимое число // 198

Delphi
1
2
3
4
5
6
Massiv_b[i]:=;
Massiv_b[i+1]:=;
Massiv_b[i+2]:=136;
Massiv_b[i+3]:=198;
Massiv_b[i+4]:=348;        //вывести это число на экран
Massiv_b[i+5]:=;

Так что мне нужно помощь спецов, сам я "не местный" и не справляюсь…Помогите люди добрые!!!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.07.2009, 21:41
Ответы с готовыми решениями:

Преобразовать массив, уменьшив каждую его серию на один элемент
В for/while/repeat. Дан целочисленный массив размера N. Преобразовать массив, уменьшив каждую его серию на один элемент. Серия-это группа...

В один массив записать чётные, а в другой - нечётные элементы матрицы
Мужики,выручайте,экзамен! Дана матрица А,имеющая N строк и N столбцов. Сформирует едва одномерных массива. В один запишите чётные, а в...

Даны два массива А и В одинакового размера N. Преобразовать массив, уменьшив каждую его серию на один элемент
Доброго времени суток! Будьте так добры помогите сделать еще пару заданий!На счет массивов Я не "выгребаю"! Сама задача...

23
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
18.07.2009, 22:15
Вообще ничего не понятно. У Вас есть какое-то конкретное задание, написанное не Вами? Желательно без Ваших комментариев.
0
0 / 0 / 0
Регистрация: 17.07.2009
Сообщений: 7
18.07.2009, 22:35  [ТС]
Черт(( пытался писать по-понятней((
задания написанного не мной - нет. Все в моей голове.

Попытка номер 2 объяснить то, что я хочу создать:

1)Представте что есть 1000 разнообразных чисел. Каждому числу соответствует свой индекс в массиве.

2)
0
 Аватар для .:EAGLE:.
240 / 91 / 6
Регистрация: 11.12.2008
Сообщений: 949
18.07.2009, 22:47
Цитата Сообщение от GeparD Посмотреть сообщение
massiv_b:=(massiv_a[i] - massiv_a[i+1])*(-1)
Может имелось ввиду:
massiv_b[i]:=(massiv_a[i] - massiv_a[i+1])*(-1) // ?
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
18.07.2009, 22:49
- massiv_a[i+1])*(-1) не проще тогда просто + massiv_a[i+1])
0
0 / 0 / 0
Регистрация: 17.07.2009
Сообщений: 7
18.07.2009, 22:52  [ТС]
2) Теперь надо от первого чилса отнять второе, сохранить результат в новом массиве под индексом [1]

3) Затем от второго числа отнять третье, сохранить результат в новом массиве под индексом [2]

4)...

5) И так все 1000 чисел.

Задавайте еще вопросы, если не понятно, отвечу.

Добавлено через 1 минуту 31 секунду
Цитата Сообщение от Puporev Посмотреть сообщение
- massiv_a[i+1])*(-1) не проще тогда просто + massiv_a[i+1])
а что вы будете делать с самым первым числом?
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
18.07.2009, 22:53
for i:=2 to 1000 do
b[i]:=a[i]-a[i+1];
0
0 / 0 / 0
Регистрация: 17.07.2009
Сообщений: 7
18.07.2009, 23:06  [ТС]
Здесь я пытаюсь ввести данные из первого массива во второй

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 var
 i,k: integer;
 massiv_a: array [1..10] of real;
 massiv_b: array [1..10] of real;
 
  begin
    //МАССИВ первый
massiv_a[1]:=   0.1;
massiv_a[2]:=   0.2;
massiv_a[3]:=   0.3;
massiv_a[4]:=   0.4;
massiv_a[5]:=   0.5;
massiv_a[6]:=   0.6;
massiv_a[7]:=   0.7;
massiv_a[8]:=   0.8;
massiv_a[9]:=   0.9;
massiv_a[10]:=1.0 ;
 
//массив второй
  begin
for k:=Low(massiv_b) to High(massiv_b) do
 massiv_b[k]:=(massiv_a[i]-massiv_a[i+1])*(-1);
 k:=k+1;
 i:=i+1;
   end;
 
   //Проверяю, правильно ли работает программа
 
Label1.Text:='1) '+massiv_b[k].ToString+
             '2) '+massiv_b[k].ToString+
             '3) '+massiv_b[k].ToString;
  end;
 
 
 
 
end.
но появляется ошибка "Index was outside the bounds of the array"
что, как я понимаю: индекс массива выходит за пределы

переделал это
Delphi
1
2
3
4
5
  begin
for i:=1 to 10 do
 massiv_b[i]:=(massiv_a[i]-massiv_a[i+1])*(-1);
 i:=i+1;
   end;
теперь результат везде равняется 0
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
18.07.2009, 23:13
Эта запись
Delphi
1
 for k:=Low(massiv_b) to High(massiv_b) do
говорит о том что у Вас объявлен динамический массив.
Поэтому цикл должен быть
Delphi
1
2
3
4
for i:=0 to 9 do
 massiv_b[i]:=(massiv_a[i]-massiv_a[i+1])*(-1);
 i:=i+1;
   end;
а индексы элементов 0,1,....9
0
0 / 0 / 0
Регистрация: 17.07.2009
Сообщений: 7
18.07.2009, 23:28  [ТС]
значит Low(a) High(a) можно использовать только при динамичном массиве?
исправил for i:=0 to 9 do
и индексы элементовБ а ошибка все осталась(??

ну блин, программка ведь очень проста, а ошибку в ней найти не могу(

Puporev, не знаете, в чем еще можед быть причина ошибки?
0
Эксперт С++
 Аватар для schdub
3073 / 1411 / 425
Регистрация: 19.01.2009
Сообщений: 3,892
18.07.2009, 23:33
конечно ошибка останеться, т.к. объявлен массив b с индексами 1-10, а в цикле обращаетесь с 0-9

Pascal
1
2
3
4
...
for k:=1 to length(massiv_a)-1 do
   massiv_b[k]:=(massiv_a[k]-massiv_a[k+1])*(-1);
...
Но что делать с последник элементом massiv_b[10]?
0
0 / 0 / 0
Регистрация: 17.07.2009
Сообщений: 7
18.07.2009, 23:40  [ТС]
Pascal
1
2
3
4
...
for k:=1 to length(massiv_a)-1 do
   massiv_b[k]:=(massiv_a[k]-massiv_a[k+1])*(-1);
...
Но что делать с последник элементом massiv_b[10]?[/QUOTE]

Думаю лучше написать как сказал Puporev
for i:=0 to 9 do

тогда не надо будет ломать голову над последним элементом

смотрите какое предупреждение пишет мне дельфи
[Warning] WinForm.pas(135): W1037 FOR-Loop variable 'k' may be undefined after loop

Вроде, как: Переменная "K" в связке "for to do" не может быть определена после этого оператора.
Как исправлять???
0
Эксперт С++
 Аватар для schdub
3073 / 1411 / 425
Регистрация: 19.01.2009
Сообщений: 3,892
18.07.2009, 23:46
Что должно получиться в вашем примере в массиве B?
если массив объявлен вот так,
massiv_b: array [1..10] of real;
то к нему можно обращаться по 1 -10 индексам
если вы обратитесь по 0 - ошибка!
0
0 / 0 / 0
Регистрация: 17.07.2009
Сообщений: 7
18.07.2009, 23:58  [ТС]
Delphi
1
2
3
4
massiv_a[1]:= 1.05 ;
massiv_a[2]:= 1.25 ;
massiv_a[3]:= 2.25;
massiv_a[4]:= 1.50;
Тогда

Delphi
1
2
3
massiv_b[1]:= 0.20 ;
massiv_b[2]:= 1.00 ;
massiv_b[3]:=-0.75 ;
0
2 / 2 / 1
Регистрация: 09.07.2009
Сообщений: 22
21.07.2009, 08:05
Добрый день!
по-моему очень даже хорошая и не сложная операция вычитание элементов массива.
пища для мозгов )
можно сделать следующее. создать первую форму где будут массивы_Аi
вторую форму где будут массивы_Аi_1.
и третья форма массивы_Bi.
Проблема будет только в том что элемента массива massiv_a[11] в цикле
Delphi
1
2
for i:=1 to 10 do
 massiv_b[i]:=(massiv_a[i]-massiv_a[i+1])*(-1);
просто не существует. Скорее всего тут у тебя и выходит ошибка.
поставь условие если massiv_a[i+1]>10 то соответствующее вычисление
или задай этот несуществующий элемент.
дерзай.
в свое время решал задачки с матрицами (очень сложные).
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
21.07.2009, 08:32
Такое ощущение, что автор сам понятия не имеет, что хочет сделать.
0
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
21.07.2009, 08:42
я уже две страницы прочитал и так не могу понять что он хочет сделать, может он напишет нормально постановку задачи, или хотя бы для чего это делается???
0
Эксперт С++
 Аватар для schdub
3073 / 1411 / 425
Регистрация: 19.01.2009
Сообщений: 3,892
21.07.2009, 12:44
GeparD

Т.е. в массиве B на один элемент меньше?

Но что делать с последник элементом massiv_b[10]?
Цитата Сообщение от GeparD

Думаю лучше написать как сказал Puporev
for i:=0 to 9 do

тогда не надо будет ломать голову над последним элементом
И это при объявленных массивах
Pascal
1
2
massiv_a: array [1..10] of real;
massiv_b: array [1..10] of real;
Афтор, топик ф топку и не морочьте нам мозги.
0
 Аватар для lexus_ilia
3067 / 727 / 69
Регистрация: 24.09.2008
Сообщений: 1,531
21.07.2009, 13:05
Я прочитал две страницы, задания не понял.
1)Автору предлагаю почитать основы программирования на Делфи, раздел "Массивы" (Любую книгу, там совсе мало).
2)Если задание не будет написано, я считаю дальше помогать смысла нет, если пойдёт оффтоп - тему закрою.
0
Programmer
 Аватар для DannerDOS
40 / 40 / 6
Регистрация: 07.04.2009
Сообщений: 187
25.07.2009, 20:26
мммДа... Вы что кодеры... На форум только в нетрезвом виде входите...
Кароче GeparD у тебя в цикле переборки, массив "А" выходит за допустимые границы индексов... Поэтому в данном случае имееться множество вариантов решения поставленной задачи...
Вот здесь вот и нужно обработать сложившеюся ситуацию:
Delphi
1
2
3
4
for i := 1 to 1000 do 
  begin
  massiv_b:=(massiv_a[i] - massiv_a[i+1])*(-1)
  end;
Привиду пару примеров реализации поставленной задачи:
1.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
label transition;
...
for i := 1 to 1000 do
  begin
  if i = 1000 then
    begin
    massiv_b[i] := massiv_a[i] * (-1);
    goto transition;
    end;
  massiv_b[i] := (massiv_a[i] - massiv_a[i+1]) * (-1);
  transition:
  end;
...
На случай если ты нелюбишь операторы безусловного перехода goto тогда вот это для тебя:
2.
Delphi
1
2
3
4
5
6
7
8
try
for i := 1 to 1000 do
  begin
  massiv_b[i] := (massiv_a[i] - massiv_a[k+1]) * (-1);
  end;
except
massiv_b[1000] := (massiv_a[1000]) * (-1);
end;
И знай на будующее если решишься идти по данному пути, пути кодера что все можно отследить до мелочей, какой сложной небыла бы поставленная задача...
-------------------------------------------------------------------------
С вами был DannerDOS, незабывайте говарить спасибо!

Добавлено через 31 минуту 48 секунд

-------------------------------------------------------------------------
Ну ппц просто... Админы где вы увидели оскорбление? То что кодеры бухают неподетски то это уже реальность и к ней нужно привыкать!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.07.2009, 20:26
Помогаю со студенческими работами здесь

Скопируем один список в другой
помогите. задание: скопировать в список L2 за каждым вхождением заданного элемента все элементы списка L1. удалить из списка L1 все...

Преобразование массива один в другой glvertex
Добрый день! Возник вопрос, который я пока не смогла решить. Подгружаю в программу трехмерный куб в формате .obj, вершинами которого...

Присваиваю один цвет компоненту, а вижу другой
Привет, Мир! #F54021 - код транспортно-оранжевого цвета (R245 G64 B33) Присваиваю этот цвет компоненту и видим синий. ...

Как вложить один исполняемый файл в другой?
Привет всем. Пишу программку для копирования и специфической обработки файлов БД, одной из функций - создание rar архива. Написал так что...

Дан массив из 10 элементов.Перенести в один другой массив четные числа.Затем перенести в еще один другой масси
Дан массив из 10 элементов.Перенести в один другой массив четные числа.Затем перенести в еще один другой массив нечетные числа.Помогите с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru