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

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

25.06.2014, 21:44. Просмотров 240. Ответов 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;
}
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.06.2014, 21:44
Ответы с готовыми решениями:

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

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

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

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

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

1
Хедин
74 / 69 / 55
Регистрация: 17.05.2014
Сообщений: 301
25.06.2014, 21:55 2
fies, находите самую длинную серию, затем пробегаете по массиву и, если столбец подходит по эту длинную серию, выводите его номер
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.06.2014, 21:55

Нужно доделать код (вывод сообщения)
У кого есть свойства MsgBox-ов т.е. Сhr(13) Сritical

Тема: Типизированный файл. Написать программу для хранения информации об успеваемости студентов
Написать программу для хранения информации об успеваемости студентов. Необходимо хранить номер...

Что лучше использовать для хранения переменной?
я не знаю как работает my.settings не обращается ли приложение к жесткому диску при вызове...


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

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

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