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

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

22.10.2015, 16:25. Показов 1128. Ответов 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)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.10.2015, 16:25
Ответы с готовыми решениями:

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

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

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

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

6
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
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
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
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
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
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
24.10.2015, 05:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.10.2015, 05:29
Помогаю со студенческими работами здесь

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

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

Работа с массивом
подскажите как можно это реализовать: даны целые числа A1..A50, нужно найти сумму тех чисел...

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru