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

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

Войти
Регистрация
Восстановить пароль
 
amor1k
Студент
147 / 147 / 24
Регистрация: 18.01.2011
Сообщений: 469
#1

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

13.10.2011, 22:55. Просмотров 435. Ответов 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
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++]Проблемы с вычитанием одномерного массива...
Посмотрите здесь:

Получить заданное число m сложением/вычитанием цифр - C++
Очень-очень нужна помощь! дано n (n&gt;=2) количество цифр от 1 до 9 и любое число m. Написать программу расстановки между каждой парой...

Сдвиг ячейки памяти в массиве с вычитанием указателей - C++
Возник вопрос вот пример: int m = {1, 2, 3, 4, 5} int *p = &amp;m ; // Это получается адрес начала массива. int *q = &amp;m ; //...

Переставить значение элементов заданного одномерного массива, так чтобы все нулевые оказались в конце массива - C++
А не нулевые в начале, не нарушая порядок, в котором они были

Сортировка одномерного массива - C++
Изначально у нас двумерный массив. Его мы &quot;превращаем&quot; в одномерный. Дальше его нужно отсортировать по определенному закону: &gt;-10 и &lt;10;...

Сортировка одномерного массива - C++
Дан одномерный массив А, состоящий из N элементов. Отсортировать все его элементы а) улучшенным методом пузырька; б) методом прямого...

Сортировка одномерного массива - C++
Есть массив {1,2,3,4,5,6,7}, необходимо изменить порядок элементов {7,6,5,4,3,2,1}

Удалить 0 эл-ты из одномерного массива - C++
Подкиньте программу удаляющую из одномерного массива все 0 элементы. Заранее благодарен!

Сортировка одномерного массива - C++
Помогите, пожалуйста, разработать приложение сортировки одномерного массива! Может у кого есть рабочая программа или код:) Помогите!!!:(

Сортировка одномерного массива - C++
Написать программу сортировки массива методом:Камнем, сортировка Шелла, пирамильная сортировка, сортировка слиянием. (массив из случайных...

Сортировка одномерного массива С++ - C++
Доброго времени суток, Возникла дичайшая проблема с задачкой для начинающих ламеров. Эпилог: в школе программирования не было как...

удаление одномерного массива - C++
Помогите пожалуйста составить алгоритм удаление одномерного массива с max значением. Массив состоит из 10 элементов и константы....

Обработка одномерного массива - C++
задан масив A(n),n&lt;=15 целого типа.Сформировать вектор M с элементов A которые больше своих соседей то есть ai&gt;ai-1 и ai&gt;ai-1/ Выполнить...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silentnuke
Android Programmer
138 / 139 / 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
Студент
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
138 / 139 / 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
Студент
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++]Проблемы с вычитанием одномерного массива...
Ответ Создать тему
Опции темы

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