Сформировать вектор из элементов матрицы - C (СИ)

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

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

Даны натуральное число n, целочисленная квадратная матрица порядка n. Получить b1, ..., bn, где bi - это сумма элементов, предшевствующих последнему отрицательному элементу i-строки(если все элементы строки неотрицательны, то принять bi = -1).

Решение задачи: «Сформировать вектор из элементов матрицы»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
 
#define MATRIXSIZE 10
 
/* prototype functions */
void addValueMatrix(int [MATRIXSIZE][MATRIXSIZE], int resultArray[MATRIXSIZE]);
void genericRandomMatrix(int [MATRIXSIZE][MATRIXSIZE]);
 
int main()
{
    int matrix[MATRIXSIZE][MATRIXSIZE], resultArray[MATRIXSIZE];
    
    srand(time(NULL));  
    genericRandomMatrix(matrix);
    addValueMatrix(matrix, resultArray);
    int index = 0;
    for (index = 0; index < MATRIXSIZE; index++){
        printf("Line #%2d: %d\n", index, resultArray[index]);
        }
    return 0;
}
void addValueMatrix(int array[MATRIXSIZE][MATRIXSIZE], int resultArray[MATRIXSIZE]){
    
    int inExt = 0, result = 0, inRes = 0;
    
    for(inExt = 0; inExt < MATRIXSIZE; inExt++){
        int inInd = 0, flag = 0;
        result = 0;
        for(; inInd < MATRIXSIZE; inInd++){
            
            if (array[inExt][inInd] < 0) {              
                inInd = MATRIXSIZE; // break in loop
                resultArray[inRes++] = result;              
                flag = 1;                           
            } else {
                result += array[inExt][inInd];              
            }           
        }
        if (0 == flag){
            resultArray[inRes++] = -1;
        }
            
    }                   
}
    
    
    
    
 
 
void genericRandomMatrix(int matrix[MATRIXSIZE][MATRIXSIZE]){
    
        int inExt = 0;
        
    for(inExt = 0; inExt < MATRIXSIZE; inExt++){
        int inInd = 0;
        for(; inInd < MATRIXSIZE; inInd++){
            matrix[inExt][inInd] = -3 + rand()%99;
        }
    }
 
    for(inExt = 0; inExt < MATRIXSIZE; inExt++){
        int inInd = 0;      
        printf("#%2d:", inExt);
        for(; inInd < MATRIXSIZE; inInd++){
            printf("%3d ", matrix[inExt][inInd]);
        }   
        printf("\n");
    }   
}

Объяснение кода листинга программы

Вот что делает этот код:

  1. Создает матрицу размером 10x10 и заполняет ее случайными числами от -3 до 96.
  2. Добавляет значения из матрицы в новый массив, сохраняя только положительные числа и пропуская отрицательные.
  3. Выводит на консоль значения нового массива по одному в строке.

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


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

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

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