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

[C++]Проблемы с вычитанием одномерного массива... - C++

Войти
Регистрация
Восстановить пароль
 
amor1k
Студент
 Аватар для amor1k
147 / 147 / 24
Регистрация: 18.01.2011
Сообщений: 469
13.10.2011, 22:55     [C++]Проблемы с вычитанием одномерного массива... #1
Ситуация такая..
Надо сделать функцию, которая будет вычитать определенные элементы массива. Не могу разобраться как правильно записать результат вычисления...
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
template<class T>
T Math_SubEl(int count, T * a, int n)
{
    T result = NULL;
    
    int * newMassive = new int [n];
    int i = 0;
    int x;
    for( i = 0; i < n; i++)
    {
        newMassive[i] = 0;
        result[i] = 0;
    }
 
    i = 0;
 
    while(i < count)
    {
        std::cout<< " Input a " << i << " number = ";
        std::cin>>x;
        newMassive[i] = a[x];
        i++;
    }
 
    i = 0;
 
    while (i < count-1)
    {
        result[i] = newMassive[i] - newMassive[i+1];  //Эта строка неправильная
        i++;
    }
    
}
Я знаю, что проблема в "Неправильной" строке. Это был последний вариант, на который мне хватило ума...
Как можно исправить функцию, чтобы она работала? Хотя бы для целых чисел.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.10.2011, 22:55     [C++]Проблемы с вычитанием одномерного массива...
Посмотрите здесь:

C++ удаление одномерного массива
C++ Сортировака одномерного массива
C++ Заполнение одномерного массива
Сортировка одномерного массива C++
Получить заданное число m сложением/вычитанием цифр C++
C++ Сортировка одномерного массива
Обработка одномерного массива C++
Сортировка одномерного массива C++
Сортировка одномерного массива C++
C++ Сумма одномерного массива
Сортировка одномерного массива C++
C++ Сдвиг ячейки памяти в массиве с вычитанием указателей

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silentnuke
Android Programmer
137 / 138 / 5
Регистрация: 08.12.2010
Сообщений: 421
13.10.2011, 23:09     [C++]Проблемы с вычитанием одномерного массива... #2
C++
1
T result = NULL;
C++
1
2
3
4
5
    for( i = 0; i < n; i++)
    {
        newMassive[i] = 0;
        result[i] = 0;// wtf???
    }

result не массив, а переменная типа T конечно оно и не будет работать.
amor1k
Студент
 Аватар для amor1k
147 / 147 / 24
Регистрация: 18.01.2011
Сообщений: 469
13.10.2011, 23:14  [ТС]     [C++]Проблемы с вычитанием одномерного массива... #3
это я забыл убрать с прошлых вариантов.
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
template<class T>
T Math_SubEl(int count, T * a, int n)
{
    
 
    T result = NULL;
    
    T * newMassive = new T [n];
    int i = 0;
    int x;
    for( i = 0; i < n; i++)
    {
        newMassive[i] = 0;
    }
    i = 0;
    while( i < count)
    {
        std::cout<< " Input a " << i << " number = ";
        std::cin>>x;
        newMassive[i] = a[x];
        i++;
    }
    i = 0;
    while (i < count-1)
    {
        result = newMassive[i] - newMassive[i+1];
        i++;
    }
    
}
Чуть подправил, чтоб было лучше видно...
silentnuke
Android Programmer
137 / 138 / 5
Регистрация: 08.12.2010
Сообщений: 421
13.10.2011, 23:35     [C++]Проблемы с вычитанием одномерного массива... #4

Не по теме:

C++
1
2
3
4
5
6
7
8
    i = 0;
    while (i < count-1)
    {
        result = newMassive[i] - newMassive[i+1];
        i++;
    }
    
}
самое место для for, но не столь важно





так в чем суть проблемы?


кстати, имеет место выход за пределы массива на последней итерации, т.к.
i=count-1;
i+1 уже за пределами массива.
amor1k
Студент
 Аватар для amor1k
147 / 147 / 24
Регистрация: 18.01.2011
Сообщений: 469
14.10.2011, 00:25  [ТС]     [C++]Проблемы с вычитанием одномерного массива... #5
Потому что
C++
1
2
3
4
5
6
7
while( i < count)
        {
                std::cout<< " Input a " << i << " number = ";
                std::cin>>x;
                newMassive[i] = a[x];
                i++;
        }
Массив заполняется до i < count элементов.
Суть проблемы - считает не правильно. Например, мне нужно посчитать разность 2, 4, 6 элементов массива...
Если делать обычным " -= ", то число всегда будет отрицательным. А мне нужно присвоить переменной результата первый введенный элемент, и чтобы вычитание начиналось с него.

Надеюсь понятно объяснил.

Чтоб было меньше вопросов: Я в конце случайно стёр "return 0"

Добавлено через 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
T Math_SubEl(int count, T * a, int n)
{
    T result = NULL;
    
    T * newMassive = new T [n];
    int i = 0;
    int x = 0;
    for( i = 0; i < n; i++)
    {
        newMassive[i] = 0;
    }
    i = 0;
 
    while( i < count)
    {
        std::cout<< " Input a " << i+1 << " number = ";
        std::cin>>x;
        newMassive[i] = a[x];
        i++;
    }
    i = 1;
    result = newMassive[0];
    while (i < count)
    {
        result = result - newMassive[i];
        i++;
    }
    return result;
}
Yandex
Объявления
14.10.2011, 00:25     [C++]Проблемы с вычитанием одномерного массива...
Ответ Создать тему
Опции темы

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