0 / 0 / 0
Регистрация: 13.02.2013
Сообщений: 4
1

Подсчитать количество различных элементов

18.02.2013, 12:39. Показов 2896. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подсчитать количество различных элементов в каждой из строк двумерного массива. Определить функцию подсчета различных элементов.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.02.2013, 12:39
Ответы с готовыми решениями:

Подсчитать количество различных по значению элементов в массиве
Дан одномерный массив x, состоящий из 20 целых чисел. Составить программу,которая подчитывает...

Подсчитать количество различных элементов в очереди и вывести их на экран
1. Подсчитать число различных элементов в очереди и вывести их на экран 2. 3. На контрольной...

Подсчитать количество различных чисел среди элементов упорядоченного массива
Подскажите, как подсчитать кол-во различных чисел сред элементов массива. Т.е. если дан массив 2 2...

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

3
217 / 216 / 114
Регистрация: 14.01.2013
Сообщений: 459
18.02.2013, 13:51 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
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <time.h>
using namespace std;
#define n 2
#define m 3
 
int positive (int Y[n][m])
{
    int i,j,k=0;
    for (i=0;i<n;i++)
    {
        for (j=0;j<m;j++)
        {
            if (Y[i][j]>0)
            {
                k++;
            }
        }
    }
    return k;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    srand(time(NULL));
    int X[n][m],y,i,j;
    for (i=0;i<n;i++)
    {
        for (j=0;j<m;j++)
        {
            X[i][j]=rand()%201+(-100);
        }
    }
    for (i=0;i<n;i++)
    {
        for (j=0;j<m;j++)
        {
            cout<<X[i][j]<<" ";
        }
        cout<<endl;
    }
    y=positive(X);
    cout<<"number of positive elements "<<y<<endl;
    cin>>i;
 
    return 0;
}
0
0 / 0 / 0
Регистрация: 13.02.2013
Сообщений: 4
18.02.2013, 14:09  [ТС] 3
Разных элементов в каждой из строк. К примеру массив:

Ввод:
1 2 3 4 // тут 4 разных элемента
1 1 5 7 // тут 3
2 2 2 3 // тут 2
5 5 5 5 // тут 1
На выводе должно получится:
4 3 2 1

Полная программа выводит наибольшее количество разных элементов и наименьшее количество разных элементов.
То есть из ряда 4 3 2 1 из примера должно вывести 4 и 1
Не могу найти ошибку, не всегда правильно выводит.
Вот дошел до такого:
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
#include <iostream>
 
using namespace std;
 
int colmax(int* ar, int n)
{
    int c=0;
    int ccc=0;    
    int ii;
    for(int i=0; i<n; i++)
    {
        bool repeat=false;
        for(int j=i+1; j<n; j++)
        {
            if (ar[i] == ar[j])
                repeat = true;
        }
        if (!repeat)
            c++;
        for (ii=1; 1<c; ii++)
        {
            ccc++;
            c--;
        }
    }
    return ccc;
}
 
int colmin(int* ar, int n)
{
    int c=0;
    int ddd=0;    
    int ii;
    for(int i=0; i<n; i++)
    {
        bool repeat=false;
        for(int j=i+1; j<n; j++)
        {
            if (ar[i] == ar[j])
                repeat = true;
        }
        if (repeat)
            c++;
        for (ii=1; 1<c; ii++)
        {
            ddd++;
            c--;
        }
    }
    return ddd;
}
 
int main()
{
    int n;
    int m;
    int i=1;
    int j=1;
    int h;
    int g;   
    int o; 
    int max=0;
    int min=0;
    const int p=100;
    int ar[p];
    int masiv[100][100];
 
    setlocale(LC_ALL, "Russian");
 
    cout << "Введите количество строк n > " << endl;   
    cin >> n;
    cout << "Введите количество столбцов m > " << endl;
    cin >> m;   
 
    for (i=1; i<=n; i++)
    {
        for (j=1; j<=m; j++)
        {
            cout << "Введите элемент. Координаты: (" << i << ";" << j << ") >>>";
            cin >> masiv[i][j];
        }
    }
    h=0;    
    for (i=1; i<=n; i++)
    {
        for (j=1; j<=m; j++)
        {
            o=j;
            ar[o]=masiv[i][j];
        }
        h=colmax(ar, m);
        if (max<h)
        {
            max=h;
        }
    }
 
    g=0;    
    for (i=1; i<=n; i++)
    {
        for (j=1; j<=m; j++)
        {
            o=j;
            ar[o]=masiv[i][j];
        }
        g=colmin(ar, m);
        if (min<g)
        {
            min=g;
        }
    }
 
    for (i=1; i<=n; i++)
    {
        for (j=1; j<=m; j++)
        {
            cout.width(5);
            cout << masiv[i][j];
        }
        cout << endl;
    }
    cout << max << endl;
    cout << min << endl;
    system("pause");
    return 0;
}
0
Эксперт С++
177 / 163 / 21
Регистрация: 12.02.2013
Сообщений: 410
18.02.2013, 14:28 4
Смари, старина, так намного изящнее)))

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
#include <iostream>
#include <set>
 
template <class T> 
int NumberOfDifferentElements( T arr[], int arrSize )   
{
    std:: set<T> elements; // сюда сколько не пихай целых чисел, дубликатов не будет
    for( int i = 0; i < arrSize; i++ )  
    {   // вот и запихиваем сюда все элементы анализируемой строки матрицы
        elements.insert( arr[i] );
    }
    return elements.size(); // просто возвращаем кол-во элементов
}
 
int main()
{   // подготавливаем данные
    const int numberOfRows = 5;
    const int numberOfColumns = 5;
    int anArr[ numberOfRows ][ numberOfColumns ] = {
        1, 2, 3, 4, 5,
        1, 1, 5, 7, 3,
        2, 2, 2, 2, 3,
        3, 2, 1, 2, 4,
        2, 4, 5, 6, 7
    };
    
    for( int row = 0; row < numberOfRows; row++ )
    {   // обрабатываем теперь каждую строку и выводим результат:
        std:: cout << "row " << row << " contains " <<
            NumberOfDifferentElements( anArr[ row ], numberOfColumns ) <<
            " different values" << std:: endl;
    }
    return 0;
}

И функа работает для любых элементов, для которых определен оператор ==
1
18.02.2013, 14:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.02.2013, 14:28
Помогаю со студенческими работами здесь

Подсчитать количество различных цифр и вывести их
В записи данного натурального числа подсчитать количество различных цифр и вывести их. Есть...

Подсчитать количество различных невырожденных треугольников
Вводится набор целых чисел, которые являются длинами отрезков. Подсчитать количество различных...

Подсчитать количество различных пар букв
Помогите решить задачу, вернее переделать))) Во введенном слове подсчитать количество различных...

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru