0 / 0 / 1
Регистрация: 18.02.2013
Сообщений: 27
1

Задача на принцип наследования и полиморфизм

12.01.2015, 16:18. Показов 2967. Ответов 1
Метки нет (Все метки)

Используя стандартную библиотеку шаблонов STL и класс list по работе с двунаправленным списком, выполнить следующие задачи:
1) Даны натуральное число n, действительные числа a1 ,a2 ,...,an . Если в последовательности a1 ,a2 ,...,an есть хотя бы один элемент, меньший, чем (-3), то все отрицательные элементы заменить их квадратами, оставив остальные элементы без изменения; в противном случае умножить все элементы на 0.1. Результирующий список вывести в порядке . an ,an-1,..., a1

{deleted}

 Комментарий модератора 
п.5.9 Правил
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.01.2015, 16:18
Ответы с готовыми решениями:

Полиморфизм. Иерархия наследования
Привет! У меня вопрос по полиморфизму. Допустим, есть класс Shape он может быть абстрактным, но...

Тема. Полиморфизм. Задача
В программе выполнены следующие описания: class A { protected: int a; public: A(int ax)...

Наследование и полиморфизм. Задача с классом Ellipsoid
Добрый день) Подскажите, поджалуйста, что по заданию корректно изменить в задаче нужно: На...

Задачки: Классы, наследования и полиморфизм!!!
Помогите решить три задачки... 1. Определить класс "Стадион", предусмотрев в нем компонентные...

1
Модератор
Эксперт С++
12442 / 10006 / 6025
Регистрация: 18.12.2011
Сообщений: 26,789
12.01.2015, 17:01 2
Лучший ответ Сообщение было отмечено Ziteck как решение

Решение

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
#include <iostream>
#include <sstream>
#include <algorithm>
#include <list>
#include <ctime>
using namespace std; 
// предикат для генерации случайных значений в диапазоне (-4,4)
class rnd
{
public:
    rnd(){srand((unsigned int)time(NULL));} // случайное начальное значение от таймера
double operator()(void){ return (double)rand()/RAND_MAX*10.0-5.0; }
};
// предикат для поиска чисел Б-3
class LessThanM3 
{ 
public: 
bool operator()(int x) const { return x < -3.0; } 
}; 
// функция для умножения на 0.1
double fun(double x)
{
    return x*0.1;
}
 
int main()
{
   int n=10;
   list<double> data(n);
   generate(data.begin(),data.end(), rnd()); // заполняем случайными значениями
   cout << "Original sequence:\n";
   // используем ostream_iterator для вывода чисел на консоль через пробел
   ostream_iterator<double> out(cout, " ");
   copy(data.begin(),data.end(), out); cout << endl; // выводим  Исходный список
 
   list<double>::iterator wh; 
   wh=find_if(data.begin(),data.end(),LessThanM3()); // ищем наличие числа меньшего 3.0
   if( wh!=data.end()  )
   {
      for(list<double>::iterator p=data.begin();p!=data.end();++p)
       // есть меньшие 3
          if( (*p)<0 )
            (*p)*=(*p); // отрицательный умножаем сам на себя (возводим в квадрат)
   }else
   {
       // нет меньших 3
       transform(data.begin(),data.end(),data.begin(),fun);  // все умножаем на 0.1 с помощью функции fun
   }
   cout << "Result sequence:\n";
   copy(data.rbegin(),data.rend(), out); cout << endl; // выводим Результат в обратном порядке
   system("pause");
   return 0;
}
Добавлено через 2 минуты
Остался невыясненным вопрос.
Можно ли использовать в этом примере алгоритм replace вместо явного прохода по списку (строки 40-43)?
т.е. что-то типа
C++
1
replace_if(data.begin(),data.end(),LessThan0(),xxxxx);
В алгоритме replaсe xxxxx должно быть константой, а надо как-то использовать текущее значение итератора возведенное в квадрат.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.01.2015, 17:01
Помогаю со студенческими работами здесь

Для чего вообще нужен полиморфизм. Какая польза от наследования
Здравствуйте всем. Кто зашел в эту ветку форума. Вопрос такой. Есть ООП и один из трех столпов -...

Продемонстрировать принцип иерархии, наследования классов и инкапсуляции данных
Продемонстрировать принцип иерархии, наследования классов и инкапсуляции данных.

Исключения и полиморфизм (непонятна задача)
Всем привет, приступлю сразу к делу, в книге Сьерра К и Бейтс Б. на странице 364 есть задание смысл...

Смешанная задача, принцип Дюамеля
На фотографии пример с задачей, судя по найденным подобным задачам условие 0&lt;x&lt;\propto лишнее и...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru