Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 26.11.2010
Сообщений: 28

заменить отрицательные елементы массива

23.09.2011, 19:15. Показов 1428. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем, есть массив размерностью 100 элементов, диапазон от -100 до 100. Нужно заменить все элементы с отрицательными значениями средним арифметическим значением всех положительных элементов. Заранее спасибо)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.09.2011, 19:15
Ответы с готовыми решениями:

Найти отрицательные елементы
Добрый день. Помогите пожалуйста с эим заданием: нужно для каждого столбца матрицы {Si,j}5,4 определить номера строк, содержащих в себе...

Заменить отрицательные числа массива A максимальным элементом массива B
Дан массив A и B в размерности 10. Заменить отрицательные числа массива A максимальным элементом массива B

Заменить все отрицательные элементы массива
Заменить все отрицательные элементы массива на значения максимального и Найти элемент массива который наименее близок к заданному числу,...

6
14 / 14 / 4
Регистрация: 27.07.2011
Сообщений: 162
23.09.2011, 19:17
это как вообще? поподробнее
1
Эксперт С++
 Аватар для Thinker
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.09.2011, 19:26
Лучший ответ Сообщение было отмечено как решение

Решение

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
 
#define N 100
 
void Init(double *a, int n)
{
   int i;
   for (i = 0; i < n; i++)
      a[i] = rand() % 201 - 100;
}
 
void Print(double *a, int n)
{
   int i;
   for (i = 0; i < n; i++)
      printf("%.5f ", a[i]);
   printf("\n");
}
 
int Sred(double *a, int n, double *sred)
{
   int i, k = 0;
   double sum = 0;
   for (i = 0; i < n; i++)
      if (a[i] > 0)
      {
         k++;
         sum += a[i];
      }
   if (k > 0)
   {
      *sred = sum / k;
      return 1;
   }
   else
      return 0;
}
 
void Zamena(double *a, int n, double sred)
{
   int i;
   for (i = 0; i < n; i++)
         if (a[i] < 0)
            a[i] = sred;
}
 
int main()
{
   double a[N], sred;
   int i;
   Init(a, N);
   Print(a, N);
   if (Sred(a, N, &sred))
      Zamena(a, N, sred);
   Print(a, N);
   getchar();
   return 0;
}
3
0 / 0 / 0
Регистрация: 26.11.2010
Сообщений: 28
24.09.2011, 10:47  [ТС]
Теперь понятно, почему оно не работало) Я на среднее арифметическое целый тип поставил, вот прога мне одни 0 вместо отрицательних чисел и писала. спасибо за помощь)
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
24.09.2011, 14:34

Не по теме:

Выпендрёж от скуки...


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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
#include <functional>
#include <cstdlib>
#include <ctime>
 
double positive_average(const std::vector<double> & vec){
    double sum = 0.0;
    size_t count = 0;
    
    for ( std::vector<double>::const_iterator i = vec.begin(); i != vec.end(); ++i )
        if ( *i > 0.0 && ++count )
            sum += *i;
    
    return ( count ) ? sum / static_cast<double>(count) : 0.0;
}
 
template <typename T>
class RandNumber {
    int lo;
    int hi;
public:
    RandNumber(int Lo, int Hi): lo(Lo), hi(Hi) {}
    T operator () (){
        return static_cast<T>( rand() % (hi - lo + 1) + lo );
    }
};
 
