Задача... В одномерном массиве, состоящем из п вещественных элементов, вычислить: 3) сумму элементов массива с нечетными номерами; 4) сумму элементов массива, расположенных между первым и последним отрицательными элементами. Сжать массив, удалив из него все элементы, модуль которых не превышает 1. Ос¬вободившиеся в конце массива элементы заполнить нулями. | Код | //файл main.cpp
#include <iostream> #include <valarray>
using namespace std;
#include "in.h" // реализация функции in #include "sum1.h" // реализация функции sum1 #include "sum.h" // реализация функции sum #include "sort.h" // реализация функции sort_valarray
int main() { // создание экземпляра класса valarray для хранения чисел с плавающей запятой valarray<double> v = in();
sum1(v); // вызов функции sum1 sum(v); // вызов функции sum sort_valarray(v); // вызов функции sort_valarray
return 0; }
//файл in.h
/* функция: - запрашивает размер массива; - создает экземпляр класса valarray для хранения чисел с плавающей запятой указанного размера; - заполняет массив числами, введенными с клавиатуры; - возвращает массив в функцию main */ valarray<double> in() { int i = 0; int count; // размер массива
cout << "Enter count of array: "; // приглашение (введте размер массива) cin >> count; // ввод размера массива в переменную count
/* создание экземпляра класса valarray для хранения чисел с плавающей запятой указанного размера */ valarray<double> v(count);
for (; i < v.size(); i++) // цикл по каждому элементу v { cout << "v[" << i+1 << "] = "; // приглашение (v[индекс] = ) cin >> v[i]; // ввод значения в v по индексу i }
return v; // возвращение экземпляра класса valarray (v) в функцию main }
//файл sum1.h
/* функция нахождения суммы нечетных элементов массива */ void sum1(valarray<double> v) { int i; double summa=0; for (i = 0; i < v.size(); i+2) // цикл по каждому элементу v { summa+= v[i]; }
cout << "Sum of uneven numbers: " << summa << endl; }
//файл sum.h
/* функция нахождения суммы элементов массива, расположенных между первым и последним отрицательными элементами */ void sum(valarray<double> v) { int i; int beg = -1; // номер первого отрицательного элемента массива int end = -1; // номер последнего отрицательного элемента массива
for (i = 0; i < v.size(); i++) // цикл по каждому элементу v // является ли элемент первым отрицательным в массиве if (v[i] < 0) { beg = i; /* сохранение в переменной beg номера первого отрицательного элемента массива */ } for (i = v.size(); i >0; i--) // цикл по каждому элементу v { // является ли элемент последним отрицательным в массиве if (v[i] < 0) { end = i; /* сохранение в переменной end номера последнего отрицательного элемента массива */ }
// есть ли в массиве 2 отрицательных элемента, и есть ли между ними другие элементы if ((end - beg) > 1) { slice s(beg + 1, end - beg - 1, 1); // создание экземпляра класса slice (срез) // выборка из массива v элементов с помощью среза s valarray<double> temp = v[s]; /* вывод суммы элементов массива temp, то есть элементов, расположенных между первым и последним отрицательными элементами */ cout << "Sum of numbers between 2 first negative numbers: " << temp.sum() << endl; } else /* вывод сообщения об отсутствии 2 отрицательных элементов или об отсутствии между ними других элементов */ cout << "Error.\n"; }
//файл sort.h
/* функция сортировки массива: сначала располагаются все элементы, модуль которых не превышает 1, а потом - все остальные */ void sort_valarray(valarray<double> v) { int i = 0, index = 0; valarray<double> sort(v.size()); // для сохранения результата сортировки массива v
for (; i < v.size(); i++) // цикл по каждому элементу v if (v[i] > -1 && v[i] < 1) // не превышает ли модуль i-го элемента единицу(1) sort[index++] = v[i]; /* если не превышает, то значение заносится в массив sort */ for (i = 0; i < v.size(); i++) // цикл по каждому элементу v if (v[i] <= -1 || v[i] >= 1) // превышает ли модуль i-го элемента единицу(1) sort[index++] = 0; /* если превышает, то значение заносится в массив sort */
// вывод элементов массива sort - результата сортировки массива v cout << "Sort valarray: "; for (i = 0; i < sort.size(); i++) cout << sort[i] << "\t"; cout << "\n"; }
|
При компиляции выдает ошибки.. e:\учеба\dimon\oop\44\sort.h(3) : error C2601: 'sort_valarray' : local function definitions are illegal E:\Учеба\DimOn\oop\44\main.cpp(12) : error C2601: 'main' : local function definitions are illegal E:\Учеба\DimOn\oop\44\main.cpp(22) : fatal error C1004: unexpected end of file found почему именно так???
|