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

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

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

Создать стек и очередь, вычислив среднее арифметическое значение всех элементов - C++

10.07.2014, 09:43. Просмотров 825. Ответов 2
Метки нет (Все метки)

На основе данных входного файла создать стек и очередь, вычислив среднее арифметическое значение всех элементов. Удалить из списка элементы, значение которых меньше среднего арифметического всех элементов исходного списка.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2014, 09:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создать стек и очередь, вычислив среднее арифметическое значение всех элементов (C++):

Найти количество элементов значение которых превышает среднее арифметическое всех элементов - C++
дан целочисленный массив из n элементов. Найти количество элементов значение которых превышает среднее арифметическое всех элементов ...

Найти среднее арифметическое значение четных элементов и среднее арифметическое нечетных элементов и сравнить их между собой - C++
Найти среднее арифметическое значение четных элементов и среднее арифметическое нечетных элементов и сравнить их между собой. Вот часть...

Найти среднее арифметическое всех элементов массива, имеющих нечётное значение - C++
2) Дан целочисленный массив из 30 элементов. Элементы массива могут принимать значения от 0 до 1000. Найдите и выводите среднее...

Создать новый массив, занеся в каждый элемент среднее арифметическое всех предыдущих элементов - C++
В общем у меня есть задание: Дан одномерный массив вещественных чисел А. .Отсортировать массив В методом выбора и вывести на экран оба...

Создать двумерный массив размером NxM, Найти среднее арифметическое всех нечентых элементов с четными индексам - C++
НЕ получается самому

В одномерном массиве определить среднее значение всех элементов,значение которых превышает среднее значение - C++
в произвольно заданном одномерном массиве определить среднее значение всех элементов,значение которых превышает среднее значение

2
dedarh
0 / 0 / 0
Регистрация: 10.07.2014
Сообщений: 20
11.07.2014, 12:43  [ТС] #2
стек
C++ (Qt)
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
#include <iostream>
#include <stack>
#include <stdio.h>
#include <fstream>
 
using namespace std;
 
void printStack(stack<int>&p)
{
    if (!p.size())
        return;
    int t = p.top();
    p.pop();
    printStack(p);
    cout << t << " ";
    p.push(t);
}
 
ifstream in("input.txt");
ofstream out("output.txt");
 
int main()
{
    int answer=0;
    int arif=0;
    int i=0;
 
    stack<int> s1;
    stack<int> s2;
    int buf;
 
    while(in >> buf)
    {
        s1.push(buf);
        cout << buf << " ";
        i++;
        answer+=buf;
 
    }
    cout << endl;
    arif=answer/i;
 
    buf = s1.top();
    s1.pop();
    s2.push(buf);
 
    while(!s1.empty())
    {
    buf = s1.top();
    s1.pop();
    
    if(buf > arif)
    {
        s2.push(buf);
    }
    }
 
    while(!s2.empty())
    {
    buf = s2.top();
    s2.pop();
    cout << buf << " ";
    out << buf << " ";
    }
system("pause");
    in.close();
    out.close();
    return 0;
}
0
DiffEreD
1431 / 768 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
11.07.2014, 16:42 #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
template <typename T>
void print_stack(std::stack<T> st, std::ostream& os = std::cout)
{
   while (!st.empty()) {
      os << st.top() << " ";
      st.pop();
   }
   os << std::endl;
}
 
template <typename T>
void print_queue(std::queue<T> st, std::ostream& os = std::cout)
{
   while (!st.empty()) {
      os << st.front() << " ";
      st.pop();
   }
   os << std::endl;
}
 
template <typename T>
T average_for_queue(std::queue<T> st)
{
   if (st.empty()) return T();
 
   T average = T();
   size_t count = st.size();
   while (!st.empty()) {
      average += st.front();
      st.pop();
   }
   return average/count;
}
 
template <typename T>
T average_for_stack(std::stack<T> st)
{
   if (st.empty()) return T();
 
   T average = T();
   size_t count = st.size();
   while (!st.empty()) {
      average += st.top();
      st.pop();
   }
   return average/count;
}
 
