Форум программистов, компьютерный форум, киберфорум
Наши страницы

Поиск одинаковых элементов в строке матрицы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Пересечение массивов http://www.cyberforum.ru/cpp-beginners/thread1131864.html
#include<stdio.h> #include<math.h> #include<conio.h> #include <locale.h> void SozdanieMassiva(int *n, int array) { int i;
C++ Ошибка при компиляции в eclipse Всем привет. В программировании новичок. Поставил на днях Eclipse, настроил все в соответствии с этим туториалом. Однако нормально поработать с ним не получилось. При первой компиляции кода все... http://www.cyberforum.ru/cpp-beginners/thread1131855.html
Разработать статическую библиотеку для вычисления математического выражения C++
Задание: 1. Разработать статическую библиотеку для вычисления математического выражения. 2. Разработать динамическую библиотеку для вычисления математического выражения. Составить...
Невразумительная точка останова при выводе double C++
Возникла небольшая проблемка в коде: void main() { int* mass; mass=(int*)malloc(sizeof(int)); I_List lst; double first_time=clock(); for(int i=0;i<100000;i++) lst.lastadd(10); ...
C++ Функции mathlab в c++ http://www.cyberforum.ru/cpp-beginners/thread1131832.html
Добрый вечер. Кто-нибудь знает как можно рализовать mathlab функции regress (х, у, k) — вектор коэффициентов для построения полиномиальной регрессии данных; interp(s,x,y, t) — результат...
C++ Копирование слов из одного файла в другой Написать программу для автоматического копирования слов из одного файла в другой. Копировать следует только слова, содержащие четное количество букв. ну как записать с одного файла в другой я знаю... подробнее

Показать сообщение отдельно
Anton_Kretov
89 / 51 / 7
Регистрация: 26.06.2013
Сообщений: 179
31.03.2014, 13:00
Предположим, есть ряд: 5, 4, 2, 5, 5, 5, 2
Программа должна вывести 4? (4 пятерки) 2? (2 разных числа одинаковы) 6? (сумма 4-х пятерок и 2-х двоек)

Добавлено через 21 минуту
Если вас интересует ответ 2 (два разных числа одинаковые (т.е. в ряду есть такая последовательность - "...5...2..25..2...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
#include <iostream>
#include <cstdlib>
#include <ctime>
 
using namespace std;
 
const int NUMBER_OF_COLUMNS = 10, NUMBER_OF_FIELDS = 3;
 
int main()
{
    int mas[NUMBER_OF_FIELDS][NUMBER_OF_COLUMNS];
    int *arrayOfEqualNumbers = new int[NUMBER_OF_COLUMNS / 2];
    srand(time(NULL));
     for (int i = 0; i < NUMBER_OF_FIELDS; i++)
    {
        for (int j = 0; j < NUMBER_OF_COLUMNS; j++)
            mas[i][j] = rand() %10;
    }
 
    for(int i = 0; i < NUMBER_OF_FIELDS; i++) {
        for(int j = 0; j < NUMBER_OF_COLUMNS; j++) {
            cout << mas[i][j] << " ";
        }
        cout << "\n";
    }
 
    int numberOfEqualElements = 0;
    int numberOfField;
    cout << "Choose Field. Min - 0, Max - " << NUMBER_OF_FIELDS - 1 << ": "; cin >> numberOfField;
 
    bool firstTime = true;
    int a = 0;
    for(int i = 0; i < NUMBER_OF_COLUMNS; i++) {
        for(int j = i + 1; j < NUMBER_OF_COLUMNS; j++) {
                if((mas[numberOfField][i] == mas[numberOfField][j]) && firstTime) {
                    arrayOfEqualNumbers[a] = mas[numberOfField][j];
                    a++;
                    firstTime = false;
                }
                if(mas[numberOfField][i] == mas[numberOfField][j]) {
                    for(int k = 0; k <= a; k++) {
                        if(mas[numberOfField][j] == arrayOfEqualNumbers[k]) break;
                        if((k == a) && mas[numberOfField][j] != arrayOfEqualNumbers[k]) {
                            arrayOfEqualNumbers[a] = mas[numberOfField][j];
                            a++;
                            break;
                        }
                    }
                }
            }
        }
 
    cout << "\n" << "NumberOfEqualElements = " << a;
    return 0;
}
Добавлено через 1 минуту
Код непонятен - прокомментирую.

Добавлено через 18 минут
Дописал подсчет кол-ва повторений каждого числа в строке. Все прекрасно работает.
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
#include <iostream>
#include <cstdlib>
#include <ctime>
 
using namespace std;
 
const int NUMBER_OF_COLUMNS = 10, NUMBER_OF_FIELDS = 3;
 
int main()
{
    int mas[NUMBER_OF_FIELDS][NUMBER_OF_COLUMNS];
    int **arrayOfEqualNumbers = new int*[NUMBER_OF_COLUMNS / 2];
    for(int i = 0; i < NUMBER_OF_COLUMNS / 2; i++)
        arrayOfEqualNumbers[i] = new int[2];
 
    srand(time(NULL));
     for (int i = 0; i < NUMBER_OF_FIELDS; i++)
    {
        for (int j = 0; j < NUMBER_OF_COLUMNS; j++)
            mas[i][j] = rand() %10;
    }
 
    for(int i = 0; i < NUMBER_OF_FIELDS; i++) {
        for(int j = 0; j < NUMBER_OF_COLUMNS; j++) {
            cout << mas[i][j] << " ";
        }
        cout << "\n";
    }
 
    int numberOfEqualElements = 0;
    int numberOfField;
    cout << "Choose Field. Min - 0, Max - " << NUMBER_OF_FIELDS - 1 << ": "; cin >> numberOfField;
 
    bool firstTime = true;
    int numberOfEqualities = 0;
    for(int i = 0; i < NUMBER_OF_COLUMNS; i++) {
        for(int j = i + 1; j < NUMBER_OF_COLUMNS; j++) {
                if((mas[numberOfField][i] == mas[numberOfField][j]) && firstTime) {
                    arrayOfEqualNumbers[numberOfEqualities][0] = mas[numberOfField][j];
                    numberOfEqualities++;
                    firstTime = false;
                }
                if(mas[numberOfField][i] == mas[numberOfField][j]) {
                    for(int k = 0; k <= numberOfEqualities; k++) {
                        if(mas[numberOfField][j] == arrayOfEqualNumbers[k][0]) break;
                        if((k == numberOfEqualities) && mas[numberOfField][j] != arrayOfEqualNumbers[k][0]) {
                            arrayOfEqualNumbers[numberOfEqualities][0] = mas[numberOfField][j];
                            numberOfEqualities++;
                            break;
                        }
                    }
                }
            }
        }
 
    cout << "\n" << "NumberOfEqualElements = " << numberOfEqualities;
    cout << "\n" << "Now we will count each element...";
    for(int i = 0; i <= numberOfEqualities; i++) {
            int temp = 0;
        for(int j = 0; j < NUMBER_OF_COLUMNS; j++) {
            if(arrayOfEqualNumbers[i][0] == mas[numberOfField][j]) {
                temp++;
                arrayOfEqualNumbers[i][1] = temp;
            }
        }
    }
 
    for(int i = 0; i < numberOfEqualities; i++) {
        cout << "\n\n" << "So, number of " << arrayOfEqualNumbers[i][0] << " in this field is " << arrayOfEqualNumbers[i][1];
    }
 
    for (int i = 0; i < NUMBER_OF_COLUMNS / 2; i++)
        delete []arrayOfEqualNumbers[i];
 
    return 0;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru