Программа считает значения элементов массива но результат на 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; }
Объяснение кода листинга программы
В этом коде:
- Razmer masiva: Размер массива
- *mas = new int[n];** Выделение памяти под массив указателей на int
- for (unsigned int i = 0; i < n; ++i) Цикл для заполнения массива
- mas[i] = new int[n]; Выделение памяти под массив int
- for (unsigned int j = 0; j < n; ++j) Цикл для заполнения массива
- scanf(
%d
, &mas[i][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; Установка значения NULL
- delete[] mas; Освобождение памяти под массив
- mas = NULL; Установка значения NULL
- return 0; Конец программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д