0 / 0 / 0
Регистрация: 19.11.2020
Сообщений: 3
|
|
1 | |
Вывести пять больших значений массива не изменяя порядка следования элементов в массиве20.11.2020, 10:49. Показов 485. Ответов 7
Метки нет (Все метки)
Помогите исправить программу. Что здесь не так? Дан одномерный массив не менее 10 элементов. Вывести пять больших его значений на экран, не изменяя порядка следования элементов в массиве. Построить шаблон, позволяющий при помощи единой функции работать с массивами разного типа.
Код
#include <iostream> using namespace std; template < class T> void inpt(T* a) { { cout<<"Введите количество элементов"<<endl;break cin >> k; if (k <= 10) { cout <<"Error"<< endl; } else { a = new T[k]; for (int i = 0; i < k; i++) { cout<<"Введите элемент"<<i<<endl; cin>>a[i]; } } } } template < class T> T max(T* a) { T max1 = a[0]; for (int i = 0; i < k; i++) if (max1 <= a[i]) { max1 = a[i]; } T max2 = a[0]; for (int i = 0; i < k; i++) if ((max2 <= a[i]) & (max1 != max2)) { max2 = a[i]; } T max3 = a[0]; for (int i = 0; i < k; i++) if ((max3 <= a[i]) & (max2 != max3) & (max1 != max3)) { max3 = a[i]; } T max4 = a[0]; for (int i = 0; i < k; i++) if ((max4 <= a[i]) & (max1 != max4) & (max2 != max4) & (max3 != max4)) { max4 = a[i]; } T max5 = a[0]; for (int i = 0; i < k; i++) if ((max5 <= a[i]) & (max1 != max5) & (max2 != max5) & (max3 != max5) & (max4 != max5)) { max5 = a[i] } return max; } int main() { char *b; float *c; int *d; cout << "Введите char" << i << endl; inpt(b); cout << "Введите float" << i << endl; inpt(c); cout << "Введите int" << i << endl; inpt(d); cout << "Результат шаблона на char " << endl; max(b) cout << "Результат шаблона на float " << endl; max(c) cout << "Результат шаблона на int " << endl; max(d) }
0
|
20.11.2020, 10:49 | |
Ответы с готовыми решениями:
7
Поставьте максимальный элемент массива на последнее место, не изменяя порядка следования остальных элементов Изменения порядка следования элементов в массиве на противоположный Изменение порядка следования элементов в массиве через рекурсию Составить программу для изменения порядка следования элементов в массиве на противоположный |
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
20.11.2020, 11:20 | 2 |
Ошики компиляции. Для начала исправь их. Например
Что это за break, и где у тебя объявлена переменная k? И т.д.
0
|
0 / 0 / 0
Регистрация: 19.11.2020
Сообщений: 3
|
|
20.11.2020, 11:41 [ТС] | 3 |
Код
#include <iostream> using namespace std; int k = 0; template < class T> void inpt(T* a) { cout<<"Vvedite kol elem"<<endl; cin >> k; if (k <= 10) { cout <<"Error"<< endl; } else { a = new T[k]; for (int i = 0; i < k; i++) { cout<<"Vvedite element"<<i<<endl; cin>>a[i]; } } } template < class T> T max(T* a) { T max1 = a[0]; for (int i = 0; i < k; i++) if (max1 <= a[i]) { max1 = a[i]; } T max2 = a[0]; for (int i = 0; i < k; i++) if ((max2 <= a[i]) & (max1 != max2)) { max2 = a[i]; } T max3 = a[0]; for (int i = 0; i < k; i++) if ((max3 <= a[i]) & (max2 != max3) & (max1 != max3)) { max3 = a[i]; } T max4 = a[0]; for (int i = 0; i < k; i++) if ((max4 <= a[i]) & (max1 != max4) & (max2 != max4) & (max3 != max4)) { max4 = a[i]; } T max5 = a[0]; for (int i = 0; i < k; i++) if ((max5 <= a[i]) & (max1 != max5) & (max2 != max5) & (max3 != max5) & (max4 != max5)) { max5 = a[i] } return max; } int main() { char *b; float *c; int *d; cout << "Vvedite char" << i << endl; inpt(b); cout << "Vvedite float" << i << endl; inpt(c); cout << "Vvedite int" << i << endl; inpt(d); cout << "Rezultat shablona na char " << endl; max(b); cout << "Rezultat shablona na float " << endl; max(c); cout << "Rezultat shablona na int " << endl; max(d); }
0
|
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
20.11.2020, 11:48 | 4 |
А остальные ошибки решил не исправлять?
0
|
1352 / 851 / 365
Регистрация: 26.02.2015
Сообщений: 3,799
|
||||||
20.11.2020, 12:09 | 5 | |||||
Не знаю что делать со значением INT_MIN в функции getMaxValues. Т.к. в шаблон может быть передан пользовательский тип, то от чего-то нужно отталкиваться. Можно ограничить шаблон только арифметическими типами конечно.
0
|
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|||||||||||
20.11.2020, 12:14 | 6 | ||||||||||
1
|
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
20.11.2020, 16:24 | 8 |
На самом деле здесь лучше всё-таки работать со значениями массива T max = arr[0]
Там могут быть вообще не числа, а строки например, или std::tuple
0
|
20.11.2020, 16:24 | |
20.11.2020, 16:24 | |
Помогаю со студенческими работами здесь
8
В массиве найти и вывести на экран произведение элементов массива, больших заданного числа B Смена порядка следования элементов массива Вывести через пробел заданные числа, не изменяя порядок их следования Вывести через пробел заданные числа, не изменяя порядок их следования Изменение порядка следования элементов в массиве так, чтобы сначала располагались все отрицательные элементы, В одномерном массиве все отрицательные элементы переместить в начало массива, а остальные – в конец с сохранением порядка следования Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |