Тема: Массивы

Добрый день!
Помогите начинающему программисту.
Мне необходимо из прямоугольного массива сделать несколько одномерных массивов по столбцам.

Re: Массивы

Dim myarr(3, 3) As Integer
Dim i As Integer, j As Integer
For i = 0 To 3
 For j = 0 To 3
  myarr(i, j) = i + j 'заполнение исходного массива
 Next j
Next i
Dim myarr0(3) As Integer, myarr1(3) As Integer, myarr2(3) As Integer, myarr3(3) As Integer
For i = 0 To 3
 myarr0(i) = myarr(i, 0)
 myarr1(i) = myarr(i, 1)
 myarr2(i) = myarr(i, 2)
 myarr3(i) = myarr(i, 3)
Next i

Re: Массивы

А в более общей форме, когда заранее неизвестно какой будет величина массива?
Вы прописали кол-во столбцов константой , а можно их описать переменной?
Спасибо за ответ

Re: Массивы

Переменной описать их (кол-во столбцов) безусловно можно, задать динамический массив
Dim myarr(), потом его переопределить
reDim myarr(x,y), цикл тот же сделать вместо For i = 0 To 3 -> For i = 0 To ubound(myarr,1)
Но - как тогда заранее задать (определить) те массивы, которые должны содержать столбцы, если их число заранее неизвестно? Единственный вариант, который вижу я, - создать очередной динамический массив типа Variant, каждый член которого будет содержать этот самый "столбец" из первоначального массива. Но по сути это получится "переливание из пустого в порожнее".

Re: Массивы

Вот и периливаем пока, что без результата
Спасибо за ответ

Re: Массивы

//Все переливать закончили. Все работает. Желающие могут убедиться.
#include <iostream>
using namespace std;
int **creat(int &n, int &m)
{cout <<"n="; cin>>n; cout<<"m="; cin>>m;
int**mas=new int*[n];
for (int i=0; i<n; ++i) mas[i]=new int [m];
for (int i=0; i<n; ++i)
for (int j=0; j<m; j++) {cout<<"mas["<<i<<"]["<<j<<"]="; cin>>mas[i][j];}
return mas;}
int main()
{int n, m;
int summa =0;
int**a=creat(n,m);
int *b=new int[m];
for (int j=0; j<m; ++j)
{int max=a[0][j];
for (int i=0; i<n; ++i)
if (a[i][j]>=max) {max=a[i][j];b[j]=max;}}
for (int j=0; j<m; ++j)       
{cout<<"Максимальное число в столбце("<<j<<")="<<b[j]<<endl; summa+=b[j];}   
cout<<"Норма матрицы="<<summa;
for(int j=0; j<m; j++) delete [] b ;
for(int i=0; i<n; i++) delete [] a [i];
delete [] a;
return 0;}

Re: Массивы

Vladimir, рад за вас! Единственное, хотел бы уточнить, а что же это за версия VBA воплотилась в вашем коде? Честно скажу, отстал я от этой жизни...

Re: Массивы

Похоже на C++
Короче китайская грамота

Re: Массивы

С++.