Динамическое выделение памяти под массив - C (СИ) (251805)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, помогите пожалуйста сделать в процедуре input динамическое выделение памяти под размер двухмерного массива, и динамическое выделение памяти под одномерный массив, в который переписываются значения больше С. Задание было такое, нужно сделать двухмерный массив макс размером 15х25 и из матрицы выписать числа большие С в одномерный массив если таких числе нет то выписываем 0.
#include 
#include      // srand(), rand()
#include        // 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\n");
    }
 
    // выведем на экран получившийся массив b[]:
    printf("\narray b[]:\n");
    for (i=0; i\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;
}

Решение задачи: «Динамическое выделение памяти под массив»

textual
Листинг программы
#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);
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5
Похожие ответы