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

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

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

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

24.01.2014, 11:27. Просмотров 171. Ответов 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;
}
Вопрос правильно реализована задача или нет? Да и что скажете о коде, есть какие небудь оплошности?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2014, 11:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос При повторении элементов в новом массиве, оставлять только первый из них (C++):

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

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

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

Нет обновления данных при PageLoad, а только при новом запуске - C# ASP.NET
Есть DropDownList, значения в котором считываются из БД. По нажатию на кнопку заношу в БД новую строку. НО ПОСЛЕ вызова события PageLoad...

В массиве В(20) определить элементы делящиеся на 4 без остатка, и сформировать из них новый масив С, подсчитав количество таких элементов и min из них - Pascal ABC
В массиве В(20) определить элементы делящиеся на 4 без остатка, и сформировать из них новый массив С, подсчитав количество таких элементов...

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

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

Если в массиве встречается два подряд нулевых элемента, то первый из них заменить на значение максимального - C (СИ)
Всем привет!Помогите с заданием : Если в массиве встречается два подряд нулевых элемента, то первый из них заменить на значение...

В новом массиве определить полусумму первого и последнего элементов - Turbo Pascal
Сформировать новый массив B(N) из заданного массива A(N) последовательным умножением всех элементов на третий элемент массива A(N). В новом...

В новом массиве элементы равны модулю соответствующих элементов исходного - Pascal ABC
2)Дополните предыдущую программу так, чтобы, формировался и выводился на экран в строку новый числовой массив В, в котором: 2.2 элементы...

В новом массиве r найти произведение элементов, расположенных до минимального элемента - Visual Basic
Вывести одномерные массивы x{-6,0.5,0.12,13,-10.1} и y={13,2.1,14,6,-2}. Создать одномерный массив r() такой, что элементы с нечетными ...


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

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

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