Top.Mail.Ru
Ответы

Помогите написать сложную промграмму про двумерные динамические массивы, на Си

Нужно решить 8-й вариант.

По дате
По рейтингу
Аватар пользователя
Новичок
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
 #include <limits.h> 
#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 
#define RAND(min, max) (rand() % ((max) - (min)) + (min)) 
int main() { 
    size_t n, m; 
    size_t i, j; 
    int** matrix = NULL; 
    int lower, upper; 
    size_t count; 
    size_t length; 
    size_t pos; 
    srand((unsigned)time(NULL)); 
    do { 
        printf("Rows: "); 
        scanf("%zu", &n); 
        matrix = (int**)malloc(n * sizeof(int*)); 
        if (matrix != NULL) { 
            printf("Columns: "); 
            scanf("%zu", &m); 
            for (i = 0; i < n; ++i) { 
                matrix[i] = (int*)malloc(m * sizeof(int)); 
                if (!matrix[i]) { 
                    for (j = 0; j < i; ++j) free(matrix[j]); 
                    free(matrix); 
                    matrix = NULL; 
                } 
            } 
        } 
    } while (!matrix); 
    do { 
        printf("Lower bound: "); 
        scanf("%d", &lower); 
        printf("Upper bound: "); 
        scanf("%d", &upper); 
    } while (lower >= upper + 1); 
    ++upper; 
    for (i = 0; i < n; ++i) { 
        for (j = 0; j < m; ++j) { 
            matrix[i][j] = RAND(lower, upper); 
        } 
    } 
    for (i = 0; i < n; ++i) { 
        for (j = 0; j < m; ++j) { 
            printf(" %3i", matrix[i][j]); 
        } 
        puts(""); 
    } 
    length = 0; 
    pos = -1; 
    for (j = 0; j < m; ++j) { 
        count = 0; 
        for (i = 1; i < n; ++i) { 
            if (matrix[i][j] == matrix[i - 1][j]) ++count; 
            else { 
                if (count > length) { 
                    length = count; 
                    pos = j; 
                } 
                count = 0; 
            } 
        } 
        if (count > length) { 
            length = count; 
            pos = j; 
        } 
        if (length == m) break; 
    } 
    if (pos != -1) { 
        printf("Position: %zu\n", pos + 1); 
        for (i = 0; i < n; ++i) { 
            printf(" %3i", matrix[i][pos]); 
        } 
        puts(""); 
    } else { 
        puts("Element series not found!"); 
    } 
    for (i = 0; i < n; ++i) free(matrix[i]); 
    free(matrix); 
} 
Аватар пользователя
Просветленный

Грязная ложка...