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

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

Войти
Регистрация
Восстановить пароль
 
Hitlok
0 / 0 / 0
Регистрация: 16.05.2011
Сообщений: 5
#1

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

20.09.2011, 22:27. Просмотров 359. Ответов 4
Метки нет (Все метки)

Суть задания: дана непрямоугольная матрица(в каждой строке разное кол-во элементов). Необходимо вывести в другую строку число уникальных элементов. Например вводим:
1 2 3
1 1 1 2
1 3 3 2 3
Получаем: 3 2 3.
Если будет не трудно, подскажите, почему если вводить в строку только одинаковые эл-ты прога выдаст неверный результат.
Ну и конечно же буду благодарен за все замечания по коду
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
# include <iostream>
using namespace std;
struct MxLine {
    int length_of_line;         // длина строки
    int *line;                  // ук-ль на начало строки
};
struct Matrix {
    MxLine *mxline;             // ук-ль на массив строк
    int count_of_rows;           // количество строк      
};
void create_matr(Matrix &matr);
void print_matr(Matrix &matr);
void find_vector(Matrix &matr);
void delete_matr(Matrix &matr);
void print_menu(Matrix &matr);
int main() {
    Matrix matr = {0, 0};
    print_menu(matr);
    //create_matr(matr);
    //print_matr(matr);
    //find_vector(matr);
    //system("pause");
    return 0;
}
void create_matr(Matrix &matr) {
    cout << "Input count of rows: ";
    cin >> matr.count_of_rows;
    matr.mxline = new MxLine[matr.count_of_rows];
    for (int i = 0; i < matr.count_of_rows; i++) {
        cout << "Input length of line " << i << ": ";
        cin >> matr.mxline[i].length_of_line;
        matr.mxline[i].line = new int[matr.mxline[i].length_of_line];
        for(int j = 0; j < matr.mxline[i].length_of_line; j++) {
            cout << "Input matr[" << i << "]" << "[" << j << "]" << ": ";
            cin >> matr.mxline[i].line[j];    
        }       
    }
    cout << endl;        
}
void print_matr(Matrix &matr) {
    cout << "Basic matrix: " << endl;
    for (int i = 0; i < matr.count_of_rows; i++) {
        for (int j = 0; j < matr.mxline[i].length_of_line; j++) {
            cout << matr.mxline[i].line[j] << " ";
        }
        cout << endl;
    }
}
void find_vector(Matrix &matr) {
    int k = 0;
    int length = 0;
    int *vec = new int[k];
        for (int i = 0; i < matr.count_of_rows; i++) {
            length = matr.mxline[i].length_of_line;
            for (int j = 0; j < matr.mxline[i].length_of_line; j++) {
                for (int l = j + 1; l < matr.mxline[i].length_of_line; l++) {
                    if (matr.mxline[i].line[j] == matr.mxline[i].line[l]) {
                        length--;
                }
            }
        }
        vec[k] = length;
        k++;
    }
    cout << endl;
    cout << "Vector: " << endl << endl;
    for (int i = 0; i < k; i++) {
        cout << vec[i] << " ";
    }
    vec = 0;
    cout << endl;
    cout << endl;
}
void delete_matr(Matrix &matr) {
    for (int i = 0; i < matr.count_of_rows; i++ ) {
        delete[] matr.mxline[i].line;
    }
    delete[] matr.mxline;
    matr.count_of_rows = 0;
    matr.mxline = 0;
}
void print_menu(Matrix &matr) {
    cout << endl;
    char choice = '0';
    do {
        cout << "1: Create new matrix" << endl;
        cout << "2: Print basic matrix" << endl;
        cout << "3: Print vector" << endl;
        cout << "4: Create and print new matrix, print vector" << endl;
        cout << "0: Exit" << endl;
        cout << "Your choice: ";
        cin >> choice;
        switch(choice) {
        case '1': create_matr(matr);
                  break;
        case '2': print_matr(matr);
                  break;
        case '3': find_vector(matr);
                  delete_matr(matr);
                  break;
        case '4': create_matr(matr);
                  print_matr(matr);
                  find_vector(matr);
                  delete_matr(matr);
                  break;
        case '0': break;
        default: cout << "It's wrong choice, try again" << endl;
        }
    }
    while (choice != '0');
    cout << endl << endl;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.09.2011, 22:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Оцените код нахождения числа уникальных элементов строк матрицы (C++):

Функция для нахождения уникальных элементов массива - C++
Есть функция на JS, которой передается двумерный символьный массив. Она возвращает символы без повторений: function getLetters(a) { ...

Определить числа равные разностям наибольших и наименьших значений элементов строк двумерной матрицы - C++
Дана действительная матрица размером n×m. Определить числа b0, ..., bn-1, равные соответственно разностям наибольших и наименьших значений...

Массив: Найти среднее арифметическое элементов матрицы и сумму элементов тех строк матрицы, в которых отрицателен элемент главной диагонали. - C++
Ребят не понимаю я с++ Дали создать программу Помогите пожалуйста Найти среднее арифметическое элементов матрицы и сумму элементов...

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

Добавить шаблоны в программу нахождения количество строк и максимального из чисел матрицы - C++
Всем привет, я уже как то спрашивала про шаблоны функции, спасибо Вам кто помог, но не могу я никак эту прогу сделать чтоб она работала с...

Код для нахождения определителя матрицы N на N исключением строки и столбца - C++
Подскажите пожалуйста код для нахождения определителя матрицы N на N исключением строки и столбца

4
-=ЮрА=-
Заблокирован
Автор FAQ
21.09.2011, 09:51 #2
Цитата Сообщение от Hitlok Посмотреть сообщение
дана непрямоугольная матрица(в каждой строке разное кол-во элементов)
- матрица подразумевает одинаковое число столбцов по всем строкам
к тому же непонятно почему

Цитата Сообщение от Hitlok Посмотреть сообщение
Получаем: 3 2 3.
а не 1 2 3???Что подразумевается под уникальной строкой???
0
accept
4825 / 3246 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
21.09.2011, 10:04 #3
Цитата Сообщение от Hitlok
Необходимо вывести в другую строку число уникальных элементов.
читаешь числа в массив
сортируешь массив
считаешь, сколько раз a[i] != a[i + 1]
0
hakerok115
0 / 0 / 0
Регистрация: 08.03.2010
Сообщений: 57
21.09.2011, 16:43 #4
библиотеку .h ставь это на визуале работает только!
0
Nameless One
21.09.2011, 16:45     Оцените код нахождения числа уникальных элементов строк матрицы
  #5

Не по теме:

Цитата Сообщение от hakerok115 Посмотреть сообщение
библиотеку .h ставь это на визуале работает только!
если в твоем компиляторе не работает без ".h", то закопай его обратно

1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.09.2011, 16:45
Привет! Вот еще темы с ответами:

Как привести матрицу к верхнему треугольному виду? С++ (Имеется код нахождения нижней треуг. матрицы) - C++
Нахождение нижней треуг. матрицы: for (i=0, k=nn-1; i&lt;nn&amp;&amp;k&gt;=0; i++, k--) for (j=0; j&lt;i;...

Упорядочить по росту сумм элементов строк строки той матрицы, у которой больше нулевых строк - C++
Сидел думал над задачей почти всю ночь условия такие Даны три матрицы размером M x N. Упорядочить по росту сумм элементов строк строки ...

Отладить код нахождения минимального и максимального элемента в линейном массиве из 15 элементов - C++
#include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; #include&lt;conio.h&gt; int main () { clrscr (); int i; int min,max; int x; //ruchnoe...

Дан алгоритм нахождения обратной матрицы. По нему хочу написать код. Но непонятно по какому методу он работает. - C++
Сам алгоритм: (Вложенный файл) Помогите пожалуйста разобраться по какому алгебраическому методу он работает. Не могу понять где...


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

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

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