Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
KarlKurz
0 / 0 / 0
Регистрация: 27.02.2017
Сообщений: 7
#1

Создать массив из чисел превосходящих среднее значение среди положительных значений файла - C++

01.03.2017, 17:59. Просмотров 278. Ответов 10
Метки нет (Все метки)

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

Создать массив из 10 чисел в диапазоне от -20 до 20. Определить среднее арифметическое положительных элементов
Создать массив из 10 чисел в диапазоне от -20 до 20. Определить среднее...

Создать массив из элементов исходного файла, внеся в него числа, превосходящие среднее значение
Создать двоичный файл, куда записать n вещественных чисел. Создать массив из...

Среднее значение полученных чисел, количество значений в массиве, превышающих среднее
Вот решаю одну задачку из книги Праты: "Напишите программу, читающую в массив...

Найти среднее значение чисел, а также количество значений в массиве, превышающих среднее
Сделал в лоб, голова совсем не варит под вечер: // sp_Ch6_Pg300_Ex02 ///...

Найти наименьшее значение среди положительных чисел последовательности
Даны натуральное число n (n<=100)б действительные числа x1, ... xn, Найти...

Создать двоичный файл и записать в него n целых чисел.Найти среднее арифметичерское среди простых чисел расположенных после минимального значения.
Добрый день! Помогите пожалуйста с решением данной задачи: Задание: Необходимо...

10
sk007
Life Builder
414 / 414 / 341
Регистрация: 12.01.2011
Сообщений: 1,513
Завершенные тесты: 6
02.03.2017, 00:44 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <fstream>
 
int main()
{
    std::ifstream fin("input.txt");
    if (fin.is_open())
    {
        int N;
        fin >> N;
 
        double *mas = double int[N];
 
        for (int i = 0; i < N; i++)//Initialize mas
            fin >> mas[i];
 
        for (int i = 0; i < N; i++)//Print to screen
            std::cout << mas[i] << " ";
    }
    else std::cout << "File not found!";
 
    return 0;
}
1
MrGluck
Модератор
Эксперт CЭксперт С++
8022 / 4865 / 1425
Регистрация: 29.11.2010
Сообщений: 13,251
02.03.2017, 11:12 #3
Лучше бы, конечно, подошёл list (чтобы удалять прямо из него, а не формировать новый контейнер)
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
#include <algorithm>
#include <fstream>
#include <iostream>
#include <iterator>
#include <vector>
 
int main()
{
    std::ifstream ifs("input.txt");
    size_t posCounter = 0;
    double sum = 0, var;
    std::vector<double> vAll, res;
 
    while (ifs >> var)
        if (var > 0)
        {
            vAll.push_back(var);
            sum += var;
            posCounter++;
        }
 
    if (posCounter)
    {
        const double ave = sum / posCounter;
        std::copy_if(vAll.cbegin(), vAll.cend(), std::back_inserter(res), [ave](const auto x) { return x > ave; });
        // выводим полученный массив (можно было бы сделать сразу вывод результата в консоль
        std::copy(res.cbegin(), res.cend(), std::ostream_iterator<double>(std::cout, " "));
    }
}
1
DemolitionMan
129 / 155 / 87
Регистрация: 06.04.2016
Сообщений: 992
02.03.2017, 11:33 #4
Цитата Сообщение от MrGluck Посмотреть сообщение
C++
1
const double ave = sum / posCounter;
- а почему константа? Это компилируется? Работает?
1
MrGluck
Модератор
Эксперт CЭксперт С++
8022 / 4865 / 1425
Регистрация: 29.11.2010
Сообщений: 13,251
02.03.2017, 11:46 #5
Цитата Сообщение от DemolitionMan Посмотреть сообщение
- а почему константа?
А почему нет? Мы же её потом не меняем. Мб у вас непонимание различий между const и consexpr? const не обязан быть константой времени компиляции.
Цитата Сообщение от DemolitionMan Посмотреть сообщение
Это компилируется? Работает?
Компилируется, работает (нужна поддержка С++14).
http://rextester.com/IKZG91878
Можно было бы и самому проверить.
1
DemolitionMan
129 / 155 / 87
Регистрация: 06.04.2016
Сообщений: 992
02.03.2017, 15:49 #6
Цитата Сообщение от MrGluck Посмотреть сообщение
C++
1
const double ave = sum / posCounter;
- это типа только вот здесь константу можно задать и все, дальше она всю программу будет константой?
0
MrGluck
Модератор
Эксперт CЭксперт С++
8022 / 4865 / 1425
Регистрация: 29.11.2010
Сообщений: 13,251
02.03.2017, 17:53 #7
Цитата Сообщение от DemolitionMan Посмотреть сообщение
- это типа только вот здесь константу можно задать и все, дальше она всю программу будет константой?
можете считать, что здесь квалификатор просто помечает переменную как read only, то есть мы просто не сможем написать так:
ave++ или ave=42
1
DemolitionMan
129 / 155 / 87
Регистрация: 06.04.2016
Сообщений: 992
05.03.2017, 15:47 #8
Подскажите, пожалуйста, как Вы кладете переменные в серые прямоугольники?
0
KarlKurz
0 / 0 / 0
Регистрация: 27.02.2017
Сообщений: 7
06.03.2017, 17:10  [ТС] #9
ругается на это
C++
1
double *mas = double int[N];
0
MrGluck
Модератор
Эксперт CЭксперт С++
8022 / 4865 / 1425
Регистрация: 29.11.2010
Сообщений: 13,251
06.03.2017, 17:19 #10
Конечно, ведь там написан бред.
Попробуйте
C++
1
double *mas = new double[N];
1
KarlKurz
0 / 0 / 0
Регистрация: 27.02.2017
Сообщений: 7
06.03.2017, 18:03  [ТС] #11
спасибо

Добавлено через 3 минуты
Могли бы вы помочь с ещё одной темой для начинающих?Тема:" Создать массив из чисел превосходящих среднее значение среди положительных значений файла - C++"

Добавлено через 24 минуты
C++
1
2
3
std::copy_if(vAll.cbegin(), vAll.cend(), std::back_inserter(res), [ave](const auto x) { return x > ave; });
        // выводим полученный массив (можно было бы сделать сразу вывод результата в консоль
        std::copy(res.cbegin(), res.cend(), std::ostream_iterator<double>(std::cout, " "));
Можете это всё пояснить,а точнее,что за функции?если можно,не все найти могу

Добавлено через 14 минут
а можно ли этот код,выше написанный ,изменить на процедурный код,мне до классов ещё очень далеко,понять бы ,как это работает на более простом языке
0
06.03.2017, 18:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.03.2017, 18:03
Привет! Вот еще темы с решениями:

Задать одномерный массив и посчитать среднее значение положительных элементов
Помогите написать программу по заданию: Задать одномерный массив и посчитать...

Считать 10 центральных значений файла, найти их среднее значение
Дан файл File_in.dat, содержащий 65536 целых чисел. Считать 10 центральных...

Вводится последовательность из N произвольных чисел. Найти среднее значение положительных элементов последовательности
Вводится последовательность из N произвольных чисел. Найти среднее значение...

Дан файл с числами. Найти среднее арифметическое положительных чисел файла С++
Дан файл с числами. Найти среднее арифметическое положительных чисел файла С++,...


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

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

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