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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
EMTEC
1 / 1 / 0
Регистрация: 29.10.2011
Сообщений: 110
26.03.2012, 21:44     Определить количество различных элементов матрицы #1
Помогите ,пожалуйста ,реализовать программу на языке Си . Определить количество различных элементов матрицы С (повторяющиеся элементы считать один раз).Если можно с коментариями в коде для понимания .
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5946 / 5551 / 1784
Регистрация: 18.12.2011
Сообщений: 14,179
Завершенные тесты: 1
26.03.2012, 21:55     Определить количество различных элементов матрицы #2
См. например
Определить количество различных эле-ментов в массиве
-=ЮрА=-
Заблокирован
Автор FAQ
27.03.2012, 17:30     Определить количество различных элементов матрицы #3
jeka061288, вот и весь алгоритм
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
#include <stdio.h>//printf scanf
#include <stdlib.h>//malloc system rand srand
#include <time.h>  //time()
 
int main()
{
    int flag = 0;//ÏåðåìåГ*Г*Г*Гї ГґГ«Г*ГЈ Г±ГЁГЈГ*Г*ëèçèðóþùГ*Гї
    //âñòðå÷Г*ëîñü ëè Г¤Г*Г*Г*îå ÷èñëî ëåâåå ГІГҐГЄГіГ№Г№ГҐГ© ïîçèöèè
    int i, j, n = -1, m = 1;
    int * arr= NULL;//ÓêГ*Г§Г*òåëü Г*Г* Г*Г*Гё Г¬Г*Г±Г±ГЁГў
    //ГќГІГЁГ¬ öèêëîì èçáåãГ*ГҐГ¬ Г*åêîððåêòГ*îãî ââîäГ*
    while(n < 1)
    {
        printf("Enter number of elements : ");
        scanf("%d",&n);
    }
    //Ïðîáóåì âûäåëèòü ГЇГ*ìÿòü ïîä Г¬Г*Г±Г±ГЁГў
    if(!(arr = (int *)malloc(n*sizeof(int))))
        printf("Allocation memory error\n");
    else
    {
        srand(time(0));//ГЌГіГ¦Г*Г® äëÿ ГЈГҐГ*ГҐГ°Г*öèè ñëó÷. Г·ГЁГ±ГҐГ«
        printf("Generated array\n");
        for(i = 0; i < n; i++)
        {
            //ГѓГҐГ*åðèðóåì ñëó÷ Г·ГЁГ±Г«Г* îò -5 äî 5
            arr[i] = rand()%10 - 5;
            printf("%d ",arr[i]);
        }
        printf("\nDifferent elements in array\n");
        printf("%d ",arr[0]);//Г‚ ëþáîì ñëó÷Г*ГҐ ïåðâûé ýëåìåГ*ГІ
        //ГўГ±ГҐГЈГ¤Г* ГЇГҐГ·Г*ГІГ*ГҐГ¬(Г¬Г*Г±Г±ГЁГў ìîæåò áûòü Г¤Г*æå Г¤Г*æå ГЁГ§
        //îäГ*ГЁГµ ГЁ ГІГҐГµ æå Г·ГЁГ±ГҐГ« ГЁ ГЇГ®Г*ГїГІГ*îå äåëî Г·ГІГ® ГЁ Гў ýòîì ñëó÷Г*ГҐ
        //Г*ГіГ¦Г*Г® ГЇГҐГ·Г*ГІГ*ГІГј 1-Г© ýëåìåГ*ГІ Г* îñòГ*ëüГ*ûå óæå Г*ГҐГІ
        for(i = 1; i < n; i++)
        {
            flag = 0;
            //äîï óñëîâèå && flag == 0 Г*ГіГ¦Г*Г® ÷òîáû 
            //Г*ГҐ ïåðåðГ*ГЎГ*òûâГ*ГІГј Гў öèêëå, ìîæГ*Г® áûëî ГЎГ»
            //ïîéòè ÷åðå break Г*Г® Гї Г*ГҐ ëþáëþ ïðåðûâГ*ГІГј öèêëû
            for(j = 0; j < i && (flag == 0); j++)
            {
                if(arr[i] == arr[j])
                    flag = 1;
            }
            if(flag == 0)//ГІ.ГҐ. ëåâåé Г¤Г*Г*Г*îãî ýëåìåГ*ГІГ* Г*ГҐГІ
            {
                m = m + 1;//Óâåëè÷èâГ*ГҐГ¬ Г±Г·ВёГІГ·ГЁГЄ Г°Г*çëè÷Г*ûõ ýëåìåГ*òîâ
                printf("%d ",arr[i]);
            }
        }
        printf("\nArray contains from %d different numbers\n",m);
        free((void *)arr);//Г—ГЁГ±ГІГЁГ¬ ГЇГ*ìÿòü
    }
    system("pause");
    return 0;
}
Миниатюры
Определить количество различных элементов матрицы  
EMTEC
1 / 1 / 0
Регистрация: 29.10.2011
Сообщений: 110
27.03.2012, 17:35  [ТС]     Определить количество различных элементов матрицы #4
Благодарю Вас !Спрашиваю для общего свего развития - Память чистить (free((void *)arr);//Чистим память) желательно,обязательно, всегда или в каких случаях ?
-=ЮрА=-
Заблокирован
Автор FAQ
27.03.2012, 17:43     Определить количество различных элементов матрицы #5
Цитата Сообщение от jeka061288 Посмотреть сообщение
желательно,обязательно, всегда или в каких случаях ?
- если алгоритм работает один раз то необязательно после передачи main ОС возвращаемого значения(т.е. после отработки main) ОС добросовестно подчищает за программой все хвосты, так что очистка необязательна. Если же в программе память должна выделяться многократно то чистка обязательна(за редким исключением), иначе засоряем "неуничтоженными остатками массивов и строк" оперативное пространство
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
27.03.2012, 17:44     Определить количество различных элементов матрицы #6
jeka061288, чистить память нужно, если она была выделена динамически; общее правило — если выделил память, ее нужно потом освободить. При этом приводить указатели необязательно.
-=ЮрА=-
27.03.2012, 17:51
  #7

Не по теме:

Nameless One, если отрабатываем 1 раз да ещё в примитивном алгоритме то чистить память необязательно - ОС тоже можно дать поработать

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.03.2012, 17:53     Определить количество различных элементов матрицы
Еще ссылки по теме:

Определить количество различных элементов матрицы C++
C++ Матрицы. Определить количество различных значений
C++ Дан двумерный массив. Определить количество различных элементов в нем

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

Или воспользуйтесь поиском по форуму:
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
27.03.2012, 17:53     Определить количество различных элементов матрицы #8
-=ЮрА=-, необязательно, да, это в моем сообщении подразумевалось
Yandex
Объявления
27.03.2012, 17:53     Определить количество различных элементов матрицы
Ответ Создать тему
Опции темы

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