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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Определить количество ведущих нулей старшего байта short int http://www.cyberforum.ru/cpp-beginners/thread789012.html
Представить программу, позволяющую для заданного целочисленного объекта short int определить количество ведущих нулей старшего его байта
C++ Используя одну переменную цикла укажите возможные способы объявления заголовка счетного цикла. Используя одну переменную цикла укажите возможные способы объявления заголовка счетного цикла. http://www.cyberforum.ru/cpp-beginners/thread789009.html
В строке, содержащей несколько слов, разделенных пробелом, переставить слова в обратной последовательности C++
Задание 1 В строке, содержащей несколько слов, разделенных пробелом, переставить слова в обратной последовательности. Входные данные: abcde fghik lmnop qrst uxyz Выходные данные: uxyz qrst lmnop fghik abcde
Массив строк. Вывести строки, в которых имеется самая длинная цепочка символа «*» C++
Написать программу, в которой с клавиатуры вводится до 10 символьных строк. Вывести строки, в которых имеется самая длинная цепочка символа «*». В каждой такой строке оставить только по одному символу «*». Нахождение и удаление символов оформить в виде функций.
C++ Массив символов (Подсчитать количество слов в строке, при условии, что в качестве разделителя слов используется один или несколько пробелов) http://www.cyberforum.ru/cpp-beginners/thread788968.html
Написать программу, в которой с клавиатуры вводится строка символов. Подсчитать количество слов в строке, при условии, что в качестве разделителя слов используется один или несколько пробелов. Подсчет количества слов в строке оформить в виде функции. Примечание: В качестве вводного материала к задаче поясняется, что: 1) слово представляет собой цепочку любых символов отличных от пробела; 2) в...
C++ Чтение/анализ строки текста Уважаемые господа, помогите советом. Нужно строку текста (из четного кол-ва символов) разбить в на фрагменты по два символа (задать программу для чтения строки). Как реализовать подобное? Комментариями сопровожу по необходимости, заранее спасибо) подробнее

Показать сообщение отдельно
XTwister
0 / 0 / 0
Регистрация: 13.02.2013
Сообщений: 4
18.02.2013, 14:09  [ТС]     Подсчитать количество различных элементов
Разных элементов в каждой из строк. К примеру массив:

Ввод:
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;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru