Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.65/55: Рейтинг темы: голосов - 55, средняя оценка - 4.65
ниначмуроФ
851 / 535 / 110
Регистрация: 12.10.2009
Сообщений: 1,913
1

Создать динамическую матрицу вещественных чисел

04.02.2010, 15:35. Показов 11343. Ответов 21
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
здрасти, помогите создать двумерный динамический массив вещест. чисел
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.02.2010, 15:35
Ответы с готовыми решениями:

Вывести матрицу вещественных чисел
Помогите пожалуйста , Вывести матрицу вещественных чисел 1.1 1.3 1.5 1.7 1.9 ...

Создать файл, состоящий из п вещественных чисел. Найти сумму всех положительных чисел данного файла
:-[

Создать динамическую матрицу, и посчитать сумму чисел, лежащих не по краям матрицы
Ввести с клавиатуры одно или два (в зависимости от варианта) целых числа N и M. Создать...

Создать динамическую матрицу и посчитать количество отрицательных чисел, лежащих в правой части матрицы
Ввести с клавиатуры одно или два(в зависимости от варианта)целых чисел N и M.Создать динамический...

21
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 это номер строки
0
32 / 32 / 16
Регистрация: 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++
2
ниначмуроФ
851 / 535 / 110
Регистрация: 12.10.2009
Сообщений: 1,913
04.02.2010, 18:46  [ТС] 4
Gvinpin, мне тоже интересно))
0
1 / 1 / 0
Регистрация: 22.11.2009
Сообщений: 33
05.02.2010, 17:35 5
SerЁga, это ведь статический массив, а хотелось бы динамический...
Поможет кто нибудь?
0
12 / 12 / 0
Регистрация: 04.02.2010
Сообщений: 45
05.02.2010, 17:38 6
Да какой же он статический?! Не видишь двух звездочек?!?!
0
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];
          }
}
0
257 / 144 / 18
Регистрация: 27.12.2009
Сообщений: 909
05.02.2010, 17:43 8
не звездочки тут главное а функция NEW которая собственно выделяет память под массив
0
12 / 12 / 0
Регистрация: 04.02.2010
Сообщений: 45
05.02.2010, 17:46 9
Цитата Сообщение от cibertronic Посмотреть сообщение
не звездочки тут главное а функция NEW которая собственно выделяет память под массив
Ну в принципе согласен.
0
257 / 144 / 18
Регистрация: 27.12.2009
Сообщений: 909
05.02.2010, 17:46 10
да, и по окончании работы с таким массивом необходимо освобождать память функцией delete mass[i][j]
0
1 / 1 / 0
Регистрация: 22.11.2009
Сообщений: 33
05.02.2010, 17:47 11
ага. то есть сначала создается массив потом он заполняется массивами через for. А функция new выделяет неограниченную память?
0
257 / 144 / 18
Регистрация: 27.12.2009
Сообщений: 909
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 строку можешь убрать получится практически то что надо
1
1 / 1 / 0
Регистрация: 22.11.2009
Сообщений: 33
05.02.2010, 17:57 13
cibertronic, то есть определяет сколько простых чисел в двухмерном массиве.Вроде понятно
кроме объвления
C++
1
2
int **mas2;
mas2=new int *[n];
в звездочках теряюсь... Это синтаксис??

Сколько звездочек столькомерный массив???
0
257 / 144 / 18
Регистрация: 27.12.2009
Сообщений: 909
05.02.2010, 18:06 14
тут определяет сколько простых чисел фрагмент с 29 по 38 строку
int задает тип чисел, и ограничевает память так сказать.....эммм... а n и m уже задает сколько столбцов в массиве истрок соответственно. а

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

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

А можешь сразу пояснить randomize(); и random(25);
0
257 / 144 / 18
Регистрация: 27.12.2009
Сообщений: 909
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, можно задавать и больше....
1
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]
0
257 / 144 / 18
Регистрация: 27.12.2009
Сообщений: 909
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; память высвобождается
1
1 / 1 / 0
Регистрация: 22.11.2009
Сообщений: 33
05.02.2010, 18:39 19
тут получаются что все ячейки массива имеют значение 10 и 13.15 или как?
0
257 / 144 / 18
Регистрация: 27.12.2009
Сообщений: 909
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);
тут инициализация происходит спомощью рандом
0
05.02.2010, 18:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.02.2010, 18:43
Помогаю со студенческими работами здесь

Создать в StringGrid матрицу из вещественных чисел
Помогите пожалуйста написать программу : создать матрицу(в StringGrid) из вещественных чисел 6*6,...

Создать динамическую матрицу
Задали написать прогу: &quot;Написать программу, которая создает динамическую матрицу размерности,...

Как создать динамическую матрицу?
Здравствуйте программисты! Дали задание по матрицам, дело в том,что их нужно создать динамически....

Как создать динамическую матрицу ?
Есть три таблицы хочу создать из них матрицу или три вектора но в матричной записи .


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

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