Задан дномерный массив случайных чисел размерностью 200 чисел и диапазоном значений -100 ...100.
Во всех последовательностях положительных чисел заменить значение элементов с максимальным и минимальным значением на среднее для этой последовательности.
Массив уже есть: void main()
{
setlocale(LC_ALL,"Russian");
int A[200]; //определение массива
int i,r,N;
for(i=0;i<200;i++)
{
r=rand() 0-100; //100>=r>= -100;
A=r;
cout<<a<i><<"\t";
}
Другие языки программирования и технологии
Задача по массиву в Си++
#include <iostream>
#include <iomanip>
#include <ctime>
using namespace std;
struct sequence {
sequence() { }
sequence(double _min, double _max, double _mid) : min(_min), max(_max), mid(_mid) {}
double min;
double max;
double mid;
};
sequence process(double *, unsigned);
void show(double *, const size_t);
void work(double *, const size_t);
int main() {
srand(unsigned(time(NULL)));
const size_t size = 200;
double vector[size];
for (unsigned n = 0; n < size; n++) vector[n] = rand() % 201 - 100;
show(vector, size);
work(vector, size);
show(vector, size);
cin.get(); cin.get();
return 0;
}
void work(double * _p, const size_t _s) {
for (unsigned n = 0; n < _s; n++)
if (_p[n] >= 0) {
sequence seq = process(&_p[n], _s - n);
while (n < _s && _p[n] >= 0) {
if (seq.max == _p[n] || seq.min == _p[n]) _p[n] = seq.mid;
++n;
}
}
}
void show(double * _v, const size_t _s) {
for (unsigned n = 0; n < _s; n++) {
if (!(n % 5)) cout << endl;
cout << setw(15) << _v[n];
}
cout << endl;
}
sequence process(double * _p, unsigned _q) {
--_q;
sequence seq(*_p, *_p, *_p);
if (_q) {
unsigned count = 1;
double sum = *_p;
while (_q && *(++_p) >= 0) {
if (*_p < seq.min) seq.min = *_p;
if (*_p > seq.max) seq.max = *_p;
++count;
sum += *_p;
--_q;
}
seq.mid = sum / count;
}
return seq;
}
#include <iomanip>
#include <ctime>
using namespace std;
struct sequence {
sequence() { }
sequence(double _min, double _max, double _mid) : min(_min), max(_max), mid(_mid) {}
double min;
double max;
double mid;
};
sequence process(double *, unsigned);
void show(double *, const size_t);
void work(double *, const size_t);
int main() {
srand(unsigned(time(NULL)));
const size_t size = 200;
double vector[size];
for (unsigned n = 0; n < size; n++) vector[n] = rand() % 201 - 100;
show(vector, size);
work(vector, size);
show(vector, size);
cin.get(); cin.get();
return 0;
}
void work(double * _p, const size_t _s) {
for (unsigned n = 0; n < _s; n++)
if (_p[n] >= 0) {
sequence seq = process(&_p[n], _s - n);
while (n < _s && _p[n] >= 0) {
if (seq.max == _p[n] || seq.min == _p[n]) _p[n] = seq.mid;
++n;
}
}
}
void show(double * _v, const size_t _s) {
for (unsigned n = 0; n < _s; n++) {
if (!(n % 5)) cout << endl;
cout << setw(15) << _v[n];
}
cout << endl;
}
sequence process(double * _p, unsigned _q) {
--_q;
sequence seq(*_p, *_p, *_p);
if (_q) {
unsigned count = 1;
double sum = *_p;
while (_q && *(++_p) >= 0) {
if (*_p < seq.min) seq.min = *_p;
if (*_p > seq.max) seq.max = *_p;
++count;
sum += *_p;
--_q;
}
seq.mid = sum / count;
}
return seq;
}
Игорь Филимонов
добавьте пожалуйста комментарии к коду ...
ну, проблема-то в чем?
пошел по массиву, ищешь min max
как кого не положительного встретил - делаешь действия, обнуляешься и дальше
пошел по массиву, ищешь min max
как кого не положительного встретил - делаешь действия, обнуляешься и дальше
Игорь Филимонов
я не знаю как код такой написать ...
Похожие вопросы
- Массивы на Си! задача!
- Информатика. Помощь в решении задач по массивам
- C++ задача про массив
- Задача на массивы двумерные помогите доделать на C#,код прикрепляю и задачу
- Помогите.Массивы.Язык Си.
- Программа с массивами на Си
- Задача на МАССИВЫ Паскаль ОЧЕНЬ СРОЧНО!!!!
- Задачи на массив паскаль, помогите пожалуйста
- Задача на массивы. Программирование
- Двумерный массив. Язык Си.