int main()
{
   std::ifstream ifs("file.txt");
   if (ifs.is_open()) {
      using input = std::istream_iterator<int>;
      using stk_cont_t = std::stack<int>::container_type;
      using que_cont_t = std::queue<int>::container_type;
 
      std::vector<int> buffer{input(ifs), input()};
      std::queue<int> qu{que_cont_t{buffer.begin(), buffer.end()}};
      std::stack<int> st{stk_cont_t{buffer.begin(), buffer.end()}};
 
      print_queue(qu);
      print_stack(st);
 
      assert(average_for_queue(qu) == average_for_stack(st));
 
      std::cout << "averege: " << average_for_queue(qu) << "\n";
   }
 
}
Добавлено через 1 минуту
С удалением элементов думаю сами справитесь.

Добавлено через 11 минут

Не по теме:

Вопрос к знатокам: как бы вы написали обобщенную функцию для печати stack, queue, priority_queue? Ну, что то вроде этого:

C++
1
2
3
4
5
6
7
8
template <typename ContainerAdaptors>
void print(ContainerAdaptors conteiner, std::ostream& os = std::cout) {
   //static_assert(??);
   //...
   //if (stack_type) print_stack_impl();
   //if (queue_type) print_queue_impl();
   //...
}



Добавлено через 1 час 51 минуту

Не по теме:

Вроде бы реализовал. Вот такое вышло

Кликните здесь для просмотра всего текста
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
namespace traits
{
//stack traits
template <class T>
struct is_stdstack: std::false_type {};
 
template <class T, class Container>
struct is_stdstack<std::stack<T, Container> >: std::true_type {};
 
//queue traits
template <class T>
struct is_stdqueue: std::false_type {};
 
template <class T, class Container>
struct is_stdqueue<std::queue<T, Container> >: std::true_type {};
 
//priority_queue traits
template <class T>
struct is_stdpriority_queue: std::false_type {};
 
template <class T, class Container, class Compare>
struct is_stdpriority_queue<std::priority_queue<T, Container, Compare> >: std::true_type {};
 
}//end namespace traits
 
namespace detail
{
template <typename Adaptor>
void print_impl(Adaptor& st, std::ostream& os,
                typename std::enable_if<traits::is_stdstack<Adaptor>::value ||
                traits::is_stdpriority_queue<Adaptor>::value>::type* = 0)
{
   std::cout << "stack or priority_queue\n";
   while (!st.empty()) {
      os << st.top() << " ";
      st.pop();
   }
   os << std::endl;
}
 
template <typename Adaptor>
void print_impl(Adaptor& st, std::ostream& os,
                typename std::enable_if<traits::is_stdqueue<Adaptor>::value>::type* = 0)
{
   std::cout << "queue\n";
   while (!st.empty()) {
      os << st.front() << " ";
      st.pop();
   }
   os << std::endl;
}
}//end namespace detail
 
template <typename Adaptor>
void print(Adaptor ctner, std::ostream& os = std::cout) {
   using namespace traits;
   static_assert(is_stdqueue<Adaptor>::value ||
                 is_stdstack<Adaptor>::value ||
                 is_stdpriority_queue<Adaptor>::value,
                 "not valid Container's Adaptor, must be stack, queue or priority_queue");
   detail::print_impl<Adaptor>(ctner, os);
}
 
int main()
{
   std::stack<int>          st{ {1,2,3,4} };
   std::queue<double>       qu{ {1.1, 2.2, 3.3, 4.4} };
   std::vector<int>         v{1,2,3,4,5};
   std::priority_queue<int> pqu{v.begin(), v.end()};
   print(st);
   print(qu);
   print(pqu);
   //print(v); //compile-time error
}

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

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

Найти сумму всех положительных элементов массива и среднее арифметическое всех элементов - C++
Помогите написать программу: Дан массив A. Найти сумму всех положительных элементов массива и среднее арифметическое всех чисел.

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

Найти количество элементов превышающих среднее арифметическое всех элементов массива - C++
Дано одномерный массив из 15 целых чисел. Найти количество элементов превышающих среднее арифметическое всех элементов массива.


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

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

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