Форум программистов, компьютерный форум CyberForum.ru

Определить среднюю длину непрерывных участков отрицательных значений элементов массива - C++

Восстановить пароль Регистрация
 
Kirill Losev
3 / 3 / 0
Регистрация: 01.10.2011
Сообщений: 249
06.11.2011, 19:30     Определить среднюю длину непрерывных участков отрицательных значений элементов массива #1
в массиве A определить среднюю длину непрерывных участков отрицательных значений элементов

буду рад даже ссылкам на подобные задачи
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.11.2011, 19:30     Определить среднюю длину непрерывных участков отрицательных значений элементов массива
Посмотрите здесь:

C++ Сумма значений отрицательных элементов массива
C++ Определить среднюю длину строк в тексте и вывести строки с длиной меньше средней
C++ Написать шаблонную функцию,которая вычислит сумму значений отрицательных элементов массива числового типа
Определить сумму отрицательных элементов массива C++
Определить количество элементов массива, меньших среднего арифметиче-ского значений элементов этого массива C++
C++ Определить количество положительных, отрицательных и нулевых элементов массива.
Определить количество положительных, отрицательных и нулевых элементов матрицы A(10,15). (Создать три функции для нахождения этих значений) C++
C++ Произведение суммы значений отрицательных элементов массива, лежащих между min и max, на их количество
C++ Определить количество слов в тексте и среднюю длину слова
Определить среднюю длину слов в предложении C++
Определить среднее арифметическое отрицательных элементов массива C++
Определить количество отрицательных элементов массива C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
06.11.2011, 20:05     Определить среднюю длину непрерывных участков отрицательных значений элементов массива #2
Ну что-нибудь такое:
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
    double res;
    int col=0, sum=0;
    bool fl=false;
    for(int i=0; i<n; i++)
    {
        if(a[i]<0)
        {
            sum++;
            if(!fl)
                fl=true;
        }
        else
        {
            if(fl)
                col++;
            fl=false;
        }
    }
    if(fl)
        col++;
    if(col>0)
        res=(double)sum/col;
    else
        res=.0;
    cout<<res<<endl;
Thinker
Эксперт C++
 Аватар для Thinker
4216 / 2190 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
06.11.2011, 20:11     Определить среднюю длину непрерывных участков отрицательных значений элементов массива #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
double Sred(int *a, int n)
{
    double sum;
    int i, j, k;
    i = k = sum = 0;
    while(i < n)
    {
        while(i < n && a[i] >= 0)
            i++;
        j = i;
        while(i < n && a[i] < 0)
            i++;
        if (j < i)
        {
            k++;
            sum += (i - j);
        }
    }
    return k ? sum/k : -1;
}
Kirill Losev
3 / 3 / 0
Регистрация: 01.10.2011
Сообщений: 249
06.11.2011, 21:12  [ТС]     Определить среднюю длину непрерывных участков отрицательных значений элементов массива #4
Спасибо,
valeriikozlov, все работает, только я не совсем понимаю принцип работы программы. можешь об этом рассказать немного?
Thinker
Эксперт C++
 Аватар для Thinker
4216 / 2190 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
06.11.2011, 21:34     Определить среднюю длину непрерывных участков отрицательных значений элементов массива #5
На всякий случай вся программа:

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
#include <conio.h>
#include <stdio.h>
 
double Sred(int *a, int n)
{
    double sum;
    int i, j, k;
    i = k = sum = 0;
    while(i < n)
    {
        while(i < n && a[i] >= 0)
            i++;
        j = i;
        while(i < n && a[i] < 0)
            i++;
        if (j < i)
        {
            k++;
            sum += (i - j);
        }
    }
    return k ? sum/k : -1;
}
 
int main( )
{
    int a[10] = {1, 2, -1, -2, 2, 3, -2, -3, -2, -1};
    printf ("%f\n", Sred(a, 10));
    getch();
    return 0;
}
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
06.11.2011, 21:48     Определить среднюю длину непрерывных участков отрицательных значений элементов массива #6
Цитата Сообщение от Kirill Losev Посмотреть сообщение
только я не совсем понимаю принцип работы программы. можешь об этом рассказать немного?
Все просто, подсчитываем общее количество отрицательных элементов в переменной sum, и общее количество непрерывных участков в переменной col (количество участков считаем по количеству окончаний этих участков)
потом наш результат sum/col
Yandex
Объявления
06.11.2011, 21:48     Определить среднюю длину непрерывных участков отрицательных значений элементов массива
Ответ Создать тему
Опции темы

Текущее время: 20:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru