В одномерном массиве, состоящем из n вещественных элементов, вычислить:
1) максимальный элемент массива;
2) сумму элементов массива, расположенных до последнего положительного элемента.
Сжать массив, удалив из него все элементы, модуль которых находится в интервале [а, b]. Освободившиеся в конце массива элементы заполнить нулями.
PS. Ещё не отказался бы от блок-схемы (можно фото, от руки)
Заранее Благодарен!
Другие языки программирования и технологии
Помогите сделать лабораторную работу по теме "Одномерные массивы" [C++]
Разве это C++?
Вот C++ =)
Блок-схема не нужна. т. к. при использовании С++ STL библиотек алгоритм получился практически линейный =)
Если что непонятно - пишите на почту.. .
//Собрано и протестировано в VisualStudio 2010. Полностью рабочая программа =)
#include <conio.h>//Для _getch (формально не нужна)
#include <algorithm>//Для find_if
#include <iostream>//Для cout, cerr (стандартными потоками ввода-вывода)
#include <vector>//Для vector
#include <numeric>//Для accumulate
#include <iterator>//Для iterator
#include <locale.h>//Для setlocale
#include <windows.h>//Для TCHAR в параметрах и прочего виндового
#include <time.h>//Для srand(time)
#include <tchar.h>//Для tchar
using namespace std;
const int
intSize= 5,//Размер массива
intLowGenValue= -10,//Нижняя граница для генератора псевдослучайных чисел
intHighGenValue= 10,//Верхняя граница для генератора псевдослучайных чисел
intLowDelValue= 0, //Нижняя граница для удаления данных из массива
intHighDelValue= 9; //Верхняя граница для удаления данных из массива
//Функция генерирования псевдослучайного значения в заданных диапазонах
int rangedRand(int aintRangeMin, int aintRangeMax)
{
return (double)rand() / (RAND_MAX + 1) * (aintRangeMax - aintRangeMin) + aintRangeMin;
}
//Проверка на попадание в область
bool __inline isInRange(int aintValue)
{
return (aintValue >= intLowDelValue && aintValue <= intHighDelValue);
}
//Проверка на положительное число
bool __inline isPositive(int aintValue)
{
return aintValue >= 0;
}
void _tmain( int argc, TCHAR *argv[] )
{
//Устанавливаем русскую локаль
setlocale(LC_ALL,"Russian");
//Создаём массив-вектор из чисел
vector<int> vData;
//Инициализируем генератор псевдослучайных чисел
srand((unsigned)time(NULL));
//Генерируем массив из intSize элементов из чисел в заданном диапазоне [intLowGenValue-intHighGenValue]
for(int i=0; i < intSize; i++) vData.push_back(rangedRand(intLowGenValue,intHighGenValue));
//Выводим массив
cout << "Сгенерированный массив: " << endl;
copy(vData.begin(), vData.end(), ostream_iterator<int>(cout, " "));
//Ищем и выводим максимальный элемент
cout << endl << endl << "Максимальный элемент: " << *max_element(vData.begin(), vData.end());
//Реверсивно ищем последний положительный элемент и выводим на экран
vector<int>::reverse_iterator it = find_if(vData.rbegin(),vData.rend(), isPositive);
cout << endl << endl << "Последний положительный: " << *it;
//Сдвигаемся на предыдущую позицию (до последнего положительного)
it++;
//Считаем сумму до найденного, не включая его
cout << endl << endl << "Сумма до последнего положительного: " << accumulate(it, vData.rend(), 0);
//Удаляем данные из массива, которые попадают в диапазон [intLowDelValue-intHighDelValue], сжимаем массив, удаляя "мусор"
vData.erase(remove_if(vData.begin(), vData.end(), isInRange), vData.end());
//Выводим массив после удаления
cout << endl << endl << "После удаления [" << intLowDelValue << '- '<< intHighDelValue<<"]:" << endl;
copy(vData.begin(), vData.end(), ostream_iterator<int>(cout, " "));
//Ждем нажатия клавиши
_getch();
}
Вот C++ =)
Блок-схема не нужна. т. к. при использовании С++ STL библиотек алгоритм получился практически линейный =)
Если что непонятно - пишите на почту.. .
//Собрано и протестировано в VisualStudio 2010. Полностью рабочая программа =)
#include <conio.h>//Для _getch (формально не нужна)
#include <algorithm>//Для find_if
#include <iostream>//Для cout, cerr (стандартными потоками ввода-вывода)
#include <vector>//Для vector
#include <numeric>//Для accumulate
#include <iterator>//Для iterator
#include <locale.h>//Для setlocale
#include <windows.h>//Для TCHAR в параметрах и прочего виндового
#include <time.h>//Для srand(time)
#include <tchar.h>//Для tchar
using namespace std;
const int
intSize= 5,//Размер массива
intLowGenValue= -10,//Нижняя граница для генератора псевдослучайных чисел
intHighGenValue= 10,//Верхняя граница для генератора псевдослучайных чисел
intLowDelValue= 0, //Нижняя граница для удаления данных из массива
intHighDelValue= 9; //Верхняя граница для удаления данных из массива
//Функция генерирования псевдослучайного значения в заданных диапазонах
int rangedRand(int aintRangeMin, int aintRangeMax)
{
return (double)rand() / (RAND_MAX + 1) * (aintRangeMax - aintRangeMin) + aintRangeMin;
}
//Проверка на попадание в область
bool __inline isInRange(int aintValue)
{
return (aintValue >= intLowDelValue && aintValue <= intHighDelValue);
}
//Проверка на положительное число
bool __inline isPositive(int aintValue)
{
return aintValue >= 0;
}
void _tmain( int argc, TCHAR *argv[] )
{
//Устанавливаем русскую локаль
setlocale(LC_ALL,"Russian");
//Создаём массив-вектор из чисел
vector<int> vData;
//Инициализируем генератор псевдослучайных чисел
srand((unsigned)time(NULL));
//Генерируем массив из intSize элементов из чисел в заданном диапазоне [intLowGenValue-intHighGenValue]
for(int i=0; i < intSize; i++) vData.push_back(rangedRand(intLowGenValue,intHighGenValue));
//Выводим массив
cout << "Сгенерированный массив: " << endl;
copy(vData.begin(), vData.end(), ostream_iterator<int>(cout, " "));
//Ищем и выводим максимальный элемент
cout << endl << endl << "Максимальный элемент: " << *max_element(vData.begin(), vData.end());
//Реверсивно ищем последний положительный элемент и выводим на экран
vector<int>::reverse_iterator it = find_if(vData.rbegin(),vData.rend(), isPositive);
cout << endl << endl << "Последний положительный: " << *it;
//Сдвигаемся на предыдущую позицию (до последнего положительного)
it++;
//Считаем сумму до найденного, не включая его
cout << endl << endl << "Сумма до последнего положительного: " << accumulate(it, vData.rend(), 0);
//Удаляем данные из массива, которые попадают в диапазон [intLowDelValue-intHighDelValue], сжимаем массив, удаляя "мусор"
vData.erase(remove_if(vData.begin(), vData.end(), isInRange), vData.end());
//Выводим массив после удаления
cout << endl << endl << "После удаления [" << intLowDelValue << '- '<< intHighDelValue<<"]:" << endl;
copy(vData.begin(), vData.end(), ostream_iterator<int>(cout, " "));
//Ждем нажатия клавиши
_getch();
}
А блок-схемы, я, вам, робяты не дам! У меня руки другой системы! ;-)

Gennadii Baranov
Благодарю!:) Ещё бы текстом отправили...
Пиши на мыло, помогу.
Gennadii Baranov
Ответь.
Похожие вопросы
- Помогите пожалуйста решить задачи по информатике, одномерные массивы. Си шарп. Очень срочно. Пожалуйста!!!!
- Одномерные массивы c++
- Задача на C++ по одномерным (статическим) массивам, помогите сделать, пожалуйста, очень надо на завтра
- Microsoft Visual C++ 6.0 В одномерном массиве, состоящем из n вещественных элементов, вычислить...
- Помогите с программой Одномерные массивы и указатели
- Написать программу работы с одномерным массивом из 15 вещественных элементов для решения задач:
- Помогите с С++. Надо найти произведение элементов одномерного массива между первым и последним 0.
- C#. Элементы одномерного массива размером 7, которые больше среднего значения элементов массива, заменить на 0.
- Помогите с одномерным массивом. Напишите код на Паскале.
- В одномерном массиве, состоящем из n вещественных элементов, вычис- лить: 39 1) сумму положительных элементов массив
Вместо:
vData.erase(remove_if(vData.begin(), vData.end(), isInRange), vData.end());
Надо:
fill(remove_if(vData.begin(), vData.end(), isInRange), vData.end(),0);