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

Динамические массивы - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.87
Rezvanov
1 / 1 / 0
Регистрация: 22.10.2011
Сообщений: 71
02.11.2012, 18:29     Динамические массивы #1
1. Сформировать динамический одномерный массив, заполнить его случайными числами и вывести на печать
2. Выполнить указанное в варианте задание и вывести полученный массив на печать.
3. Сформировать динамический двумерный массив, заполнить его случайными числами и вывести на печать.
4. Выполнить указанное в варианте задание и вывести полученный массив на печать.

Задача:

1. Удалить элемент равный среднему арифметическому элементов массива
2. Добавить столбец в конец матрицы

Помогите решить. Заранее благодарен!!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.11.2012, 18:29     Динамические массивы
Посмотрите здесь:

Динамические Массивы C++
C++ Динамические массивы
C++ динамические массивы
Динамические массивы: C++
Динамические массивы C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
02.11.2012, 19:47     Динамические массивы #2
Цитата Сообщение от Rezvanov Посмотреть сообщение
3. Сформировать динамический двумерный массив, заполнить его случайными числами и вывести на печать.
4. Выполнить указанное в варианте задание и вывести полученный массив на печать.
Если я не ошибаюсь двумерных динамических массивов не существует

Добавлено через 11 минут
Первая и вторая часть задания:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <stdlib.h>
 
main()
{
    int MAX, i;
    int* arr;
    
    MAX = 10;
    arr = malloc(MAX);
 
    for( i = 0; i < MAX; ++i ) {
    // Заполним целосисленными значениями от 0 до 100.
    arr[i] = rand() % 100;
    printf( "%d ", arr[i] );
    }
    free(arr);
    
}
Tiva
94 / 94 / 1
Регистрация: 25.04.2012
Сообщений: 429
02.11.2012, 19:48     Динамические массивы #3
C++
1
2
3
4
int **mas;
*mas=new int [n];
for (int i=0; i<n; i++)
  mas[i]=new int [m]
двумерный динамический массив
Rezvanov
1 / 1 / 0
Регистрация: 22.10.2011
Сообщений: 71
02.11.2012, 19:59  [ТС]     Динамические массивы #4
может кину методичку на эмайл. нужно решить 5,6,7 и 9 Лабораторные работы.

Добавлено через 8 минут
Вот пример:


Лабораторная работа №5
Динамические массивы
Постановка задачи:
1. Сформировать динамический одномерный массив, заполнить его случайными числами и вывести на печать.
2. Выполнить указанное в варианте задание и вывести полученный массив на печать.
3. Сформировать динамический двумерный массив, заполнить его случайными числами и вывести на печать.
4. Выполнить указанное в варианте задание и вывести полученный массив на печать.

Задача:
1. Удалить первый четный элемент.
2. Добавить строку с заданным номером


Описание используемых в программе стандартных функций.

new – выделение динамической памяти под переменную.
delete – удаление из динамической памяти переменной.


Исходный код программы:

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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#include <iostream.h>
#include <stdlib.h>
 
int** form_mass(int k,int r) // функция выделения динамической памяти под двумерный массив
{
    int **mass=new int*[k];
    for(int i=0;i<k;i++)
mass[i]=new int [r];
    return mass;
};
 
void create_mass(int** mass, int k, int r)//функция формирования массива
{
    
    for(int i=0;i<k;i++)
        for(int j=0; j<r; j++)
            mass[i][j]=rand()%50;
        cout<<"massiv sformirovan\n";
 
};
 
void print_mass(int** mass, int k, int r)//функция печати массива
{
    for(int i=0;i<k;i++)
    {
        cout<<"\n";
        for(int j=0; j<r; j++)
            cout<<mass[i][j]<<"  ";
    }
    cout<<"\n";
};
 
void insert_row(int** mass, int** mass3, int k, int r, int K1)//функция добавления строк в массив
{
    for(int i=0; i<K1; i++)
    {
        cout<<"vvedite stroku "<<i+1<<" c "<<r<<" elementami"<<"\n";
        for(int j=0; j<r; j++)
        {
            cin>>mass3[i][j]; 
        }
        cout<<"\n";
    }
int j;
    
for(i=0; i<k; i++)
    for(j=0; j<r; j++)
        if(i>=K1)
            mass3[i][j]=mass[i-K1][j];
 
        cout<<"\n"<<"\n";
 
 
        for(i=0;i<k;i++)
        {
            for(j=0; j<r; j++)
                cout<<mass3[i][j]<<"  ";
            cout<<"\n";
        }
}; 
 
void del_mass(int** mass)//функция  удаления массива из динамической памяти 
{
    delete[] mass;
}
 
