Untitled

 avatar
unknown
c_cpp
2 years ago
4.1 kB
3
Indexable
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <time.h>


int main() {
    srand(time(0));
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);

    const int rows = 5, cols = 6;
    int arr[ rows ][ cols ];

    int i, j;
    for( i = 0; i < rows; ++i ) {
        for( j = 0; j < cols; ++j ) {
            arr[ i ][ j ] = rand() % 101 - 50;
            printf("%5d", arr[ i ][ j ] );
        }
        puts(""); // printf("\n");
    }


    // пользователь вводит НОМЕР строки, в которой вычисляем среднее арифметическое
    int numRow;
    printf("Введите номер строки в которой необходимо найти средне арифметическое значение: ");
    scanf("%d", &numRow);
    --numRow;

    double sum = 0;
    for( i = 0; i < cols; ++i )
        sum += arr[ numRow ][ i ];

    printf("Среднее арифметическое элементов строки № %d = %.2f\n", numRow + 1, sum / cols );

    // пользователь вводит НОМЕР столбца, в котором находим минимальный элемент
    int numCol;
    printf("Введите номер столбца в котором необходимо найти минимальный элемент: ");
    scanf("%d", &numCol);
    --numCol;

    int min = arr[ 0 ][ numCol ];
    for( i = 0; i < rows; ++i )
        if (min > arr[ i ][ numCol ])
            min = arr[ i ][ numCol ];

    printf("минимальный элемент столбца № %d = %d\n", numCol + 1, min );


// пользователь вводит номер строки и количество позиций на которое необходимо сдвинуть циклически строку вправо

    // цикл ввода данных
    int numRowForShift;
    printf("Введите номер строки в которой требуется сдвиг в право: ");
    scanf("%d", &numRowForShift);
    --numRowForShift;
    int ShiftLoopRightN;
    printf("Введите на какое количество позиций необходимо сдвинуть строку: ");
    scanf("%d", &ShiftLoopRightN);

    // цикл сдвига
    int n, shift = ShiftLoopRightN % cols;
    for ( n = 0; n < shift; ++n) {
        int last = arr[numRowForShift][cols - 1];
        for( j = cols - 1; j > 0; --j ) {
            arr[ numRowForShift ] [ j ]= arr[ numRowForShift ][ j - 1 ];
        }
        arr[ numRowForShift ] [ 0 ] = last;
    }
    // вывод массива
    for( i = 0; i < rows; ++i ) {
        for( j = 0; j < cols; ++j ) {
            printf("%5d", arr[ i ][ j ] );
        }
        puts(""); // printf("\n");
    }

    // пользователь вводит номер столбца и количество позиций на которое необходимо сдвинуть циклически столбец вверх

    // цикл ввода данных
    int numColForShift;
    printf("Введите номер столбца в котором требуется сдвинуть столбец вверх: ");
    scanf("%d", &numColForShift);
    --numColForShift;
    int shiftLoopUpN;
    printf("Введите на какое количество позиций необходимо сдвинуть столбец: ");
    scanf("%d", &shiftLoopUpN);

    // цикл сдвига
    int  shift2 = shiftLoopUpN % rows;
    for ( n = 0; n < shift2; ++n) {
        int first = arr[0][numColForShift];
        for( i = 0; i < rows-1; ++i ) {
            arr[ i ] [ numColForShift ]= arr[ i + 1 ][ numColForShift ];
        }
        arr[ rows - 1 ] [ numColForShift ] = first;
    }
    // вывод массива
    for( i = 0; i < rows; ++i ) {
        for( j = 0; j < cols; ++j ) {
            printf("%5d", arr[ i ][ j ] );
        }
        puts(""); // printf("\n");
    }


    return 0;
}
Editor is loading...