Загрузка...

Работа с 2d массивом. Выдаёт ошибку из за которой не хочет работать дальше. Как исправить.

Тема в разделе C/C++ создана пользователем Molestia1337 9 ноя 2023. 135 просмотров

  1. Molestia1337
    Molestia1337 Автор темы 9 ноя 2023 0 9 ноя 2023
    Работаю с этим условием.
    [IMG]
    Выдаёт ошибку "Вызвано исключение по адресу 0x00007FF7134A2749 в hrenata4.2.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0x00000000FDFDFDFD." в строке 20.
    [IMG]
    Вот весь код:
    #include <iostream>
    using namespace std;
    void arr(int *x[], int& n, int& m) {
    for ( int i = 0; i < n; i++) {
    for ( int j = 0; j < m; j++){
    cout << "x[" << i << "]["<<j<<"]: ";
    cin >> x[j];
    }

    }
    }

    float MaxArif(int *x[], int m, int j) {
    float sum = 0, ArifSum;
    int k = 0;
    for ( int i = 0; i < m; i++){
    if (x[j] < 0) {
    k++;
    sum = sum + x[j];
    }
    }
    ArifSum = sum / k;
    return ArifSum;
    }

    int main() {
    int n, m, i, j,p;
    float ArifSum,max;
    cout << "wedite kolvo strok arr A: ";
    cin >> n;
    cout << "wedite kolvo stolbov arr A: ";
    cin >> m;
    int** A = new int* [n];
    for (i = 0; i < n; i++){
    A = new int[m];
    }

    arr(A, n, m);

    for (i = 0; i < n; i++) {
    for (j = 0; j < m; j++) {
    cout << A[j] << " ";

    }
    cout << endl;
    }
    for ( j = 0; j < m; j++){
    ArifSum = MaxArif(A,m,j);
    max = 0;
    if (max > ArifSum) {
    max = ArifSum;
    p = j;
    }
    }
    cout << "arif summa otr el stolba " << p << " ravna: " << max << endl;

    for (i = 0; i < n; i++) {
    delete[] A[i];
    }
    delete[] A;
    }[/i]
     
  2. ruha42
    ruha42 9 ноя 2023 0 17 янв 2023
    #include <iostream>
    using namespace std;

    void arr(int** x, int n, int m) {
    for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
    cout << "x[" << i << "][" << j << "]: ";
    cin >> x[j]; // cin >> x i___j;
    }
    }
    }

    float MaxArif(int** x, int n, int j) {
    float sum = 0, ArifSum = 0;
    int k = 0;

    for (int i = 0; i < n; i++) {
    if (x[j] < 0) {
    k++;
    sum = sum + x[j]; // sum + x i_j
    }
    }

    if (k > 0) {
    ArifSum = sum / k;
    }

    return ArifSum;
    }

    int main() {
    int n, m, i, j, p;
    float ArifSum, max = 0;

    cout << "wedite kolvo strok arr A : ";
    cin >> n;
    cout << "wedite kolvo stolbov arr A: ";
    cin >> m;

    int** A = new int* [n];

    for (i = 0; i < n; i++) {
    A[i] = new int[m];
    }

    arr(A, n, m);

    for (i = 0; i < n; i++) {
    for (j = 0; j < m; j++) {
    cout << A[i][j] << " "; // A i__j
    }
    cout << endl;
    }

    for (j = 0; j < m; j++) {
    ArifSum = MaxArif(A, n, j);
    if (ArifSum < max || j == 0) {
    max = ArifSum;
    p = j;
    }
    }
    cout << "arif summa otr el stolba " << p << " ravna: " << max << endl;

    for (i = 0; i < n; i++) {
    delete[] A[i];
    }
    delete[] A;
    }[/i][/i][/i]
    [/I]
     
    9 ноя 2023 Изменено
  3. Сейсемосейсе
    Наверное ты уже решил проблему, просто подскажу, что использовать русский в консоли плюсов без иероглифов можно со строчкой setlocale(LC_ALL, "Russian"); в main
     
  4. Celeste
    Celeste 16 ноя 2023 ♕Climbing for strawberries and finding myself...♕ 9694 26 окт 2021
    Решил проблему? Если нет, то попробуй до вызова исключения выводить i и j
    Последние выведенные i и j до вызова исключения будут указывать на проблему
    Копаться в коде уже твоё дело
     
Загрузка...
Top