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

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

Восстановить пароль Регистрация
 
fies
1 / 1 / 0
Регистрация: 03.08.2013
Сообщений: 23
25.06.2014, 21:44     Доделать код. Тема массивы. Нужно использовать массив для хранения ответа #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++
Использовать в качестве контейнера для хранения данных динамические массивы C++
Массивы и указатели (нужно передать массив I[10] в массив J[10] в обратной последовательности) C++
C++ Нужно доделать код! Исключить из дерева сортировки число "2"
Массивы: исправить, доделать, добавить нахождение среднего рейтинга по каждому предмету для всех студентов C++
C++ Как организовать массив для хранения данных?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Хедин
 Аватар для Хедин
73 / 68 / 36
Регистрация: 17.05.2014
Сообщений: 301
25.06.2014, 21:55     Доделать код. Тема массивы. Нужно использовать массив для хранения ответа #2
fies, находите самую длинную серию, затем пробегаете по массиву и, если столбец подходит по эту длинную серию, выводите его номер
Yandex
Объявления
25.06.2014, 21:55     Доделать код. Тема массивы. Нужно использовать массив для хранения ответа
Ответ Создать тему
Опции темы

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