221

(20 відповідей, залишених у C++)

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char *p[3];

    const size_t N = 10;
    size_t row, col; // Ідентифікатори для рядів та стовпців

    /* Виділяємо місце у "КУПІ" для 3-х масивів
        та ініціалізуємо масив із 3-х вказівників, котрий
        розташований у "СТЕКУ", адресами ділянок пам'яті в "КУПІ".
            Забиваємо це все діло нулями... */
    row = 0;
    while (row < 3)
        p[row] = (char *)calloc(sizeof(char), N), ++row;

    srand(1); /* Для автоматичної ініціалізації генератор випадкових чисел
                можна srand передати параметр час...  */

    /* Повторна ініціалізація 1-го та 2-го рядка матриці пропускаючи перший елемент. */
    for (row = 0; row < 2; ++row)
    {
        printf("%3d ", *p[row]);
        for (col = 1; col < N; ++col)

            // Генеруємо числа у діапазоні від 0 до 6 та виводимо на екран.

            *(p[row] + col) = rand() % 7, printf("%3d ", p[row][col]);
        printf("\n");
    }

    // Тут у нас дії над 3-м рядком.
    col = 0;
    while (col < N)
        *(p[2] + col) = *(*p + col) + *(p[1] + col),
                 printf("%3o ", p[2][col]),
                 ++col;

    // Ну і звичайно звільняємо пам'ять... ОБОВ'ЯЗКОВО free(PTR)
    row = 0;
    while (row < 3)
        free(p[row]), ++row;

    return 0;
}

Не зовсім зрозуміло дії над 3-м рядком... Покажіть приклад.
Для наглядності у третьому рядку вивів просто суму 1 та 2 рядка у вісімковому форматі