Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 26.12.2014
Сообщений: 4
1

Создание двумерного массива библиотечными функциями С

27.12.2014, 00:39. Показов 1040. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Массив размерностью MxN. Необходимо дополнить его (M+1)-й строкой и (N+1)-м столбцом, в которых записать суммы элементов соответствующих строк и столбцов. В элементе aM+1,N+1 должна храниться сумма всех элементов массива.

Необходимо использовать библиотечные функции языка Си (calloc, malloc, realloc...).
Необходимо написать три функции, которые будут вызываться из функции main().
Первая функция получает размерность массива, создает динамический массив и возвращает указатель на начало созданного массива.
Вторая – получает адрес массива и его размерность и решает одну из ниже перечисленных задач.
Третья функция получает адрес массива и его размерность и освобождает память, занятую массивом.
Размерность вводится с клавиатуры в функции main() и передается в первую функцию. Значения элементов вводятся с клавиатуры в первой функции.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <iostream>
#include <stdlib.h>
#include <conio.h>
 
using namespace std;
 
int** first(int m, int n)
{
    int** arr;
    arr = (int**)calloc(m+1, sizeof(int*));
    for (int i = 0; i < m+1; i++)
        arr[i] = (int*)calloc(n+1, sizeof(int));
    cout << "Введите элементы массива" << endl;
    for (int i = 0; i < m; i++)
    for (int j = 0; j < n; j++)
        cin >> arr[i][j];
    return arr;
}
 
int second(int m, int n, int** arr)
{
    for (int i = 0; i < m; i++)
    for (int j = 0; j < n; j++)
    {
        arr[i][m] += arr[i][j];
        arr[n][j] += arr[i][j];
        arr[m][n] += arr[i][j];
    }
        for (int i = 0; i < m+1; i++)
        {
            cout << endl;
            for (int j = 0; j < n+1; j++)
                cout << arr[i][j]<<" ";
        }
        return 0;
}
int third(int a, int **m)
{
    for (int i = 0; i<a; i++)
        free(m[i]);
    free (m);
    return 0;
}
 
int main()
{
    setlocale(0, "");
    int m, n;
    int** x;
    cout << "Введите размерность массива"<<endl;
    cin >> m >> n;
    x=first(m, n);
    second(m, n, x);
    third(m, x);
    getch();
    return 0;
}
Выдает ошибку: "Необработанное исключение типа "System.AccessViolationException" произошло в LR3_1.exe
Дополнительные сведения: Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена."

Благодарю за любую помощь.

Что интересно, если вводить одинаковое число строк и столбцов -- все работает. Если же число отличается -- ошибка.

Добавлено через 1 час 38 минут
Тема закрыта. Разобрался.

C++
1
2
3
arr[i][m] += arr[i][j];
arr[n][j] += arr[i][j];
arr[m][n] += arr[i][j];
Элементарно попутал число столбцов и число строк m и n.

Вот правильно:
C++
1
2
3
arr[i][n] += arr[i][j];
arr[m][j] += arr[i][j];
arr[m][n] += arr[i][j];
Может быть кому-то пригодится
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.12.2014, 00:39
Ответы с готовыми решениями:

Строка: Получить длину строки, не пользуясь библиотечными функциями...
Напишите функцию для измерения длины строки, не пользуясь библиотечными функциями.

Передача массива данных в Excel или создание двумерного динамического массива
Нашел на просторах вот такое: Dim oExcel As Object Dim oBook As Object Dim oSheet As...

Нахождение суммы элементов каждой строки ступенчатого массива пользуясь библиотечными методами или Linq
Доброго времени суток! У меня есть следующий ступенчатый массив A1: char A1 = new...

Создание двумерного массива с элементами, зависящими от размера массива.
Помогите, пожалуйста решить задачу следующего характера на C: пользователь вводит размер массива...

0
27.12.2014, 00:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.12.2014, 00:39
Помогаю со студенческими работами здесь

создание двумерного массива
4 3 2 1 3 2 1 2 2 1 2 3 1 2 3 4 Код не получается сюда кинуть, но файл кинул. помогите найти...

Создание двумерного массива - C++
Здравствуйте! Не могу решить задачу: Напишите программу, которая создает двухмерный массив и...

Создание двумерного массива
int Mass_create() { for (int i = 0; i &lt; n; ++i) { for (int j = 0; j &lt; m; ++j) { ...

Создание двумерного массива
По задаче (Прата) требуется создать пользователем вводимое количество строк, каждая из которых...

Создание двумерного массива
Помогите создать массив вот с такими значениями : -2 5 76 -32 0 89 -9 4 0 0 -21 45 4 -6 7 И...

Создание двумерного массива
Создать массив..помогите пятая строка не отображается ($z = array('Олег','Нестеров');)..что не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru