Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
kate11
0 / 0 / 0
Регистрация: 07.10.2011
Сообщений: 33
#1

Массив, который заполняется по правилу - C++

15.04.2012, 19:35. Просмотров 589. Ответов 12
Метки нет (Все метки)

Привет всем, помогите решить задачу, вот есть у меня массив, который заполняется по следующему правилу:
C++
1
2
3
4
5
6
 for( int y=0; y<100; y++ ) {
    uchar* mas = (uchar*) (image->imageData + y * image->widthStep);
    for( int x=0; x<100; x++ ) {
        printf(" mas = %d", mas[x]);
                        }
                    }
Заполняется он как двумерный, но в итоге получаем одномерный я правильно поняла? вопрос как обратится к нему как к двумерному?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2012, 19:35     Массив, который заполняется по правилу
Посмотрите здесь:

Не заполняется массив - C++
Здравствуйте! Подскажите, пожалуйста, почему при создании нового массива, размерность создается, а сам массив не заполняется. Код: ...

Не заполняется массив - C++
Здравствуйте, не передается заполненный массив и не понимаю в чем проблема: N = 15 void Print(int *a, int n) { for (int...

Не заполняется массив - C++
#include &quot;stdafx.h&quot; #include &quot;iostream&quot; using namespace std; int m, n, a, b, c; int mas; int masd; int _tmain(int argc,...

Не заполняется динамический массив - C++
Со статическим массивом всё работает как надо,а в динамическом заполняется только первый элемент. Может кто подскажет где ошибка? Заранее...

Не заполняется массив указателей - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;locale.h&gt; #include &lt;time.h&gt; #include &lt;iomanip&gt; using namespace std; struct...

не правильно заполняется массив - C++
#include&lt;iostream&gt; #include&lt;fstream&gt; using namespace std; int main() { int i,k,n,m,j,l; k = 0; l = 2;

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
hepr
61 / 33 / 5
Регистрация: 21.10.2010
Сообщений: 539
15.04.2012, 19:38     Массив, который заполняется по правилу #2
Объекты какого класса возвращают поля imageData и widthStep объекта image?
zss
Модератор
Эксперт С++
6281 / 5884 / 1904
Регистрация: 18.12.2011
Сообщений: 15,093
Завершенные тесты: 1
15.04.2012, 19:47     Массив, который заполняется по правилу #3
обозначим
mas=image->imageData - это адрес начала массива.
L=image->widthStep - длина каждой строки.
тогда (x,y) элемент определяется как
mas[y*L+x].
kate11
0 / 0 / 0
Регистрация: 07.10.2011
Сообщений: 33
15.04.2012, 20:36  [ТС]     Массив, который заполняется по правилу #4
Цитата Сообщение от zss Посмотреть сообщение
обозначим
mas=image->imageData - это адрес начала массива.
L=image->widthStep - длина каждой строки.
тогда (x,y) элемент определяется как
mas[y*L+x].
Я вот так изменила, правильно?
C++
1
2
3
4
5
6
7
for( int y=0; y<100; y++ ) {
            int L = image->widthStep;
                uchar* mas = (uchar*) (image->imageData + y * L);
                    for( int x=0; x<100; x++ ) {
                            printf(" mas = %d", mas[y*L + x]);
                        }
                    }
А можно данный массив привести к виду mas[x][y]?
zss
Модератор
Эксперт С++
6281 / 5884 / 1904
Регистрация: 18.12.2011
Сообщений: 15,093
Завершенные тесты: 1
15.04.2012, 20:42     Массив, который заполняется по правилу #5
C++
1
2
3
4
5
6
7
8
9
uchar* mas = (uchar*)image->imageData;
int L = image->widthStep;
for( int y=0; y<100; y++ ) 
{
     for( int x=0; x<100; x++ ) 
     {
            printf(" mas = %d", mas[y*L + x]);
      }
 }
mas[y][x] сделать нельзя, т.к. тогда mas - это (uchar**) .
kate11
0 / 0 / 0
Регистрация: 07.10.2011
Сообщений: 33
15.04.2012, 21:06  [ТС]     Массив, который заполняется по правилу #6
Цитата Сообщение от zss Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
uchar* mas = (uchar*)image->imageData;
int L = image->widthStep;
for( int y=0; y<100; y++ ) 
{
     for( int x=0; x<100; x++ ) 
     {
            printf(" mas = %d", mas[y*L + x]);
      }
 }
mas[y][x] сделать нельзя, т.к. тогда mas - это (uchar**) .
Вот я не совсем поняла - данный массив двумерный? mas[y*L + x]? не могли бы вы помочь запрограммировать эту формулу, а то я не пойму как с этим массивом работать, никогда раньше дел с такими массивами не имела, так хоть пример будет какой-то. Sigma произвольный коээфициент, к примеру 0.5, ну а x,y это элементы этого злосчастного массива.
Изображения
 
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
15.04.2012, 21:25     Массив, который заполняется по правилу #7
Цитата Сообщение от kate11 Посмотреть сообщение
Вот я не совсем поняла - данный массив двумерный? mas[y*L + x]? не могли бы вы помочь запрограммировать эту формулу, а то я не пойму как с этим массивом работать, никогда раньше дел с такими массивами не имела, так хоть пример будет какой-то. Sigma произвольный коээфициент, к примеру 0.5, ну а x,y это элементы этого злосчастного массива.
C++
1
2
3
4
double G(int x, int y)
{
 return exp(-(x*x+y*y)/(2*sigma*sigma))/(2*M_PI*sigma*sigma);
}
Но непонятно, что за х и у в шапке...
kate11
0 / 0 / 0
Регистрация: 07.10.2011
Сообщений: 33
15.04.2012, 21:30  [ТС]     Массив, который заполняется по правилу #8
Цитата Сообщение от Nekto Посмотреть сообщение
C++
1
2
3
4
double G(int x, int y)
{
 return exp(-(x*x+y*y)/(2*sigma*sigma))/(2*M_PI*sigma*sigma);
}
Но непонятно, что за х и у в шапке...
Нет, так я понимаю как сделать, я про массив говорила, ну т.е. х, у берется из mas[y*L + x], а он может быть к примеру 20x20.
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
15.04.2012, 22:37     Массив, который заполняется по правилу #9
Цитата Сообщение от kate11 Посмотреть сообщение
Нет, так я понимаю как сделать, я про массив говорила, ну т.е. х, у берется из mas[y*L + x], а он может быть к примеру 20x20.
x, y - это 2 разных числа. Какой индекс элемента для каждого из них?
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
15.04.2012, 22:43     Массив, который заполняется по правилу #10
Цитата Сообщение от Nekto Посмотреть сообщение
x, y - это 2 разных числа. Какой индекс элемента для каждого из них?
Есть подозрение, что здесь не массив, а что-то вроде
C++
1
2
#include <map>
std::map<double x, double y> map;
должно быть...
kate11
0 / 0 / 0
Регистрация: 07.10.2011
Сообщений: 33
16.04.2012, 00:10  [ТС]     Массив, который заполняется по правилу #11
Цитата Сообщение от zss Посмотреть сообщение
тогда (x,y) элемент определяется как
mas[y*L+x].
Вроде же писали про это. Еще лучше чтобы я с этим не заморачивалась, попробовать как-то сделать массив вида mas[x][y], с ним как-то проще работать...
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
16.04.2012, 00:47     Массив, который заполняется по правилу #12
Цитата Сообщение от kate11 Посмотреть сообщение
Вроде же писали про это. Еще лучше чтобы я с этим не заморачивалась, попробовать как-то сделать массив вида mas[x][y], с ним как-то проще работать...
ну так создай массив размерности нужной и засунь туда нужные элементы.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.04.2012, 21:15     Массив, который заполняется по правилу
Еще ссылки по теме:

Массив не заполняется значениями - C++
Проблема: почему программа не запоминает массив b? int main(){ int n=10; for (int i=0; i&lt;n; i++) { for...

Почему не заполняется массив vector? - C++
Здравствуйте! Не могу понять, почему не заполняется массив vector.. Он в классе объявлен типа public. #include &lt;iostream&gt; ...

Не заполняется двумерный массив char - C++
Не заполняется массив char числами. Проблема более хороша на скриншотах (обратите внимание на значение arr) P.S. Если что, я хочу этим...

Массив заполняется случайными (не теми) элементами - C++
Доброго времени суток! Определенными циклами задаются значения массива. Циклы исправны (проверял в Паскале). Проблема в том, что в...


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

Или воспользуйтесь поиском по форуму:
zss
Модератор
Эксперт С++
6281 / 5884 / 1904
Регистрация: 18.12.2011
Сообщений: 15,093
Завершенные тесты: 1
16.04.2012, 21:15     Массив, который заполняется по правилу #13
Не очень понятно, зачем это нужно,
но массив можно заполнить, например, так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void FillMass(double* mas,int L,int M,double x0,double stepx,double y0,double stepy)
{
      mass=new double[M*N];
      double x=x0,y=y0;
     for(int i=0;i<M;i++)
     {
         for(int j=0;J<L,j++)
         {
            mas[i*L+j]=exp(-(x*x+y*y)/(2*sigma*sigma))/(2*M_PI*sigma*sigma);
            x+=stepx;
         }
        y+=stepy;
     }
}
Yandex
Объявления
16.04.2012, 21:15     Массив, который заполняется по правилу
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru