Программа считает значения элементов массива но результат на 2 больше - C (СИ)

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

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

Программа считает значения элементов массива но результат на 2 больше, в чём проблема?
#include <stdio.h>
#include <conio.h>
 
int main()
{
    unsigned int n = 0;
    int** mas = NULL;
 
    // ввод массива
    printf("Razmer masiva: ");
    scanf_s("%d", &n);
    mas = new int*[n];
    for (unsigned int i = 0; i < n; ++i)
    {
        mas[i] = new int[n];
        for (unsigned int j = 0; j < n; ++j)
        {
            //printf("mas[%d][%d] = ", i, j);
            scanf_s("%d", &mas[i][j]);
        }
    }

    /* подсчёт суммы всех элементов */
    unsigned int sum =0;
    for (unsigned int i = 0; i < n; ++i)
        for (unsigned int j = 0; j < n; ++j)
            sum+=mas[i][j];
 
    /* вывод результатов суммы элементов */
 
    printf("Summa elementov massiva: %d", sum);
    getch();
 
    // очистка памяти
    for (unsigned int i = 0; i < n; ++i)
    {
        delete[] mas[i];
        mas[i] = NULL;
    }
    delete[] mas;
    mas = NULL;
 
    return 0;
}
Так кто-нибудь может подсказать в чём проблема?

Решение задачи: «Программа считает значения элементов массива но результат на 2 больше»

textual
Листинг программы
#include <stdio.h>
#include <conio.h>
 
int main()
{
        unsigned int n = 0;
        int** mas = NULL;
 
        // ввод массива
        printf("Razmer masiva: ");
        scanf("%d", &n);
        mas = new int*[n];
        for (unsigned int i = 0; i < n; ++i)
        {
                mas[i] = new int[n];
                for (unsigned int j = 0; j < n; ++j)
                {
                        //printf("mas[%d][%d] = ", i, j);
                        scanf("%d", &mas[i][j]);
                }
        }
 
 
        /* подсчёт суммы всех элементов */
    unsigned int sum =0;
    unsigned int j = 0;
        for (unsigned int i = 0; i < n; ++i){
                for ( j = 0; j < n; ++j){
                        sum+=mas[i][j];}
                        j=0;
}
        /* вывод результатов суммы элементов */
 
        printf("Summa elementov massiva: %d", sum);
        getch();
 
        // очистка памяти
        for (unsigned int i = 0; i < n; ++i)
        {
                delete[] mas[i];
                mas[i] = NULL;
        }
        delete[] mas;
        mas = NULL;
 
        return 0;
}

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

В этом коде:

  1. Razmer masiva: Размер массива
  2. *mas = new int[n];** Выделение памяти под массив указателей на int
  3. for (unsigned int i = 0; i < n; ++i) Цикл для заполнения массива
  4. mas[i] = new int[n]; Выделение памяти под массив int
  5. for (unsigned int j = 0; j < n; ++j) Цикл для заполнения массива
  6. scanf(%d, &mas[i][j]); Ввод значения элемента массива
  7. sum += mas[i][j]; Сумма элементов массива
  8. printf(Summa elementov massiva: %d, sum); Вывод суммы элементов массива
  9. getch(); Ожидание нажатия клавиши
  10. for (unsigned int i = 0; i < n; ++i) Цикл для очистки памяти
  11. delete[] mas[i]; Освобождение памяти
  12. mas[i] = NULL; Установка значения NULL
  13. delete[] mas; Освобождение памяти под массив
  14. mas = NULL; Установка значения NULL
  15. return 0; Конец программы

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


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

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

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