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

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

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

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

13.10.2011, 22:55. Просмотров 442. Ответов 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++;
    }
    
}
Я знаю, что проблема в "Неправильной" строке. Это был последний вариант, на который мне хватило ума...
Как можно исправить функцию, чтобы она работала? Хотя бы для целых чисел.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.10.2011, 22:55
Здравствуйте! Я подобрал для вас темы с ответами на вопрос [C++]Проблемы с вычитанием одномерного массива... (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++
1 Для произвольного двумерного массива найти столбец с наибольшей суммой элементов и записать их в виде одномерного массива.

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

Функция, которая удаляет из целочисленного одномерного массива все, и возвращает новый размер массива - C++
Разработать и испытать функцию, которая удаляет из целочисленного одномерного массива все, и возвращает новый размер массива. #include...

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

4
silentnuke
Android Programmer
139 / 140 / 5
Регистрация: 08.12.2010
Сообщений: 421
13.10.2011, 23:09 #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 конечно оно и не будет работать.
0
amor1k
Студент
147 / 147 / 24
Регистрация: 18.01.2011
Сообщений: 469
13.10.2011, 23:14  [ТС] #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++;
    }
    
}
Чуть подправил, чтоб было лучше видно...
0
silentnuke
Android Programmer
139 / 140 / 5
Регистрация: 08.12.2010
Сообщений: 421
13.10.2011, 23:35 #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 уже за пределами массива.
0
amor1k
Студент
147 / 147 / 24
Регистрация: 18.01.2011
Сообщений: 469
14.10.2011, 00:25  [ТС] #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;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.10.2011, 00:25
Привет! Вот еще темы с ответами:

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

Составить программу сортировки одномерного числового массива от начала массива к элементу с заданным номером по убыванию (методом выбора) - C++
Помогите составить программу на С++. Заданный номер - 28.

Заменить все элементы массива, попадающие в интервал, нулем. Выполнить двумя способами: с помощью одномерного и двумерного массива. - C++
Всем доброго времени суток. Заменить все элементы,попадающие в интервал ,нулем.Выполнить двумя способами,с помощью одномерного и...

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


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

Или воспользуйтесь поиском по форуму:
5
Yandex
Объявления
14.10.2011, 00:25
Ответ Создать тему
Опции темы

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