Производится четырёхканальная (квадро) звукозапись с частотой дискретизации 32 кГц
и 32-битным разрешением. Запись длится 2 минуты, её результаты записываются в файл,
сжатие данных не производится. Определите приблизительно размер полученного файла
(в Мбайт). В качестве ответа укажите ближайшее к размеру файла целое число, кратное 5.
2. Производится двухканальная (стерео) звукозапись с частотой дискретизации 32 кГц и
32-битным разрешением. Запись длится 3 минуты, её результаты записываются в файл,
сжатие данных не производится. Определите приблизительно размер полученного файла в
Мбайт. В качестве ответа укажите ближайшее к размеру файла целое число, кратное 10.
Задача на повторение
3. Какой минимальный объём памяти (в Кбайт) нужно зарезервировать, чтобы можно
было сохранить любое растровое изображение размером 1024x1024 пик при условии, что
в изображении могут использоваться 32 различных цветов?
1) если нужно найти произведение элементов с нечетными индексами:
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
signed main() {
int a[20];
srand(time(NULL));
for(int i = 0; i < 20; i++)
a[i] = rand()%46 - 19;
for(auto i: a)
cout << i << " ";
cout << "\n";
long long ans = 1;
for(int i = 0; i < 20; i++)
if(i % 2 == 1)
ans *= a[i];
cout << ans;
}
2) Если нужно найти произведение элементов с нечетными порядковыми номерами:
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
signed main() {
int a[20];
srand(time(NULL));
for(int i = 0; i < 20; i++)
a[i] = rand()%46 - 19;
for(auto i: a)
cout << i << " ";
cout << "\n";
long long ans = 1;
for(int i = 0; i < 20; i++)
if((i+1) % 2 == 1)
ans *= a[i];
cout << ans;
}
Как исповедующий подход на атомарное разбиение кода на функции/методы/классы, предпочитаю видеть код, в котором каждая операция выполняется в своей функции.
Это упрощает повторное использование кода, да и мыслить такой код проще, чем когда тебе в одной функции нужно отслеживать несколько состояний для их синхронизации.
В данном задании действие этого подхода видно слабо.
P.S. srand(time(nulptr)) и rand() - "плохой" получения случайных чисел, так как время находится под контролем пользователя и он может выставлять время специально. Но "хороший" реализовывать здесь смысла нет.
===========================
Если решение удовлетворило, не забудь отметить его как "Лучшее".
===========================
Код:
#include <iostream>
#include <cstdlib>
#include <ctime>
int rand_range(int min, int max) {
return std::rand() % (max - min + 1) + min;
}
int* random_sequence(int N, int min, int max) {
int *arr = new int[N];
for(auto i = 0; i < N; ++i) {
arr[i] = rand_range(min, max);
}
return arr;
}
template<typename T>
void print_sequence(const T * arr, size_t size) {
for(auto i = 0; i < size; ++i) {
std:: cout << arr[i] << " ";
}
}
long calculate_production(const int *arr, size_t size) {
long accumulator = 1;
for(auto i = 0; i < size; ++i) {
if (i % 2 == 0) continue;
accumulator *= arr[i];
}
return accumulator;
}
int main() {
const int min_random = -19, max_random = 26;
int N;
std::cout << "How many number should we generate? N = ";
std::cin >> N;
std::srand(std::time(nullptr));
int *arr = random_sequence(N, min_random, max_random);
print_sequence(arr, N);
auto result = calculate_production(arr, N);
std::cout << ":" << result;
delete[] arr;
return 0;
}