Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
SkyLark_71
0 / 0 / 0
Регистрация: 12.10.2017
Сообщений: 197
1

Динамическое выделение памяти под массив

21.05.2018, 20:46. Просмотров 308. Ответов 3
Метки нет (Все метки)

Здравствуйте, помогите пожалуйста сделать в процедуре input динамическое выделение памяти под размер двухмерного массива, и динамическое выделение памяти под одномерный массив, в который переписываются значения больше С.
Задание было такое, нужно сделать двухмерный массив макс размером 15х25 и из матрицы выписать числа большие С в одномерный массив если таких числе нет то выписываем 0.
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
#include <stdio.h>
#include <stdlib.h>     // srand(), rand()
#include <time.h>       // time()
// размеры массива зададим константами:
#define K 15
#define L 25
 
void input (int *k,int *l,int *c)
{
    do {
        printf("Strok: ");
        scanf("%d", k);
        printf("Stolb: ");
        scanf("%d", l);
    }while (*k>15 && *l>25);
    printf("Chislo: ");
    scanf("%d", c);
}
 
int massiv (int a[K][L],int b[K],int c)
{
 
    /* чтобы не вводить 375 значений с клавиатуры, заставим трудиться рнд */
    srand(time(NULL));      // новая точка отсчета рнд
    int i,j,m = 50;         // переменные-счетчики, максимум рнд
    for (i=0; i<K; i++)     // заполним массив a[][] случайными числами
        for (j=0; j<L; j++)
            a[i][j] = rand() %m;    // случайное число от 0 до m-1
 
    // находим первые числа, больше с и записываем их в массив b[]:
    for (i=0; i<K; i++)
    {
        for (j=0; j<L && a[i][j]<=c; j++)
            ;   // пустой цикл до первого элемента больше с
        if (j<L) b[i] = a[i][j];
        else b[i] = 0;
    }
 
    // находим первые числа, больше с и записываем их в массив b[]:
    for (i=0; i<K; i++)
    {
        for (j=0; j<L && a[i][j]<=c; j++)
            ;   // пустой цикл до первого элемента больше с
        if (j<L) b[i] = a[i][j];
        else b[i] = 0;
    }
    
    return a[K][L];
}
 
int output (int a[K][L],int b[K],int k,int l,int c, int i, int j)
{
    // напечатаем массив a[][] на экран:
    for (i=0; i<K; i++)
    {
        for (j=0; j<L; j++)
            printf("%3d", a[i][j]);
        printf("\n");
    }
 
    // выведем на экран получившийся массив b[]:
    printf("\narray b[]:\n");
    for (i=0; i<K; i++)
        printf("%3d", b[i]);
    printf("\n");
 
    // конец программы
    return b[K];
}
 
int main (void)
{
    int a[K][L];int b[K];int k;int l;int c; int i; int j;
    input(&k,&l,&c);
    massiv(a,b,c);
    output (a,b,k,l,c,i,j);
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2018, 20:46
Ответы с готовыми решениями:

Динамическое выделение памяти под массив
Доброго времени! Требуется ввести размер массива с клав-ры, заполнить массив - изменить его размер...

Динамическое выделение памяти под одномерный массив
В общем, вопрос такой. Пусть нам нужно задать массив, используя динамическое выделение памяти....

Динамическое выделение памяти под массив строк
Программа выполняет конкатенацию произвольного количества строк. Но видимо я не правильно выделяю...

Динамическое выделение памяти под двумерный массив
Доброго времени суток, есть программа которая создаёт двумерный массив, вопрос такой как можно...

Динамическое выделение памяти под массив структур
Подскажите, пожалуйста, как верно выделить память под массив структур, размер которого вводится в...

3
dopleref
42 / 52 / 33
Регистрация: 15.12.2015
Сообщений: 197
22.05.2018, 11:27 2
Вот пример выделения динамической памяти для одномерного и двумерного массивов,
заполнения их случайными данными и распечатки:
Кликните здесь для просмотра всего текста

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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
void createArray(int** array1, int*** array2) {
    int n = 15;
    int m = 25;
    *array1 = (int*) malloc(n * sizeof(int));
    *array2 = (int**) malloc(n * sizeof(int*));
    for (int i = 0; i < n; i++) {
        (*array1)[i] = rand() % 10;
        (*array2)[i] = (int*) malloc(m * sizeof(int));
        for (int j = 0; j < m; j++) {
            (*array2)[i][j] = rand() % 10;
        }
    }
}
 
void printArray(int** array1, int*** array2) {
    int n = 15;
    int m = 25;
    printf("array1:\n");
    for (int i = 0; i < n; i++) {
        printf("%d ", (*array1)[i]);
    }
    printf("\n");
    printf("array2:\n");
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            printf("%d ", (*array2)[i][j]);
        }
        printf("\n");
    }
}
 
 
int main() {
    srand(time(NULL));
    int* array1;
    int** array2;
    createArray(&array1, &array2);
    printArray(&array1, &array2);
}
1
SkyLark_71
0 / 0 / 0
Регистрация: 12.10.2017
Сообщений: 197
05.07.2018, 09:27  [ТС] 3
dopleref, а почему тройной указатель ? И для чего он нужен ?
0
dopleref
42 / 52 / 33
Регистрация: 15.12.2015
Сообщений: 197
23.07.2018, 07:11 4
http://www.cyberforum.ru/showthread.php?t=2260580 - в этой теме такой подход резонно раскритиковали.

Но вообще тут так сделано, потому что, чтобы изменить указатель на указатель в функции, необходимо
передать тройной указатель, так как функция malloc возвращает переменной новый адрес, а если мы хотим
изменить значение переменной в функции мы должны передать ее через указатель.
0
23.07.2018, 07:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.07.2018, 07:11

Динамическое выделение памяти под многомерный массив
Проблема с выводом многомерного массива. Может память неправильно выделяю? Помогите чайнику. ...

Динамическое выделение памяти под структуры
Такая ситуация. Необходимо написать функцию ввода структуры c консоли void vvod(student &amp;man). Так...

Динамическое выделение памяти под структуру
Задание, выделить динамически память под структуру и вывести список того что мы внесли туда....


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

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

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