Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
blohamen
0 / 0 / 0
Регистрация: 29.04.2015
Сообщений: 16
1

Указатели и двумерные массивы

20.11.2016, 19:05. Просмотров 238. Ответов 0
Метки нет (Все метки)

Характеристикой строки целочисленной матрицы назовем сумму ее отрицательных четных элементов. Переставляя строки заданной матрицы, расположить их в соответствии с убыванием характеристик.Написать программу выделив под массив динамически память. Обращаться к элементам массива необходимо используя указатель.
Я решил разместить сумму эту в первом столбце и потом дальше заполнять массив. Сортировку выполняю по первому элементу.
Программа не понятно работает. Она присваивает сумму(например матрица 3 x 3) к первому и второму элементу последнего столбца. Уже 100500 вариантов перепробовал . Писал без указателей , все работает .
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
// 
#include "stdafx.h"
#include <stdlib.h>
 
 
void main()
{
    int *ptr, i, j, n, m; //объявляем переменные
    int sum;
    printf("n= "); // вводим кол-во строк и столбцов
    scanf_s("%d", &n);
    printf("m= ");
    scanf_s("%d", &m);
    ptr = (int*)calloc(n*(m+1), sizeof(int));
 
    for (i = 0; i < n; i++) // вводим массив
        for (j = 0; j < m; j++)
        {
            printf("el-nt[%d,%d] = ", i + 1, j + 1);
            scanf_s("%d", (ptr + i*m + (j + 1)));
 
        }
    printf("\n Matrix \n"); // выводим  матрицу
    for (i = 0; i < n; i++) {
        for (j = 1; j <= m; j++) {
            printf("%d  ", *(ptr + i*m + j));
        }
        printf("\n");
    }
 
    for (i = 0; i < n; i++) {    // Условие
        sum = 0;
        for (j = 1; j <= m; j++) {
            if ((*(ptr + i*m + j)) < 0 && *(ptr + i*m + j) % 2 == 0) {
                sum += *((ptr + i*m) + j);
            }
 
        }
        *(ptr + i*m) = sum; // Подставляем сумму каждой строки в каждый первый элемент строки
        printf("summa %d stroki = %d\n", i + 1, sum);
    }
 
    int x, y;
 
    //применяем пузырьковый метод сортировки
 
    for (y = 0; y < n; y++)
    {
    for (i = 0; i < (n - 1); i++)
        {
            if (*(ptr+ i*m) > *(ptr+(i+1)*m))
            {
                    for (j = 0; j <= m; j++)
                {
        x = *(ptr+i*m+j);
        *(ptr + i*m+j) = *(ptr +(i+1)*m+j);
        *(ptr + (i+1)*m+j) = x;
                }
            }
        }
    }
    
    printf("\n Matrix \n"); // выводим отсортированную матрицу
    for (i = 0; i < n; i++) {
        for (j = 0; j <= m; j++) {
            printf("%d  ", *(ptr + i*m + j));
        }
        printf("\n");
    }
 
 
    _gettch();
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2016, 19:05
Ответы с готовыми решениями:

Двумерные массивы объявить через указатели
поменяйте код так, чтобы массивы объявлялись как указатели, сам мучался долго, но не смог ...

Указатели и двумерные массивы! Очень интересно! Идентичность!
Короче, есть некоторый отрывок кода в котором роль играют указатели... Нужно толкование почему...

Массивы указателей и указатели на указатели
В чем разница между массивами указателей и указателями на указатели? Может, между ними такая же...

Функции и двумерные массивы
В одномерными я могу поступить так, и функция будет &quot;универсальна&quot; void fun(int target, int size)...

Массив указателей на двумерные массивы
Собственно вопрос в том, как его объявить о потом обращаться к элементам. У меня есть 8 массивов...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2016, 19:05

Указатели и массивы
День добрый всем. Есть такие интересующие меня строчки, которые я не могу до конца понять: ...

Найти ошибки в коде. Двумерные массивы
В двумерном массиве все элементы, стоящие выше максимального элемента, заменить на минимальный...

Многомерные массивы и указатели
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; int main() { int zippo = {{2,4},{6,8},{1,3},{5,7}};...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru