Форум программистов, компьютерный форум CyberForum.ru

Динамический массив с использованием указателей - C++

Восстановить пароль Регистрация
 
vikky
0 / 0 / 0
Регистрация: 07.10.2014
Сообщений: 41
19.11.2014, 18:54     Динамический массив с использованием указателей #1
Дан двумерный массив целых чисел размером , где m и n – заданные натуральные числа. Если в массиве есть такие две строки, что все элементы одного из них являются делителями всех элементов другого, поменять их местами (при наличии нескольких вариантов, рассматривать первые из найденных строк). Если подобных строк нет, выдать соответствующее сообщение. Воспользоваться динамическими массивами и продемонстрировать работу с указателями.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2014, 18:54     Динамический массив с использованием указателей
Посмотрите здесь:

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

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nosey
 Аватар для Nosey
1184 / 351 / 102
Регистрация: 22.10.2014
Сообщений: 786
Завершенные тесты: 2
19.11.2014, 23:30     Динамический массив с использованием указателей #2
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
#include <iostream>
#include <locale>
#include <fstream>
#include <iomanip> 
 
int main()
{
    std::ifstream in("input.txt");
    std::streambuf *cinbuf = std::cin.rdbuf();
    std::cin.rdbuf(in.rdbuf());
 
    std::locale::global(std::locale(""));
 
    int m, n;
    std::cout << "Введите размерность массивов (M и N)" << std::endl;
    std::cin >> m >> n;
    int *mas = new int[m * n];
    int *masAfterEnd = mas + m*n;
    std::cout << "Введите значения массива построчно" << std::endl;
    for (int *value = mas; value < masAfterEnd; ++value)
    {
        std::cin >> *value;
    }
 
    std::cout << "---------------" << std::endl;
    for (int *value = mas, i = 1; value < masAfterEnd; ++value, ++i)
    {
        std::cout << std::setw(3) << *value;
        if (i%m == 0) std::cout << std::endl;
    }
 
    bool isDivider;
    for (int i = 0; i < n; ++i)
    {
        for (int j = i+1; j < n; ++j)
        {
            int* row1 = mas + m*i;
            int* row2 = mas + m*j;
            isDivider = true;
            for (int* row1Value = row1, *row2Value = row2; row1Value < (row1 + m) && isDivider; ++row1Value, ++row2Value)
            {
                isDivider &= *row1Value%*row2Value == 0;
            }
            if (!isDivider)
            {
                isDivider = true;
                for (int* row1Value = row1, *row2Value = row2; row1Value < (row1 + m) && isDivider; ++row1Value, ++row2Value)
                {
                    isDivider &= *row2Value%*row1Value == 0;
                }
            }
            if (isDivider)
            {
                // Поменяем местами строки.
                for (int* row1Value = row1, *row2Value = row2; row1Value < (row1 + m) && isDivider; ++row1Value, ++row2Value)
                {
                    int temp = *row1Value;
                    *row1Value = *row2Value;
                    *row2Value = temp;
                }
                goto rowDividerBreakLabel;
            }
        }
    }
 
rowDividerBreakLabel:
 
    if (isDivider)
    {
        std::cout << "---------------" << std::endl;
        for (int *value = mas, i = 1; value < masAfterEnd; ++value, ++i)
        {
            std::cout << std::setw(3) <<*value;
            if (i%m == 0) std::cout << std::endl;
        }
    }
    else
    {
        std::cout << "Делителей не обнаружено" << std::endl;
    }
 
    system("pause");
    return 0;
}
файл input.txt
Код
5 5
10 10 10 10 10
9 9 9 9 9
8 8 8 8 8
7 7 7 7 7
5 5 5 5 5
Yandex
Объявления
19.11.2014, 23:30     Динамический массив с использованием указателей
Ответ Создать тему
Опции темы

Текущее время: 13:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru