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

Создать Массив - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
722 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
04.02.2010, 15:35     Создать Массив #1
здрасти, помогите создать двумерный динамический массив вещест. чисел
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2010, 15:35     Создать Массив
Посмотрите здесь:

C++ Нужно создать статический массив строк как статический массив указателей на строки. Условние ниже -->
опп класс и массив (создать массив указателей по выборке животных, участвующих в забеге) C++
C++ Дан массив А(n). Создать новый массив, элементами которого являются произведение A(i) на максимальный элемент массива A.
Создать функцию, в качестве параметра получает массив и количество его элементов, возвращает массив, упорядоченный по возрастанию C++
Создать третий массив, в котором собрать элементы массива A, которые не включаются в массив B C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Gvinpin
1 / 1 / 0
Регистрация: 22.11.2009
Сообщений: 33
04.02.2010, 18:38     Создать Массив #2
C++
1
2
3
4
#include <vector>
void main () {
vector <vector <double>> vect;
}
где vect название массива
если не так подправьте. кстати интерсно как туда добавлять числа?

не так?
C++
1
2
 
vect[k].push_back[i];
где i число добавляемое, а k это номер строки
SerЁga
32 / 32 / 4
Регистрация: 18.08.2009
Сообщений: 93
04.02.2010, 18:40     Создать Массив #3
Создание матрицы float размером 5 на 5.
C++
1
2
3
4
5
6
7
8
9
10
11
         void main()
{ 
         int n=5;
      int m=5;
      float** matrix;
      matrix=new float* [n];
      for(int i=0;i<n;i++)
      {
          matrix[i]=new float[m];
      }
}
Язык C++
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
722 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
04.02.2010, 18:46  [ТС]     Создать Массив #4
Gvinpin, мне тоже интересно))
Gvinpin
1 / 1 / 0
Регистрация: 22.11.2009
Сообщений: 33
05.02.2010, 17:35     Создать Массив #5
SerЁga, это ведь статический массив, а хотелось бы динамический...
Поможет кто нибудь?
JKeeJ1e30
12 / 12 / 0
Регистрация: 04.02.2010
Сообщений: 45
05.02.2010, 17:38     Создать Массив #6
Да какой же он статический?! Не видишь двух звездочек?!?!
Gvinpin
1 / 1 / 0
Регистрация: 22.11.2009
Сообщений: 33
05.02.2010, 17:43     Создать Массив #7
блин я не понял... прокомментируйте это пожалуйста
C++
1
2
3
4
5
6
7
8
9
10
11
         void main()
{ 
         int n=5;
          int m=5;
          float** matrix;
          matrix=new float* [n];
          for(int i=0;i<n;i++)
          {
                  matrix[i]=new float[m];
          }
}
cibertronic
 Аватар для cibertronic
255 / 142 / 13
Регистрация: 27.12.2009
Сообщений: 893
05.02.2010, 17:43     Создать Массив #8
не звездочки тут главное а функция NEW которая собственно выделяет память под массив
JKeeJ1e30
12 / 12 / 0
Регистрация: 04.02.2010
Сообщений: 45
05.02.2010, 17:46     Создать Массив #9
Цитата Сообщение от cibertronic Посмотреть сообщение
не звездочки тут главное а функция NEW которая собственно выделяет память под массив
Ну в принципе согласен.
cibertronic
 Аватар для cibertronic
255 / 142 / 13
Регистрация: 27.12.2009
Сообщений: 893
05.02.2010, 17:46     Создать Массив #10
да, и по окончании работы с таким массивом необходимо освобождать память функцией delete mass[i][j]
Gvinpin
1 / 1 / 0
Регистрация: 22.11.2009
Сообщений: 33
05.02.2010, 17:47     Создать Массив #11
ага. то есть сначала создается массив потом он заполняется массивами через for. А функция new выделяет неограниченную память?
cibertronic
 Аватар для cibertronic
