Ответы пользователя по тегу Visual Studio
  • Почему выводится ошибка "необработанное исключение по адресу"?

    Biomorphix
    @Biomorphix Автор вопроса
    Наконец-то добрался до ноута.
    Понял свои ошибки, разобрался - теперь программа работает. Спасибо!
    Вот конечный код программы, если кому интересно:

    /*Cоставить ф-цию нахождения первого (first) и последнего (last) по счету отрицательного элемента в столбце матрицы.
    Используя эту функкцию, в матрице А(4,6) найти сумму произведения first*last для всех столбцов, а в матрице В(6,5) произведение 
    сумм first*last для четных столбцов */
    
    
    
    #include <iostream>
    using namespace std;
               
    
     void find_first_last(){
               int m, n, first, last, sum = 0;
               cout << "Введите размер матрицы \n\n\n";
               cin >> m >> n;
               /*Создание динамического массива*/
               int **matrix = new int*[m];
               for (int i = 0; i < m; i++)
                          matrix[i] = new int[n];
    
               
               
               /*Заполнение матрицы*/
               cout << "Заполните матрицу \n\n\n";
               for (int i = 0; i < m; i++){
               for (int j = 0; j < n; j++) cin >> matrix[i][j];
    
               }
    
               /*Поиск первого и последнего отрицательного элементов в столбцах*/
               for (int j = 0; j < n; j++){
                          int fin = 0;
                          cout << endl;
    
                          //поиск первого отрицательного элемента
                          for (int i = 0; i < m; i++){
                                     if (matrix[i][j] < 0) {first = matrix[i][j]; fin = i;}
                                                else first = NULL;
                                                
                                     if (first){
                                                cout << "Первый отрицательный элементв в столбце " << j << " равен " << first << endl;
                                                break;
                                     }                                 
                                     
                          }
                          
                          if (!first) cout << "Отрицательных элементов в столбце "<< j <<" нет\n";
    
                          //поиск последнего отрицательного элемента
                          for (int i = m - 1; i > fin; i--){
    
                                     if (matrix[i][j] < 0) last = matrix[i][j]; 
                                                else last = NULL;
                                     
                                     if (last) 
                                                {
                                                cout << "Последний отрицательный элементв в столбце " << j << " равен " << last << endl;
                                                break;
                                                }
                          }
    
                          /*
                          Если количество столбцов четное, то вычислять сумму всех столбцов, если нет - то только четных. 
                          Из условия А(4,6), а В(6,5) - закономерность.
                          */
    
                          if (n % 2 == 0)           sum += last*first;
                                     else if ((j + 1) % 2 == 0) sum += last*first;
                                     
               }
               
               cout << sum;
    }
    
    int main(){
    
               setlocale(LC_ALL, "Russian");
    
               find_first_last();
               system("pause");
    
    
    }
    Ответ написан
    Комментировать