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

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

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

При повторении элементов в новом массиве, оставлять только первый из них - C++

24.01.2014, 11:27. Просмотров 164. Ответов 0
Метки нет (Все метки)

Условие: Даны натуральные числа n и m и целочисленный массив размера mn. Найти сумму наибольших значений элементов его строк. Сформировать новый массив из суммировавшихся значений. При повторении элементов в новом массиве, оставлять только первый из них. Воспользоваться динамическими массивами и продемонстрировать работу с указателями.
Решение:
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
#include <iostream>
 
using namespace std;
 
int max(int *pm, int n)
{
int max, i;
 
max=*pm;
for(i=1;i<n;i++)
if(*(pm+i)>max)
max=*(pm+i);
return max;
}
int uniq_count(int *pm, int n)
{
int i, j, f, k, count;
 
count=0;
for(i=0;i<n-1;i++)
{
f=0;
for(j=i+1;j<n;j++)
if(*(pm+i)==*(pm+j))
f=1;
if(f==0)
count++;
}
 
return count;
}
 
void uniq_array(int *pm,int n,int *pun)
{
int i, j, f, k;
k=0;
for(i=0;i<n-1;i++)
{
f=0;
for(j=i+1;j<n;j++)
if(*(pm+i)==*(pm+j))
f=1;
if(f==0)
*(pun+k++)=*(pm+i);
}
}
 
int main()
{
setlocale(LC_ALL, "Russian"); 
int m, n, **pmt, *pm, *pun, i, j, k, sum;
cout << "Введите количество строк:" << endl;
cin >> m;
cout << "Введите количество столбцов:" << endl;
cin >> n;
 
pmt = new int *[m];
for(i = 0; i < m; i++)
pmt[i] = new int [n];
 
pm = new int [m];
 
cout << "Введите " << m*n << " елемента матрицы:" << endl;
for(i = 0; i < m; i++)
for(j = 0; j < n; j++)
cin >> pmt[i][j];
 
cout<<"Сформирированая матрица:"<<endl;
for(i = 0; i < m; i++)
{
for(j=0;j<n;j++)
cout<<"\t"<<pmt[i][j];
cout<<endl;
}
 
for(i=0;i<m;i++)
pm[i]=max(pmt[i],n);
 
cout << "Максимальные элементы в строках:" << endl;
for(i = 0; i < m; i++)
cout << "\t" << pm[i];
cout << endl;
 
sum = 0;
for(i = 0; i < m; i++)
sum+=pm[i];
 
cout << "Сумма максимальных элементов: "<< sum << endl;
 
k = uniq_count(pm,n);
pun = new int [k];
uniq_array(pm,n,pun);
 
cout << "Массив уникальных максимумов строк" << endl;
for(i = 0; i < k; i++)
cout << "\t" << pun[i];
cout << endl;
 
for(i = 0; i < m; i++)
delete [n] pmt[i];
delete [m] pmt;
 
delete [m] pm;
 
delete [k] pun;
 
system("pause");
return 0;
}
Вопрос правильно реализована задача или нет? Да и что скажете о коде, есть какие небудь оплошности?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2014, 11:27     При повторении элементов в новом массиве, оставлять только первый из них
Посмотрите здесь:

В новом массиве найдите и выведите на экран сумму элементов, порядковый номер которых делится на 3 - C++
Элементы случайно заполненного одномерного массива d преобразуйте по формуле d = exp(i/d). В новом массиве найдите и выведите на экран...

Как запретить добавление данных в массив при повторении? С++ - C++
Стоит задача: ...Реализовать функцию добавления данных в массив. Если введена информация об авторе книги и ее названии, которые уже...

Все элементы заданной матрицы, попадающие в интервал [2, 9] переписать в новый массив. Подсчитать количество элементов в новом массиве - C++
Дана матрица G . Все элементы, попадающие в интервал переписать в новый массив. Подсчитать количество элементов в новом массиве.

Из группы подряд идущих элементов с одинаковыми значениями оставить только первый - C++
Почему не работает программа? не находит сторожа, хотя я их объявляю) //Дан список из n целых чисел a1,a2,..,an. Из группы подряд идущих...

Из группы подряд идущих элементов массива с одинаковыми значениями оставить только первый - C++
Доброй ночи.) Дан список из n целых чисел a1,a2,...,an. Из группы подряд идущих элементов с одинаковыми значениями оставить только первый....

В двумерном массиве L (M, N) первый элемент поменять с последним и найти сумму отрицательных элементов - C++
Здравствуйте. помогите с задачей. В двумерном массиве L (M, N) первый элемент поменять с последним и найти сумму отрицательных...

Найти первый нулевой элемент в одномерном массиве и заменить его суммой элементов, лежащих за ним - C++
Дан одномерный массив. Найти первый нулевой элемент в этом массиве и заменить его суммой элементов, лежащих за ним. например, есть...

Найти в массиве элемент с заданным значением; если таких элементов несколько, вывести индекс последнего из них - C++
доброй ночи! Дан массив a. Элементы массива отсортированы в порядке возрастания. Используя метод двоичного поиска, найти в массиве...

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

Даны два слова. Напечатать только те буквы слов, которые есть только в одном из них - C++
2.Даны два слова. Напечатать только те буквы слов, которые есть только в одном из них (в том числе повторяющиеся). Например, если ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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