255 / 142 / 13
Регистрация: 27.12.2009
Сообщений: 893
05.02.2010, 17:57     Создать Массив #12
вот например прога для нахождения количества простых чисел среди елементов массива, построенная на динамическом двумерном массиве
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
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
 
void main()
{
int n,m;
printf("\n vvedite koli4estvo strok i stolbcov v matrice ");
scanf("%d%d",&n,&m);
int j,i;
int **mas2;
mas2=new int *[n];
randomize();
for(i=0;i<n;i++)
{
mas2[i]=new int[m];
for(j=0;j<m;j++)
mas2[i][j]=random(25);
}
puts("\n vyvod elementov dvumernogo massiva\n");
for(i=0;i<n;i++)
{
printf("\n\n");
for(j=0;j<m;j++)
printf("%4d",mas2[i][j]);
}
// îïðåäåëÿåì êîë-âî ïðîñòûõ ÷èñåë
int col=0;
for(i=0;i<n;i++)
        for(j=0;j<m;j++)
                {
                        int fl=1;
                        if(mas2[i][j]<2){fl=0; }
                        for(int y=2; y<=sqrt(mas2[i][j]) && fl; y++)
                if(mas2[i][j]%y==0){fl=0;}
                                if(fl){col++;}
                }
printf("\nKol-vo prostih chisel: %d\n", col);
for(i=0;i<n;i++)
delete mas2[i];
delete []mas2;
getch();
}
Добавлено через 1 минуту
не неограниченную а в пределах типа а именно float


Добавлено через 5 минут
c 28 по 39 строку можешь убрать получится практически то что надо
Gvinpin
1 / 1 / 0
Регистрация: 22.11.2009
Сообщений: 33
05.02.2010, 17:57     Создать Массив #13
cibertronic, то есть определяет сколько простых чисел в двухмерном массиве.Вроде понятно
кроме объвления
C++
1
2
int **mas2;
mas2=new int *[n];
в звездочках теряюсь... Это синтаксис??

Сколько звездочек столькомерный массив???
cibertronic
 Аватар для cibertronic
255 / 142 / 13
Регистрация: 27.12.2009
Сообщений: 893
05.02.2010, 18:06     Создать Массив #14
тут определяет сколько простых чисел фрагмент с 29 по 38 строку
int задает тип чисел, и ограничевает память так сказать.....эммм... а n и m уже задает сколько столбцов в массиве истрок соответственно. а

Добавлено через 2 минуты
нет, звездочка означает указатель на одномерный массив, а в моем коде выполнен двумерный массив в виде указателей на указатели, то есть как одномерный массив массивов
Gvinpin
1 / 1 / 0
Регистрация: 22.11.2009
Сообщений: 33
05.02.2010, 18:08     Создать Массив #15
то есть в принципе можно создать большой массив, если не int m,n а например double m,n
а звездочки синтаксис или за что то отвечают?

прошу извинения я новичек. и мне всего 15 лет))

А можешь сразу пояснить randomize(); и random(25);
cibertronic
 Аватар для cibertronic
255 / 142 / 13
Регистрация: 27.12.2009
Сообщений: 893
05.02.2010, 18:18     Создать Массив #16
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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
void main()
{
int n;
printf("\n vvedite koli4estvo elementov v massive ");
scanf("%d",&n);
int *mas1,*ptr,i;
mas1=new int[n];
int *mas2=new int[n*n];
randomize();
for(i=0,ptr=mas2;i<n*n;i++,ptr++)
*ptr=random(25);
printf("\n\n vvedite elementy odnomernogo massiva ");
for(i=0;i<n;i++)
scanf("%d",&mas1[i]);
for(i=0;i<n;i++)
printf("%d\t",mas1[i]);
puts("\n vyvod elementov dvumernogo massiva\n");
for(i=0,ptr=mas2;i<n*n;i++,ptr++)
{
if(i%n==0)
printf("\n\n");
printf("%d\t",*ptr);
}
for(i=0,ptr=mas2;i<n;i++,ptr=ptr+n+1)
*ptr=mas1[i];
printf("\n obrabotannyj massiv\n");
for(i=0,ptr=mas2;i<n*n;i++,ptr++)
{
if(i%n==0)
printf("\n\n");
printf("%d\t",*ptr);
}
delete []mas1;
delete []mas2;
getch();
}
в этой программе массив выполнен тоже динамический, но иначе.
в этой проге элементы главной диагонали матрицы заменяются елементами одномерного динамического массива

Добавлено через 3 минуты
randomize() это функция генерирующая случауные числа, а random(25) это заполнение случайными числами от 0 до 25, можно задавать и больше....
Gvinpin
1 / 1 / 0
Регистрация: 22.11.2009
Сообщений: 33
05.02.2010, 18:28     Создать Массив #17
Вот это тяжелая программа.. разрывается мозг.
В общем создать динамический двухмерный массив можно так?
C++
1
2
3
4
5
6
float **mas1;
mas1 = new float *[n];
for(i=0;i<n;i++)
{
mas1[i]=new int[m];
}
где н это кол-во столбцов, а м это строк
Верно?
обращаться к ячейке массива надо
mas1[i][j]
cibertronic
 Аватар для cibertronic
255 / 142 / 13
Регистрация: 27.12.2009
Сообщений: 893
05.02.2010, 18:31     Создать Массив #18
для управления динамической памятью в программах си используются указатели (т.е. *), динамическая память рассматривается как стек, называемый кучей, для выделения памяти под любую переменную используется операция new.

указатель=new имя_типа инициализатор

указатель должен ссылатьсяна тот же тип что имя_типа в операции new.
НАПРИМЕР:
int *ptr;
float *ptr1;
ptr=new int;
*ptr=10;
ptr1=new float(13.15);
в первом случае new выбелит 2 байта памяти и адрес начала выделенного участка присваивается указателю ptr,следующий оператор присваивает и инициализирует его числом 10.
во втором случае new выделит 4 байта и присвоит указателю ptr1 и инициализируется числом 13.15
с помощью
delete ptr;
delete ptr1; память высвобождается
Gvinpin
1 / 1 / 0
Регистрация: 22.11.2009
Сообщений: 33
05.02.2010, 18:39     Создать Массив #19
тут получаются что все ячейки массива имеют значение 10 и 13.15 или как?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.02.2010, 18:43     Создать Массив
Еще ссылки по теме:

Дан целочисленный массив А[п], среди элементов есть одинаковые. Создать массив из различных элементов А[п] C++
C++ Массив и память. Как создать динамический массив?
Как создать динамический массив типа string? Как создать класс такого массива? C++

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

Или воспользуйтесь поиском по форуму:
cibertronic
 Аватар для cibertronic
255 / 142 / 13
Регистрация: 27.12.2009
Сообщений: 893
05.02.2010, 18:43     Создать Массив #20
если необходимо воспользоваться индексами. имяодномерного массива является указателем на первый элемент массива => что двымерный массив можно рассматривать как одномерный массив указателей



все это из моей методички по си

Добавлено через 1 минуту
Цитата Сообщение от cibertronic Посмотреть сообщение
int *ptr;
float *ptr1;
ptr=new int;
*ptr=10;
ptr1=new float(13.15);
Цитата Сообщение от cibertronic Посмотреть сообщение
кучей, для выделения памяти под любую переменную
это просто переменная

Добавлено через 43 секунды
не обязательно именно этими числами инициализировать память

Добавлено через 1 минуту
Цитата Сообщение от cibertronic Посмотреть сообщение
for(i=0,ptr=mas2;i<n*n;i++,ptr++)
*ptr=random(25);
тут инициализация происходит спомощью рандом
Yandex
Объявления
05.02.2010, 18:43     Создать Массив
Ответ Создать тему
Опции темы

Текущее время: 04:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru