С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
lulu13
0 / 0 / 0
Регистрация: 09.04.2013
Сообщений: 17
#1

Вычислить разницу элементов массива, что расположены между первым отрицательным та вторым положительным элементами - C++

27.05.2013, 23:11. Просмотров 566. Ответов 6
Метки нет (Все метки)

Всем привет,ребят подкорректируйте пожалуйста ф-цию,то работает не правильно
Вот задание: Вычислить разницу элементов массива, что расположены между первым отрицательным та вторым положительным элементами

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
template <typename T>
inline  int MASS<T>::raznica( )
{
 
    int k = 0, d = 0, l1 = 0, l2 = 0 ;
    int razn = 0;
    for(int i = 0 ; i <N; i++)
    {
        if (arr[i] < 0)
        {
            k++;
            if( k == 1)
                l1 = i;
        }
 
        if (arr[i] > 0)
        {
            d++;
            if( d == 2 )
                l2 = i;
        }
    }
    for (int i = l1 + 1; i < l2; i++)
        razn = arr[i] - arr[i+1];
 
    return razn;
 
}
Добавлено через 2 часа 8 минут
Людиии хееелп плиз
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2013, 23:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вычислить разницу элементов массива, что расположены между первым отрицательным та вторым положительным элементами (C++):

Разница элементов массива, расположенных между первым отрицательным и вторым положительным - C++
Контейнерный класс описывает и обеспечивает набор действий над данными параметризованных массива, размерность которого определяется во...

В массиве вычислить: номер минимального элемента массива, сумму элементов между первым и вторым отрицательным элементами - C++
Помогите пожалуйста мне,завтра надо уже сдавать,а разобраться все никак не получается. Заранее спасибо. В одномерном...

Вычислить сумму элементов массива между первым и вторым положительными элементами - C++
Мужики помогите завтра сессия а еще ничего не готово В одномерном массиве который состоит из N элементов вычислить • максимальный за...

Вычислить сумму элементов массива, расположенных между первым и вторым положительными элементами - C++
В одномерном массиве, состоящем из n вещественных чисел, вычислить сумму элементов массива, расположенных между первым и вторым...

Вычислить произведение элементов массива, расположенных между первым и вторым нулевыми элементами - C++
Привет всем. Нужна помощь в таком вопросе: в одномерном массиве, состоящем из n целых элементов, вычислить произведение элементов массива,...

Вычислить сумму элементов массива, расположенных между первым и вторым отрицательными элементами - C++
В одномерном массиве Y, состоящий из N целых элементов, из промежутка , вычислить сумму элементов массива, расположенных между первым и...

6
las-uv
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 6
28.05.2013, 09:35 #2
У тебя находит разницу только между 2-ух элементов...
Там где ты находишь разницу нужно написать razn-=arr[i].
А потом, в конце добавить эл-т: razn+=arr[l1+1].
0
lulu13
0 / 0 / 0
Регистрация: 09.04.2013
Сообщений: 17
29.05.2013, 21:57  [ТС] #3
А потом, в конце добавить эл-т: razn+=arr[l1+1].

Куда добавить,не могу понять?
0
eocron
Кактус
66 / 66 / 6
Регистрация: 23.05.2012
Сообщений: 343
29.05.2013, 22:19 #4
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
#include <iostream> 
 
template <class T>
T diff(T *mass,unsigned int N)//mass - массив, N - количество элементов
{
    T    razn  = 0;     //Разность всех зажатых элементов
    int  count = 0;     //Счетчик для второго положительного числа
    bool flag  = false; //Поднимаем флаг при отрицательном числе
    for(unsigned int i = 0 ; i <N; i++)
    {
        if(mass[i] < 0)
        {
            flag=true;
        }
 
        if (mass[i] > 0)
        {
            count++;
            if( count == 2 )
            {
                break;
            }
        }
        
        if(flag){razn-=mass[i];}
    }
    return razn;
}
1
lulu13
0 / 0 / 0
Регистрация: 09.04.2013
Сообщений: 17
29.05.2013, 22:58  [ТС] #5
Вставила код в свою ф-цию,считает не правильно
Ввожу массив 5ти элементов:
-1
-2
3
4
5

разница = 0

Добавлено через 22 минуты
Цитата Сообщение от eocron Посмотреть сообщение
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
#include <iostream> 
 
template <class T>
T diff(T *mass,unsigned int N)//mass - массив, N - количество элементов
{
    T    razn  = 0;     //Разность всех зажатых элементов
    int  count = 0;     //Счетчик для второго положительного числа
    bool flag  = false; //Поднимаем флаг при отрицательном числе
    for(unsigned int i = 0 ; i <N; i++)
    {
        if(mass[i] < 0)
        {
            flag=true;
        }
 
        if (mass[i] > 0)
        {
            count++;
            if( count == 2 )
            {
                break;
            }
        }
        
        if(flag){razn-=mass[i];}
    }
    return razn;
}

http://zalil.ru/34541875

вот моя лаба,посмотри плиз
0
eocron
Кактус
66 / 66 / 6
Регистрация: 23.05.2012
Сообщений: 343
29.05.2013, 22:59 #6
Пардон, ошибка:
C++
1
2
3
4
5
6
7
8
9
10
11
12
    ...
    for(unsigned int i = 0 ; i <N; i++)
    {
        if(!flag && mass[i] < 0)
        {
            flag=true;
            continue;
        }
        ...
    }
    ...
}
Теперь должно работать.
0
lulu13
0 / 0 / 0
Регистрация: 09.04.2013
Сообщений: 17
29.05.2013, 23:38  [ТС] #7
C++ (Qt)
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
inline  int MASS<T>::raznica()//mass - массив, N - количество элементов
{
    T    razn  = 0;     //Разность всех зажатых элементов
    int  count = 0;     //Счетчик для второго положительного числа
    bool flag  = false; //Поднимаем флаг при отрицательном числе
    for(unsigned int i = 0 ; i <N; i++)
    {
        if(!flag && mass[i] < 0))
        {
            flag=true;
            continue;
        }
 
        if (arr[i] > 0)
        {
            count++;
            if( count == 2 )
            {
                break;
            }
        }
        
        if(flag){razn-=arr[i];}
    }
    return razn;
}
Вот так сделала.
Теперь при тех же значениях пишет Разница = -3 =(((
Хотя правильный ответ -5

Добавлено через 35 минут
eocron, хееелп плиз(((завтра сдавать
0
29.05.2013, 23:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.05.2013, 23:38
Привет! Вот еще темы с ответами:

Вычислить сумму элементов массива расположенных между первым и вторым отрицательными элементами - C++
В одномерном массиве, состоящем из n вещественных элементов вычислить Сумму элементов массива расположенных между первым и вторым...

Вычислить произведение элементов массива, расположенных между первым и вторым нулевыми элементами - C++
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main () { const int n=10; int b; float...

Вычислить сумму элементов массива, расположенных между первым и вторым отрицательными элементами - C++
Вот условие задания: В одномерном целочисленном массиве (размер массива (не больше 20) и значения его элементов вводить с клавиатуры)...

Вычислить сумму элементов массива, расположенных между первым и вторым отрицательными элементами - C++
В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1)сумму элементов массива, расположенных между первым и вторым...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.