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

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

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

Доделать код. Тема массивы. Нужно использовать массив для хранения ответа - C++

25.06.2014, 21:44. Просмотров 188. Ответов 1
Метки нет (Все метки)

Дана целочисленная прямоугольная матрица. Определить:
1. количество строк, содержащих хотя бы один нулевой элемент;
2. номер столбца, в котором находится самая длинная серия одинаковых элементов.

Допустим вводим.
Матрица :
0 1 2
1 1 2
3 1 2
Выводит:
Количество строк, содержащих хотя бы один нулевой элемент : 1

Номер столбца, в котором самая длинная серия одинаковых элементов: 2 (А ДОЛЖНО ВЫВОДИТЬ: 2 3)

Не как не могу додуматься как сделать. Все остальное работает верно.

Сам код:

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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
#ifdef _DEBUG
#ifndef DBG_NEW
#define DBG_NEW new ( _NORMAL_BLOCK , __FILE__ , __LINE__ )
#define newDBG_NEW
#endif
#endif
#include <iostream>
#include <limits>
 
using namespace std;
int kolichestvo(int **a, int n, int m);
int nomer(int **a, int n, int m, bool &prov);
int main()
{
    setlocale(LC_CTYPE, "Russian");
    int n, i, m, j;
    bool prov;
    cout << "6 Лабораторная. Обработка числовых матриц. \n\n";
    cout << "Введите количество строк прямоугольной матрицы: ";
    cin >> n;
    cout << endl;
    while (cin.fail() || n <= 1)
    {
        cin.clear();
        cin.ignore(numeric_limits<streamsize>::max(), '\n');
        cout << "Ошибка! Попробуйте еще раз : ";
        cin >> n;
        cout << endl;
    }
    cout << "Введите количество столбцов прямоугольной матрицы: ";
    cin >> m;
    cout << endl;
    while (cin.fail() || n <= 1)
    {
        cin.clear();
        cin.ignore(numeric_limits<streamsize>::max(), '\n');
        cout << "Ошибка! Попробуйте еще раз : ";
        cin >> m;
        cout << endl;
    }
    while (cin.fail() || n==m )
    {
        cin.clear();
        cin.ignore(numeric_limits<streamsize>::max(), '\n');
        cout << "Введенны данные квадратной матрицы. Ошибка! Пожалуйста, введите данные прямоугольной матрицы : ";
        cin >> n;
        cin >> m;
        cout << endl;
    }
 
 
    int **a = new int *[n];
    for (i = 0; i < n; i++)
    {
        a[i] = new int[m];
        for (j = 0; j < m; j++)
        {
            cout << "Введите " << j + 1 << " элемент " << i + 1 << " строки матрицы: ";
            cin >> a[i][j];
            cout << endl;
            while (cin.fail())
            {
                cin.clear();
                cin.ignore(numeric_limits<streamsize>::max(), '\n');
                cout << "Ошибка! Попробуйте еще раз : ";
                cin >> a[i][j];
                cout << endl;
            }
        }
    }
 
    cout << "Матрица : \n";
    for (i = 0; i < n; i++)
    {
        for (j = 0; j< m; j++)
            cout << "  " << a[i][j] << "     ";
        cout << endl;
    }
    cout << endl << endl;
    if (kolichestvo(a, n, m))
        cout << "Количество строк, содержащих хотя бы один нулевой элемент : "
        << kolichestvo(a, n, m) << endl << endl;
    else
        cout << "Нет строк,содержащих хотя бы один нулевой элемент\n\n";
    if (nomer(a, n, m, prov))
        cout << "Номер столбца, в котором самая длинная серия одинаковых элементов: "
        << nomer(a, n, m, prov) << endl << endl;
    else
        cout << "Нет столбца с серией одинаковых элементов \n\n";
    delete[] a;
 
    system("pause");
    _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE);
    _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDOUT);
    _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_FILE);
    _CrtSetReportFile(_CRT_ERROR, _CRTDBG_FILE_STDOUT);
    _CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_FILE);
    _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDOUT);
    _CrtDumpMemoryLeaks();
    return 0;
}
 
 
int kolichestvo(int **a, int n, int m)
{
    int i, j, s = 0, Kol = 0;
    for (i = 0; i < n; i++)
    {
        for (j = 0; j<m; j++)
        {
            if (a[i][j] == 0)
            {
                s++;
            }
        }
        if (s)
        {
            Kol++;
            s = 0;
        }
    }
    return Kol;
}
int nomer(int **a, int n, int m, bool &prov)
{
    prov = false;
    int i, j, s, p = 0, b = 0, d = 0;
    for (j = 0; j<m; j++)
    {
        s = a[0][j];
        for (i = 1; i<n; i++)
        {
            if (a[i][j] == a[i - 1][j])
            {
                b++;
            }
        }
        if (b>d)
        {
            prov = true;
            d = b;
            b = 0;
            p = j + 1;
        }
    }
    if (prov)
        return p;
    else
        return prov = false;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.06.2014, 21:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Доделать код. Тема массивы. Нужно использовать массив для хранения ответа (C++):

Использовать в качестве контейнера для хранения данных динамические массивы - C++
Задача состоит в том, чтобы разработать программу, используя в качестве контейнера для хранения данных динамические массивы. В прошлой...

Создать класс, содержащий поля, которые можно использовать для хранения данных - C++
Создать класс &lt;имя класса&gt; (имя класса задается в соответствии с выбранным вариантом), содержащий поля, которые можно использовать для...

Преобразуйте массив (Использовать динамические массивы.) - C++
Использовать динамические массивы. Преобразуйте массив так, чтобы все положительные элементы массива стали отрицательными и наоборот, а...

Нужно доделать код! Исключить из дерева сортировки число "2" - C++
// аисд7.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; #include &lt;iostream&gt; /***********...

Реализуйте класс для хранения ФИО и номера телефона человека, класс для хранения даты рождения человека, а также класс для хранения ФИО и почтового ад - C++
Реализуйте класс для хранения ФИО и номера телефона человека, класс для хранения даты рождения человека, а также класс для хранения ФИО и...

Массивы: исправить, доделать, добавить нахождение среднего рейтинга по каждому предмету для всех студентов - C++
Исправьте ошибки. И еще надо добавить нахождение среднего рейтинга по каждому предмету для всех студентов. #include &quot;stdafx.h&quot; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Хедин
73 / 68 / 36
Регистрация: 17.05.2014
Сообщений: 301
25.06.2014, 21:55 #2
fies, находите самую длинную серию, затем пробегаете по массиву и, если столбец подходит по эту длинную серию, выводите его номер
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.06.2014, 21:55
Привет! Вот еще темы с ответами:

Какой массив использовать для хранения множества точек - C#
В общем задача у меня такая: надо нарисовать персонажа из точек и прямых (скелет типа), с последующим его редактированием (выбираем точку и...

Какой массив использовать для хранения больших объёмов информации? - C#
В целях саморазвития пишу программу для поиска дубликатов файлов по названию. Алгоритм типа такого: в отдельном потоке происходит запись...

Нужно разобраться тема: Двумерные массивы - Pascal
В задаче задается квадратная матрица NxN. Программа должна осуществлять ввод и печать исходной матрицы и возможно, дополнительных данных,...

Нужно разобраться тема: Одномерные массивы - Pascal
Дан одномерный массив из N элементов. Вычислить сумму квадратов чисел, больших заданного С; подсчитать количество неположительных...


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

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

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