Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
2 / 2 / 0
Регистрация: 13.07.2012
Сообщений: 38
1

Работа с массивом поэлементно

22.10.2015, 16:25. Показов 1139. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Я хочу перевести с языка MQL4 в С++ такое действие с массивом. Есть известный массив столбец xx1 константа mm=40 создаю новый через суммы. пишу следующее.
C++ Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
for ( int i=1; i <= mm; i++)
{
    double yy=0;
    for (int ii=0;ii<=121-mm*2;ii++)
    {
        if (i=mm)
            yy=yy+(xx1[ii]+xx1[mm*2+ii])*(xx1[mm+ii]);
        else
            yy=yy+(xx1[ii]+xx1[mm*2+ii])*(xx1[ii+i]+xx1[mm*2-i+ii]);
    }
    B[i]=yy;
}
Где я неправильно пишу.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.10.2015, 16:25
Ответы с готовыми решениями:

Работа с массивом
Здравствуйте, недавно начал учиться на шарпе. Задача простенькая но вызывает у меня проблему using System; using...

Работа с массивом
Задание: Создать массив из 15 элементов, заполненный случайными числами в диапазоне от -100 до 100. Разработать методы: расчета...

Работа с массивом
Уважаемые спецыалисты! помогите с решением в среде MathCad! В массиве a1,a2,...,a20 заменить единицей все отрицательные элементы,...

6
19410 / 10029 / 2443
Регистрация: 30.01.2014
Сообщений: 17,684
22.10.2015, 18:40 2
Цитата Сообщение от elisseev2000 Посмотреть сообщение
if (i=mm)
C++ Скопировано
1
if(i == mm)
Для начала.

И, если что, индексация массивов в С++ с нуля начинается.
1
2 / 2 / 0
Регистрация: 13.07.2012
Сообщений: 38
23.10.2015, 12:40  [ТС] 3
да это так. а по структуре?

Добавлено через 17 часов 42 минуты
Я все исправил, но все равно при такой записи у меня не возвращается значения массива В. Почему так происходит. Может при присвоении значения уу через элемент массива происходит сбой. Помогите плз
0
19410 / 10029 / 2443
Регистрация: 30.01.2014
Сообщений: 17,684
23.10.2015, 13:14 4
Цитата Сообщение от elisseev2000 Посмотреть сообщение
Я все исправил
Версию кода полную покажи, угадать никто не сможет что там у тебя...
1
2 / 2 / 0
Регистрация: 13.07.2012
Сообщений: 38
23.10.2015, 18:38  [ТС] 5
вот даю функцию. есть входящий массив длиной 121
C++ Скопировано
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#define WIN32_LEAN_AND_MEAN
#include "stdafx.h"
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
#define MT4_EXPFUNC __declspec(dllexport)
#pragma pack(push,1)
#pragma pack(pop)
 
MT4_EXPFUNC double __stdcall functionW1( double * Buffer1)
{
    double xx[121], xx1[121];
    double C2=0.0;
    double C1=0.0;
 
    for (int i=0; i<=120; i=i+1)
    {
        xx[i]=Buffer1[i];
        C2=C2+*(xx+i);
        C1=C1+xx[i]*i;
    }
    double D1=121.0*C1-7260.0*C2;
    double D2=583220.0*C2-7260.0*C1;
    double Af=D1/17862020.0;
    double Bf=D2/17862020;
    for (int i2=0; i2<=120; i2++)
    {
        xx1[i2]=xx[i2]-Af*i2-Bf;
    }
    double A[40][40], B[40];
    for (int mm=1; mm<=40; mm++) //////////////////////////////////////////////
    {
        for (int i=0; i<=mm-1; i++)
        {
            for (int j=0; j<=mm-1; j++)
            {
                double kk=0.0;
 
                for (int ii=0; ii<=122-2*mm; ii++)
                {
                    if ((i==mm)&&(j==mm))
                    {
                        kk=kk+xx1[mm+ii-1]*xx1[mm+ii-1];
                    }
                    else
                    {
                        if (j==mm)
                        {
                            kk=kk+(xx1[ii+i]+xx1[ii+2*mm-i-2])*xx1[mm+ii-1];
                        }
                        else
                        {
                            if (i==mm)
                            {
                                kk=kk+(xx1[ii+j]+xx1[ii+2*mm-j-2])*xx1[mm+ii-1];
                            }
                            else
                            {
                                kk=kk+(xx1[ii+i]+xx1[ii+2*mm-i-2])*(xx1[ii+j]+xx1[ii+2*mm-j-2]);
                            }
                        }
                    }
                }
                A[i][j]=kk;
            }
        }
 
        for ( int i=0; i<=mm-1; i++)
        {
            double yy=0.0;
            for (int ii=0; ii<=122-mm*2; ii++)
            {
                if (i==mm)
                    yy=yy+(xx1[ii]+xx1[mm*2+ii-2])*(xx1[mm+ii-1]);
                else
                    yy=yy+(xx1[ii]+xx1[mm*2+ii-2])*(xx1[ii+i]+xx1[mm*2-i+ii-2]);
            }
            B[i]=yy;
        }
    }
 
    return  (0);
}
Добавлено через 5 минут
пытался и так и так не работает
C2=C2+*(xx+i);
C1=C1+xx[i]*i;
ничего не работает хотя массив есть внутри и я его прочитать могу. С1 и С2 это суммы массива
0
19410 / 10029 / 2443
Регистрация: 30.01.2014
Сообщений: 17,684
23.10.2015, 22:43 6
Лучший ответ Сообщение было отмечено elisseev2000 как решение

Решение

Цитата Сообщение от elisseev2000 Посмотреть сообщение
не работает
Что значит "не работает"? Ошибка выполнения, или данные неверны на выходе?
Вообще очень хотелось бы получить подробное описание задачи, которую необходимо решить.

Сумма элементов массива может быть найдена так:
C++ Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
double functionW1(double const * buffer, size_t len)
{
    //........
 
    double C1 = 0.0;
    for(size_t i = 0; i < len; i++)
    {
        C1 += buffer[i];
    }
 
    //............
}

Пока что вижу еще ошибку.
Цитата Сообщение от elisseev2000 Посмотреть сообщение
for (int mm=1; mm<=40; mm++)
Индексы в С++ - с нуля.
C++ Скопировано
1
for (int mm=0; mm<40; mm++)
1
2 / 2 / 0
Регистрация: 13.07.2012
Сообщений: 38
24.10.2015, 05:29  [ТС] 7
Ошибку я нашел. Если заполнить массив в ручную например xx[]={1,2,34.67.........}, то все работает. Если массив заводить из вне , как это я делаю из mql4 начинаются фокусы, а именно на выходе любое значение (например сумма) или массивы принимают Empty Value (647894645356.0000000000). Как это починить надо думать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.10.2015, 05:29
Помогаю со студенческими работами здесь

Работа с массивом
Добрый день! Есть вот такой массив Array ( =&gt; Array ( =&gt; Array ( ...

Работа с массивом
Я новичок в юнити. Мне задали задачу- создать массив с разными числами(положительными и отрицательными), затем нужно вывести в консоль...

Работа с массивом
В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1) Номер максимального по модулю элемента массива 2) Сумму...

Работа с массивом
подскажите как можно это реализовать: даны целые числа A1..A50, нужно найти сумму тех чисел которые удовлетворяют условию ABS(Ai)&lt;i*i

Работа с массивом
Задан целочисленный массив Х из 20 элементов, среди которых есть повторяющиеся. Определить наименьший и наибольший элементы массива. Если...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Простая нейросеть на КуМир: Создание и обучение
EggHead 16.03.2025
Искусственные нейронные сети — удивительная технология, позволяющая компьютерам имитировать работу человеческого мозга. Если вы хотя бы немного интересуетесь современными технологиями, то наверняка. . .
Исполнитель Кузнечик в КуМир: Решение задач
EggHead 16.03.2025
Среди множества исполнителей в системе КуМир особое место занимает Кузнечик — простой, но невероятно полезный виртуальный персонаж, который перемещается по числовой прямой, выполняя ваши команды. На. . .
Исполнитель Водолей в КуМир: Решение задач
EggHead 16.03.2025
Разработка алгоритмического мышления — одна из ключевых задач для начинающих программистов, и система КуМир предлагает отличный способ погрузиться в этот процесс. Среди множества исполнителей в этой. . .
Исполнитель Чертежник в КуМир: Решение задач
EggHead 16.03.2025
Представьте, что вы можете рисовать на бесконечной координатной плоскости, перемещая точку, которая оставляет след. По вашей команде она может поднять перо и двигаться, не оставляя следа, или. . .
Исполнитель Робот в КуМир: Решение задач
EggHead 16.03.2025
КуМир (Комплект Учебных МИРов) — это учебная среда программирования, разработанная специально для обучения базовым концепциям алгоритмизации. Её главная фишка — использование русскоязычного. . .
Исполнитель Черепаха в КуМир: Решение задач
EggHead 16.03.2025
Представьте, что вы впервые учитесь программировать, а перед вами стоит задача заставить маленькую виртуальную черепашку рисовать на экране. Звучит забавно? Эта идея зародилась ещё в 1967 году, когда. . .
Конвейеры данных с Apache Kafka
Javaican 16.03.2025
В мире, где данные стали новой нефтью, Apache Kafka зарекомендовал себя как мощный инструмент для построения надежных и масштабируемых конвейеров данных. Созданный изначально командой LinkedIn в 2011. . .
Deno против Node.js: Будущее JavaScript рантайма
run.dev 16.03.2025
За последнее десятилетие Node. js стал абсолютным лидером среди JavaScript-рантаймов и фактическим стандартом для серверной разработки на JavaScript. Но в 2018 году тот же разработчик, который создал. . .
SwiftUI или UIKit - что выбрать для нового приложения iOS?
mobDevWorks 16.03.2025
Когда Apple представила SwiftUI на WWDC 2019, многим показалось, что дни UIKit сочтены. Новый декларативный фреймворк предлагал радикально иной подход к разработке интерфейсов. Вместо кропотливого. . .
Docker: Руководство для начинающих по созданию первого приложения
Mr. Docker 16.03.2025
Docker — это платформа, которая упаковывает ваше приложение и все его зависимости в стандартизированные блоки, называемые контейнерами. Эти контейнеры изолированы друг от друга и от основной системы,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер