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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 5.00
Lenex
0 / 0 / 0
Регистрация: 15.01.2013
Сообщений: 7
#1

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

15.01.2013, 21:27. Просмотров 1711. Ответов 15
Метки нет (Все метки)

Дана задача по СИ++

Задана матрица размером NхM. Определить количество различных
значений матрицы, т.е. повторяющиеся элементы считать один раз.



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
int main()
{
        double **a, s, rez;
        int i, j, n, m, k, g;
        printf("N = ");
        scanf("%d",&n);
        printf("M = ");
        scanf("%d",&m);
        a = new double*[m];
        for(i=0; i<n;i++)
                a[i] = new double[m];
    puts("\nA:");
        for(i=0; i<n;i++)
                for(j=0; j<m;j++) scanf("%lf", &a[i][j]);
        rez = 0;
        for (i=0;i<n;i++)
                for (j = 0;j<m;j++)
                {
                if (a[i][j]!=1000000)
                {
                rez++;
                for (k = 0;k < n;k++)
                        for(g = 0;g < m;g++)
                                if ((a[k][g]==a[i][j])&&(k!=i||g!=j))
                                        a[k][g]=1000000;
                a[i][j] = 1000000;
                }
                }
        printf("REZ = %4.0lf",rez);
        delete []a;
        puts("\n delete !");
        getch();
 
        return 0;
}
//---------------------------------------------------------------------------

вот её код реализован - верно.
Можете помочь подписать его?( и понять что там делается
к примеру : scanf("%d",&n); - ввод с клавиатуры ("n") . Разобрать условие( Заранее спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.01.2013, 21:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Матрицы. Определить количество различных значений (C++):

Определить количество различных значений матрицы - C++
Помогите пожалуйсто с задачкой написать программу по обработке динамических массивов, размеры массивов водить с клавиатуры. Задана...

Определить количество различных элементов матрицы - C++
помогите ребята! Задана символьная матрица размером N×M, N,M&lt;50. Определить k - количество различных элементов матрицы (т.е....

Определить количество различных элементов матрицы - C++
помогите пожалуйста ребята! Задана символьная матрица размером N×M, N,M&lt;50. Определить k - количество различных элементов матрицы (т.е....

Определить количество различных элементов матрицы - C++
//Помогите разобраться в &quot;рабочей&quot; программе.(комментариями!!) //Условие задачи:Задана символьная матрица размером NxM. Определить...

Определить количество различных элементов матрицы - C++
Помогите ,пожалуйста ,реализовать программу на языке Си . Определить количество различных элементов матрицы С (повторяющиеся элементы...

Определить количество различных элементов матрицы - C++
Ну пожалуйста Помогите ребята!Динамический массив. Задана символьная матрица размером N×M, N,M&lt;50. Определить k - количество различных...

15
v.a.l.i.d
413 / 378 / 10
Регистрация: 21.09.2012
Сообщений: 913
15.01.2013, 21:32 #2
Отформатируйте код. Кнопка C++
1
Lenex
0 / 0 / 0
Регистрация: 15.01.2013
Сообщений: 7
15.01.2013, 21:36  [ТС] #3
я не знаю , как это сделать((
0
Евгений89
99 / 99 / 9
Регистрация: 17.04.2011
Сообщений: 554
Завершенные тесты: 2
15.01.2013, 21:40 #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
35
36
int main()
 {
 double **a, s, rez;
 int i, j, n, m, k, g;
 printf("N = ");
 scanf("%d",&n);
 printf("M = ");
 scanf("%d",&m);
 a = new double*[m];
 for(i=0; i<n;i++)
 a[i] = new double[m];
 puts("\nA:");
 for(i=0; i<n;i++)
 for(j=0; j<m;j++) scanf("%lf", &a[i][j]);
 rez = 0;
 for (i=0;i<n;i++)
 for (j = 0;j<m;j++)
 {
 if (a[i][j]!=1000000)
 {
 rez++;
 for (k = 0;k < n;k++)
 for(g = 0;g < m;g++)
 if ((a[k][g]==a[i][j])&&(k!=i||g!=j))
 a[k][g]=1000000;
 a[i][j] = 1000000;
 }
 }
 printf("REZ = %4.0lf",rez);
 delete []a;
 puts("\n delete !");
 getch();
 
 return 0;
 }
 //---------------------------------------------------------------------------
1
Lenex
0 / 0 / 0
Регистрация: 15.01.2013
Сообщений: 7
15.01.2013, 21:41  [ТС] #5
спасибо)) Теперь , если кто может помогите пжл. подписать его(
0
Евгений89
99 / 99 / 9
Регистрация: 17.04.2011
Сообщений: 554
Завершенные тесты: 2
15.01.2013, 21:41 #6
Цитата Сообщение от Lenex Посмотреть сообщение
я не знаю , как это сделать((
на будущее в сообщениях нажимаешь С++ и между этими блоками вставляешь свой код
1
Lenex
0 / 0 / 0
Регистрация: 15.01.2013
Сообщений: 7
15.01.2013, 21:55  [ТС] #7
Кто знает, помогите растолковать условие,плз
0
Евгений89
99 / 99 / 9
Регистрация: 17.04.2011
Сообщений: 554
Завершенные тесты: 2
15.01.2013, 21:58 #8
прокоментировать каждую строку чтоли?
0
v.a.l.i.d
413 / 378 / 10
Регистрация: 21.09.2012
Сообщений: 913
15.01.2013, 21:58 #9
Сейчас напишу комментарий
0
Lenex
0 / 0 / 0
Регистрация: 15.01.2013
Сообщений: 7
15.01.2013, 22:16  [ТС] #10
Ну до заполнения массива числами я понимаю)) но вот условие совсем не понимаю, что они по действиям делают, чтобы в результате выдавала число разных чисел в массиве.

Добавлено через 16 минут
подпишите ?(
0
v.a.l.i.d
413 / 378 / 10
Регистрация: 21.09.2012
Сообщений: 913
15.01.2013, 22:23 #11
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
rez = 0;
for (i=0; i<m; i++)         // цикл по строкам
    for (j = 0; j<n; j++)   // цикл по столбцам
    {
        if (a[i][j]!=1000000)   // если значение в a[i][j] не равно 1000000 то
            rez++;              // res увеличивает на 1
 
        // эти циклы повторно проходят всю матрицу
        for (k=0; k<m; k++)
            for(g=0; g<n; g++)
                if ((a[k][g]==a[i][j])&&(k!=i || g!=j))
                {
                    a[k][g]=1000000;
                }
    }
Пытаюсь разобраться и не могу

Добавлено через 29 секунд
Не пойму как она считает количество разных чисел в матрице
1
Lenex
0 / 0 / 0
Регистрация: 15.01.2013
Сообщений: 7
15.01.2013, 22:25  [ТС] #12
хех,спасибо, за помощь хоть какую) а может можно тогда по другому как-нибудь решить ее?(
0
v.a.l.i.d
413 / 378 / 10
Регистрация: 21.09.2012
Сообщений: 913
15.01.2013, 22:28 #13
Цитата Сообщение от Lenex Посмотреть сообщение
а может можно тогда по другому как-нибудь решить ее?(
А зачем? Я вот проверил ее у себя. И ведь правильно все считает.

Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <conio.h>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    double **a, s, rez;
    int i, j, n, m, k, g;
 
    printf("M = ");  cin >> m; //scanf("%d",&m);
    printf("N = ");  cin >> n; //scanf("%d",&n);
 
    // выделение памяти для двумерного массива
    a = new double*[m]; 
    for(i=0; i<m;i++)
        a[i] = new double[n];
 
    puts("\nA:");
 
    // заполнение массива
    for(i=0; i<m;i++)
        for(j=0; j<n; j++) 
            cin >> a[i][j];
            //scanf("%lf", &a[i][j]);
 
    rez = 0;
    for (i=0;i<m;i++)
        for (j = 0;j<n;j++)
        {
            if (a[i][j]!=1000000)
                rez++;
 
            for (k=0; k<m; k++)
                for(g=0; g<n; g++)
                    if ((a[k][g]==a[i][j])&&(k!=i || g!=j))
                    {
                        //rez++;
                        a[k][g]=1000000;
                    }
        }
 
 
    //printf("REZ = %4.0lf",rez);
    cout << "REZ = " << rez << endl;
 
    for (int i=0; i<m; i++)
        delete [] a[i];
    delete [] a;
 
    puts("\n delete !");
 
    getch();
 
    system("pause");
    return 0;
}


Некоторые ошибки исправил и немного изменил
1
Lenex
0 / 0 / 0
Регистрация: 15.01.2013
Сообщений: 7
15.01.2013, 22:30  [ТС] #14
спасибо,большое) что уделил время)
0
v.a.l.i.d
413 / 378 / 10
Регистрация: 21.09.2012
Сообщений: 913
15.01.2013, 22:32 #15
Да не за что) Может кто другой решит
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.01.2013, 22:32
Привет! Вот еще темы с ответами:

Определить количество различных эл-тов символьной матрицы - C++
Задана символьная матрица NxM. Определить количество различных элементов матрицы. Т.е. повторяющиеся элементы считать один раз. Прогу...

Динамический массив. Определить количество различных элементов матрицы - C++
Помогите ребята! Задана символьная матрица размером N×M, N,M&lt;50. Определить k - количество различных элементов матрицы (т.е....

Определить количество столбцов и строк матрицы не содержащих отрицательных значений - C++
Определите количество столбцов и количество строк двумерного массива, в которых не содержится ни одного отрицательного элемента. Заранее...

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


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
15.01.2013, 22:32
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru