С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
PointsEqual
ниначмуроФ
837 / 521 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
#1

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

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

здрасти, помогите создать двумерный динамический массив вещест. чисел
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2010, 15:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создать динамическую матрицу вещественных чисел (C++):

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

Дано прямоугольную матрицу вещественных чисел. Найти максимальную среди сумм каждого столбца. - C++
Дано прямоугольную матрицу вещественных чисел. Найти максимальную среди сумм каждого столбца.

Создать класс вещественных чисел (double) - C++
Создать класс вещественных чисел (double). Определить оператор --, как функцию- член и ++ как дружественную функцию. я сделал...

Создать класс вещественных чисел Double - C++
Создать класс вещественных чисел Double. Определить перегруженную функцию, возвращающую максимальное из двух аргументов. Функция не...

Создать массив вещественных чисел из 10 элементов - C++
Задача в С++ Создать массив вещественных чисел из 10 элементов. Ввести элементы массива с клавиатуры при помощи scanf. Найти сумму...

Создать динамический массив вещественных чисел. - C++
Создать динамический массив вещественных чисел. (С++) На каждый вопрос создавайте по одной теме - это помогает избежать путаницы в...

21
cibertronic
256 / 143 / 13
Регистрация: 27.12.2009
Сообщений: 908
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
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]
0
cibertronic
256 / 143 / 13
Регистрация: 27.12.2009
Сообщений: 908
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
Gvinpin
1 / 1 / 0
Регистрация: 22.11.2009
Сообщений: 33
05.02.2010, 18:39 #19
тут получаются что все ячейки массива имеют значение 10 и 13.15 или как?
0
cibertronic
256 / 143 / 13
Регистрация: 27.12.2009
Сообщений: 908
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
Gvinpin
1 / 1 / 0
Регистрация: 22.11.2009
Сообщений: 33
05.02.2010, 18:47 #21
я просто в С++ только с векторами работал

Вроде понял все
Огромное тебе спасибо

Однако если кто то сможет реализовать в С++ ответьте
0
cibertronic
256 / 143 / 13
Регистрация: 27.12.2009
Сообщений: 908
05.02.2010, 19:40 #22
то же самое можно проделать например вводя елементы с клавиатуры, соответственно нужно это сделать с помощью соответствующих функций (scanf() например)

Добавлено через 52 минуты
вроде вот так както:
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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
void main()
{
int n,m;
printf("\n vvedite koli4estvo strok i stolbcov v matrice ");
scanf("%d%d",&n,&m);
int j,i;
float **mas2;
printf("vvedite elementy \n\n");
{
mas2=new float *[n];
for(i=0;i<n;i++)
{
mas2[i]=new float[m];
for(j=0;j<m;j++)
scanf("%f",&mas2[i][j]);
}
}
printf("\n polu4ennyj massiv\n");
for(i=0;i<n;printf("\n"),i++)
 
for(j=0;j<m;j++)
 
 
printf("%5.2f",mas2[i][j]);
delete mas2[i];
delete []mas2;
getch();
}
0
05.02.2010, 19:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.02.2010, 19:40
Привет! Вот еще темы с ответами:

Дана матрица вещественных чисел. Преобразовать матрицу таким образом, чтобы элементы ее строк шли по убыванию - C++
Дана матрица вещественных чисел. Преобразовать матрицу таким образом, чтобы элементы ее строк шли по убыванию

Создать класс Massiv (матрица вещественных чисел), - C++
Помогите решить, пожалуйста. Спасибо. Создать класс Massiv (матрица вещественных чисел), количество строк и столбцов константные...

Создать стек из вещественных чисел и определить макс элемент - C++
Создать стек из вещественных чисел. Определить максимальный элемент в стеке. Организовать просмотр данных стека. --- Искал на форуме,...

Создать класс для работы с одномерными массивами вещественных чисел - C++
#include &lt;iostream.h&gt; // заголовочные файлы стандартных #include &lt;windows.h&gt; // библиотек #define TRUE 1 // макроопределения...


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

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Опции темы

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