int main(){
    const int SIZE(10);
    const int LO(-200);
    const int HI(200);
    
    std::vector<double> vec(SIZE);
    srand(time(NULL));
    std::generate(vec.begin(), vec.end(), RandNumber<double>(LO, HI));
    
    std::cout << "ARRAY:   ";
    std::copy(vec.begin(), vec.end(), std::ostream_iterator<double>(std::cout, " "));
    std::cout << std::endl;
    
    double avg = positive_average(vec);
    if ( avg > 0.0 ){
        std::cout << "Average of positive elements: " << avg << std::endl;
        std::replace_if(vec.begin(), vec.end(), std::bind2nd(std::less<double>(), 0.0), avg);
        std::cout <<"CHANGED: ";
        std::copy(vec.begin(), vec.end(), std::ostream_iterator<double>(std::cout, " "));
        std::cout << std::endl;
    }
    
    return 0;
}
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
andrew@debnout:~/cpp/numbers$ g++ -o neg2average neg2average.cpp
andrew@debnout:~/cpp/numbers$ ./neg2average 
ARRAY:   165 48 -4 59 -4 -38 12 -148 113 -147 
Average of positive elements: 79.4
CHANGED: 165 48 79.4 59 79.4 79.4 12 79.4 113 79.4 
andrew@debnout:~/cpp/numbers$ ./neg2average 
ARRAY:   -88 -11 -95 -51 63 -101 199 103 -168 -120 
Average of positive elements: 121.667
CHANGED: 121.667 121.667 121.667 121.667 63 121.667 199 103 121.667 121.667 
andrew@debnout:~/cpp/numbers$ ./neg2average 
ARRAY:   25 -56 176 -182 -143 155 99 68 88 -45 
Average of positive elements: 101.833
CHANGED: 25 101.833 176 101.833 101.833 155 99 68 88 101.833 
andrew@debnout:~/cpp/numbers$

Не по теме:

диапазон [-200, 200] опять же по невнимательности, исправьте, если принципиально...

1
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
24.09.2011, 15:03

Не по теме:

Цитата Сообщение от easybudda Посмотреть сообщение
Выпендрёж от скуки...
Ну, раз уж такое дело, то


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
30
31
32
#include <iostream>
#include <algorithm>
#include <iterator>
#include <functional>
#include <array>
#include <random>
#include <ctime>
 
int main()
{
    typedef std::ostream_iterator<int> int_out_iter;
 
    auto rand_generator = std::bind(std::uniform_int_distribution<int>(-100, 100),
                                    std::mt19937(std::time(nullptr)));
 
    std::array<int, 100> a;
    std::generate(a.begin(), a.end(), rand_generator);
 
    std::copy(a.begin(), a.end(), int_out_iter(std::cout, " "));
    std::cout << '\n';
 
    int sum = 0;
    std::for_each(a.begin(), a.end(), [&sum](int i) { if(i > 0) sum+= i; });
 
    int pos_average = sum / a.size();
    std::replace_if(a.begin(), a.end(), [](int i) { return i < 0; }, pos_average);
 
    std::copy(a.begin(), a.end(), int_out_iter(std::cout, "  "));
    std::cout << '\n';
 
    return 0;
}
1
24.09.2011, 16:07

Не по теме:

Цитата Сообщение от rangerx Посмотреть сообщение
int pos_average = sum / a.size();
Вот всё-таки не комильфо как-то среднее арифметическое целым числом делать, а так да, компактненько... :)

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.09.2011, 16:07
Помогаю со студенческими работами здесь

Заменить все отрицательные элементы массива их квадратами
В одномерном массиве состоящий из N действительных элементов, 3 заменить все отрицательные элементы массива их квадратами.

Заменить все отрицательные элементы массива их модулями
С одномерным массивом, состоящим из n вещественных элементов, выполнить следующее: Заменить все отрицательные элементы массива их модулями ...

Заменить все отрицательные элементы массива нулями
Я уже на столько устал, что прошу вашей помощи о великие однофорумчани. 1 Напишите программу, которая заменяет все отрицательные...

Заменить все отрицательные элементы массива их квадратами
Нужна помощь с задачей. Не пишу на c++, потому не знаю как это написать. 2) В двумерном вещественном динамическом массиве замените...

Заменить все отрицательные элементы массива числом 0
Условие: &quot;Создайте массив A с помощью генератора случайных чисел с элементами от -20 до 10 и выведите его на экран. Замените все...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru