Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.01.2023, 22:06   #1
Sizbiy
 
Регистрация: 15.12.2022
Сообщений: 6
Вопрос Двумерный массив, сумма элементов массива на С

Составить программу генерации и обработки квадратной матрицы размером n×n.
Вычислить среднее арифметическое положительных элементов матрицы, стоящих выше главной диагонали.
Найти в матрице первую по порядку строку с наибольшей суммой элементов. Вывести ее номер.

Почему функция может постоянно крашится?

Код:
void task2(void){

    int i, j, n, s=0, x=0, f=0, sum=0;
    printf("Введите n = ");
    scanf("%d", &n);
    int N[n][n];
    float sa;
    srand(time(NULL));

    for (i = 0; i < n; i++){
        for (j = 0; j < n; j++){
         N[i][j]=rand()*pow(-1 ,rand());
        }
    }

    for (i = 0; i < n; i++){
        for (j = 0; j < n; j++){
         printf("%.3d\t", N[i][j]);
        }
        printf("\n");
    }

    for (i = 0; i < n; i++){
        for (j = 0; j < n; j++){
         if(i < j && N[i][j] > 0){
         s+=N[i][j];
         x++;
         }
        }
    }
    sa=s/x;
    printf("Среднее арифметическое элементов, стоящих выше главной диагонали = %.1f\n",  sa);

//для того чтобы сравнить сумму рядов, следует посчитать элементы первой строки отдельным циклом?

    for (j = 0; j < n; j++){
         sum+=N[0][j];
        }


    for (i = 0; i < n; i++){
        for (j = 0; j < n; j++){
         if(N[0][j] > sum)
         sum+=N[0][j];
        }
    }
    printf("sum = %d\n", sum);

}
Sizbiy вне форума Ответить с цитированием
Старый 02.01.2023, 22:34   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Заполнять, наверное, стоит числами поменьше, чтобы легче было проверять расчеты. Можно не обходить матрицу целиком, а только ту часть, что выше главной диагонали. Перед расчетом среднего арифметического стоит проверить, что там вообще были положительные числа. И доделайте часть про суммы строк - заведите отдельную переменную для суммы текущей строки и её сравнивайте с sum, а еще нужна отдельная переменная для номера строки.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 02.01.2023, 22:51   #3
Sizbiy
 
Регистрация: 15.12.2022
Сообщений: 6
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
тдельная переменная для номера строки.
BDA, Только как реализовать сумму элементов, через приращение элемента i или j?
Sizbiy вне форума Ответить с цитированием
Старый 03.01.2023, 00:08   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Если j - номер столбца, то через j.
Код:
for (i = 1; i < n; i++) {
    for (j = 0; j < n; j++)
        tmp_sum += N[i][j];
}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Напишите программу, которая заполняет массив из N элементов целыми числами в диапазоне [ A , B ] и определяет количество элементов этого массива, у которых сумма цифр равна K . triplefake Паскаль, Turbo Pascal, PascalABC.NET 2 17.11.2020 11:29
Двумерный массив в C++ Формирование массива из min элементов строк матрицы,а функция 2 - Поиск max элемента массива. kisel2014 Общие вопросы C/C++ 0 18.12.2019 00:36
Вычислить z=s1+s2/2, где s1-сумма положительных элементов массива X(8); s2-сумма отрицательных элементов массива Y(10) . обе суммы Лидия 188 Паскаль, Turbo Pascal, PascalABC.NET 1 06.11.2015 18:44
C# Массив. Сумма двух элементов массива. Skipper Ok Помощь студентам 3 15.09.2014 08:19
Двумерный массив. Определить минимальную сумму элементов строки двумерного массива vralayala Паскаль, Turbo Pascal, PascalABC.NET 3 23.09.2013 08:45