void del_nech(int** mass, int** mass2, int k, int r)//функция удаления нечетных чисел из массива
{
    for(int i=0;i<k;i++)
    {
        int j1=0;
        for(int j=0; j<r; j++)
        {
            int t=mass[i][j]%2;
            if (t==0) 
            {
                mass2[i][j1]=mass[i][j];
                j1++;
            }
        }
    }           
}
 
void main()//Вызов главной функции
{
int n; int m;
cout<<"insert n\n";
cin>>n;
cout<<"insert m\n";
cin>>m;
int **b=form_mass(n,m); 
int **c=form_mass(n,m);
 
int k; int N1; int N2;
do
{
cout<<"1. Create massiv\n";
cout<<"2. Print original massiv\n";
cout<<"3. Delete nechetnye chisla\n";
cout<<"4. Print in modified massiv 1\n";
cout<<"5. Delete massiv\n";
cout<<"6. Insert rows\n";
cout<<"7. Exit\n";
cin>>k;
switch (k)
{
case 1: create_mass(b,n,m); break;
    
case 2:  print_mass(b,n,m);
    break;
        
 
 
 
case 3: del_nech(b,c,n,m); break; 
 
case 4:  print_mass(c,n,m);
    break;
 
case 5: del_mass(b); break;
 
case 6: cout<<"insert K"<<"\n"; cin>>N1; N2=N1+n; int **d=form_mass(N2,m); insert_row(b,d,N2,m,N1); break;
 
}
}
while (k!=7);
}
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
02.11.2012, 20:06     Динамические массивы #5
Цитата Сообщение от Tiva Посмотреть сообщение
int **mas; *mas=new int [n]; for (int i=0; i<n; i++) mas[i]=new int [m]
А это не указатель на указатель?
Rezvanov
1 / 1 / 0
Регистрация: 22.10.2011
Сообщений: 71
02.11.2012, 20:10  [ТС]     Динамические массивы #6
это указатель на него.

Задача:

1. Удалить элемент равный среднему арифметическому элементов массива
2. Добавить столбец в конец матрицы
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
02.11.2012, 23:40     Динамические массивы #7
Этот вариант работы не совсем эстетичен в плане реализации алгоритма и годится только в учебных целях. На практике копировать массивы для каких либо операций - весьма не благоприятная затея.
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include <iostream>
#include <cstdlib>
 
using namespace std;
 
int main()
{
    int size = 10;
    int m_math = 0;
    int* arr = new int[size];
    int* ptr = arr;
    int finder = 0;
    
    // Заполним случайными значениями и отобразим результат
    for( int* p = arr; p != arr + size; ++p ) {
    *p = rand() % 100;
    cout << *p << ' ';
    }
    
    // Найдём cумму всех членов 
    for( int* p = arr; p != arr + size; ++p )
    m_math = m_math + *p;
    
    // Среднее значение равно:
    m_math = m_math / size;
    cout << "\nСреденее арифметическое равно: " << m_math << endl;
    
    // Скопируем массив для выполнения сортировки
    int *cpy_arr = new int[size];
    for( int* p = cpy_arr; p != cpy_arr + size; )
    *p++ = *ptr++;
    
    // Отсортируем элементы по возрастанию и найдём середину
    for( int* p = cpy_arr + 1; p != cpy_arr + size; ++p )
    for( int* q = cpy_arr + size - 1; q != cpy_arr; --q )
        if( *(q-1) > (*q) ) {
        int temp = *(q-1);
        *(q-1) = *q;
        *q = temp;
        }
    
    // Теперь отыщим равное или ближайшее меньшее
    ptr = cpy_arr + size - 1;
    for( ; ptr >= cpy_arr; --ptr )
    if( *ptr >= m_math );
    else
        break;
    
    finder = *ptr;
    cout << "Среднее значении в массиве равно: "
     << finder << endl;
    
    // Ликвидируем временный массив
    delete [] cpy_arr;
    // И обезопасем указатель
    ptr = 0;
    
    // Найдём искомое значение в главном массиве
    // и присвоим ему значение 0
    // Отобразим результат.
    cout << "\nРезульт работы:\n";
    for( int* p = arr; p != arr + size; ++p ) {
    if( *p == finder ) {
        *p = 0;
    }
    cout << *p << ' ';
    }
    
    delete [] arr;
    
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.11.2012, 08:28     Динамические массивы
Еще ссылки по теме:

C++ Динамические массивы
Динамические массивы C++

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

Или воспользуйтесь поиском по форуму:
Tiva
94 / 94 / 1
Регистрация: 25.04.2012
Сообщений: 429
03.11.2012, 08:28     Динамические массивы #8
Цитата Сообщение от xtorne21st Посмотреть сообщение
А это не указатель на указатель?
какая разница как это называется, если для ТСа это можно использовать как массив?
Yandex
Объявления
03.11.2012, 08:28     Динамические массивы
Ответ Создать тему
Опции темы

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