0 / 0 / 0
Регистрация: 27.03.2014
Сообщений: 7
1

Указатели. Матрица и двойная косвенная адресация

16.12.2014, 04:34. Показов 1246. Ответов 5
Метки нет (Все метки)

При метке 4, косяк..не могу понять..что-то с указателем? Помогите пожалуйста..

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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include<stdio.h>
#include<locale.h>
#include<stdlib.h>
#include<string.h>
 
using namespace std;
 
int size_in_line();
int size_in_column();
void in_array(int**,int, int);
void out_array(int**,int, int);
 
void main()
{
    int f, k, z, N, M, m;
    int **A=NULL;
    setlocale(LC_ALL, "Russian");
    puts("Добро пожаловать!");
 
    do
    {
        puts("\nВыберите пункт меню");
        puts("1-ввести количество строк");
        puts("2 - ввести количество столбцов");
        puts("3 - ввести элементы матрицы");
        puts("4 - вывести исходную матрицу");
        puts("5 - обработать матрицу");
        puts("6 - вывести результат");
        puts("7 - справка");
        puts("0 - выход");
        scanf_s("%d", &m);
        system("cls");
        switch (m)
        {
        case 1: N = size_in_line();
            break;
        case 2: M=size_in_column(); break;
        case 3: in_array(A, N, M); break;
        case 4: out_array(A, N, M); break;
        case 5:
        case 6:
        case 0:
        default:;
        }
    } while (m != 0);
}
 
int size_in_line()
{
    int n;
    do
    {
        puts("Введите количество строк матрицы");
        scanf_s("%d", &n);
        if (n < 0) puts("Ошибка!");
    } while (n < 0);
    return n;
}
 
int size_in_column()
{
    int m;
    do
    {
        puts("Введите количество стролбцов матрицы");
        scanf_s("%d", &m);
        if (m < 0) puts("Ошибка!");
    } while (m < 0);
    return m;
}
 
void in_array(int **p,int n, int m)
{
    p = (int**)malloc(n*sizeof(int*));
    for (int i = 0; i < n; i++)
    {
        puts("Введите строку матрицы");
        *(p+i) = (int*)malloc(m*sizeof(int));
        for (int j = 0; j < m; j++)
            scanf_s("%d", p[i] + j);
    }
}
 
void out_array(int **p, int n, int m)
{
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
            printf("%7d", *(p[i] + j));
        printf("\n");
    }
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.12.2014, 04:34
Ответы с готовыми решениями:

Косвенная адресация
Как тут сделать обращение к элементам массива через косвенную адресацию?#include &lt;iostream&gt; /*...

Косвенная адресация объектов
Здравствуйте есть необходимость собрать адреса созданных объектов в массив количество их известно...

косвенная адресация
В ESI находится адрес начала строки mov start_adr, BYTE PTR ESI; почему на эту строку...

Косвенная адресация
здравствуйте, друзья! вопрос такой, есть таблица из 2ух столбцов: А - код товара, В -...

5
3174 / 1933 / 313
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
16.12.2014, 05:53 2
Цитата Сообщение от Tan972 Посмотреть сообщение
косяк
C++
1
p[i] + j
Сами придумали?
0
0 / 0 / 0
Регистрация: 27.03.2014
Сообщений: 7
16.12.2014, 12:44  [ТС] 3
Нет, преподаватель так пишет

Добавлено через 58 секунд
Цитата Сообщение от gazlan Посмотреть сообщение
Сами придумали?

Нет, преподаватель так пишет
0
Заблокирован
16.12.2014, 15:29 4
поставьте &

Добавлено через 29 секунд
C++
1
scanf_s("%d", p[i] + j);
замените на
C++
1
scanf_s("%d", &p[i] + &j);
1
3174 / 1933 / 313
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
16.12.2014, 16:12 5
Цитата Сообщение от Tan972 Посмотреть сообщение
преподаватель так пишет
И как, по-вашему, компилятор должен определять размерность матрицы?
0
2830 / 1639 / 253
Регистрация: 03.12.2007
Сообщений: 4,222
16.12.2014, 16:24 6
p - это int**, так что с
C++
1
p[i] + j
проблем никаких не вижу. Правда,
C++
1
&p[i][j]
было бы очевиднее, хотя по сути то же самое.
А вот то, что в in_array результат malloc записывается в локальную переменную p и никаким образом из функции не возвращается, - это проблема.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.12.2014, 16:24
Помогаю со студенческими работами здесь

Косвенная адресация
Составьте программу, которая пересылает содержимое регистра Dx в память. используйте косвенную...

Косвенная адресация в T-SQL
Опять я со своими проблемами… На этот раз у меня не база данных, а скорее БАНК данных, т.е....

Косвенная адресация процедур в VBA
Привет профессионалам, может не совсем обычные вопросы... 1.Можно ли релизовать это в VBA ссылки...

Пишу транслятор ассемблера, косвенная адресация
Пишу упрощенный транслятор ассемблера на Java(язык реализации не важен). Мой транслятор должен...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru