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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
vikky
0 / 0 / 0
Регистрация: 07.10.2014
Сообщений: 41
#1

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

19.11.2014, 18:54. Просмотров 321. Ответов 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++ Динамический массив указателей на объекты
Динамический массив указателей C++
C++ Динамический массив указателей на объекты класса
Динамический массив указателей на структуру C++
C++ Как сделать динамический массив из указателей?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nosey
 Аватар для Nosey
1203 / 370 / 106
Регистрация: 22.10.2014
Сообщений: 813
Завершенные тесты: 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     Динамический массив с использованием указателей
Ответ Создать тему
Опции темы

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