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

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

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

Этап в задаче по одномерным массивам - C++

25.01.2014, 08:48. Просмотров 279. Ответов 6
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void zeroElementsDelete(int *array, size_t *arraySize)
{
       size_t zeroCounter(0);
       for (size_t i=0; i < *arraySize; i++)
       {
           if (!(*(array+i)))
           {
                zeroCounter++;
           }
           else
           {
               *(array+ i - zeroCounter) = *(array+i);
           }
        }
*arraySize -=zeroCounter;
}
Не могу разобраться что каждый из этих операторов делает, особенно не понятно условие с указателем (!(*(array+i))). Помогите ,пожалуйста, разобраться в этом
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.01.2014, 08:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Этап в задаче по одномерным массивам (C++):

Задания по одномерным массивам. - C++
Прошу помочь.. 1. Дана последовательность целых чисел a1,a2, ..., an. Выяснить, какое число встречается раньше - положительное или...

Вопрос по одномерным массивам. - C++
Всем доброго времени суток. 1. Написал код но при запуске выкидывает ошибку и условия не считает. В одномерном массиве формируемом...

Задача по одномерным массивам - C++
Сформировать одномерный массив целых чисел а, используя датчик случайных чисел. Удалить 5 последних элементов массива. Прибавить в начало...

Задача по одномерным массивам - C++
Помогите плиз решить задачу по одномерным массивам в C++ &quot;Дан массив целых чисел из n элементов. Найти удвоенную сумму положительных...

задача по одномерным массивам - C++
1) Условие задачи: В массиве A определить среднюю длину непрерывных участков отрицательных значений элементов 2) Если у...

Два задания по одномерным массивам. - C++
1. Дан вещественный массив А. Определить количество и индексы тех элементов массива, которые меньше элементов, стоящих в соседних...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Tulosba
:)
Эксперт С++
4396 / 3239 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
25.01.2014, 09:24 #2
Цитата Сообщение от Ferz137 Посмотреть сообщение
(!(*(array+i)))
начинаем рассматривать изнутри, т.е. самое вложенное выражение: array+i.
т.к. array является указателем на начальный эл-т массива, то array+i будет указывать на i-ый элемент массива.
Далее идет *, т.е. разыменование адреса. Получение значения по этому адресу. В данном случае - значение элемента с индексом i в массиве array.
Ну и в итоге идет оператор !, инверсия. Т.е. если элемент был равен 0, то получим 1(истина), если не равен 0, то получим 0(ложь).
1
Ferz137
1 / 1 / 0
Регистрация: 08.01.2014
Сообщений: 17
25.01.2014, 10:14  [ТС] #3
C++
1
2
3
4
5
6
7
8
zeroCounter++;
}
else
{
*(array+ i - zeroCounter) = *(array+i);
}
}
*arraySize -=zeroCounter;
А в этих можете кратко описать что делает программа?
0
Tulosba
:)
Эксперт С++
4396 / 3239 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
25.01.2014, 10:24 #4
C++
1
zeroCounter++;
Инкремент переменной zeroCounter. Т.е. увеличение на единицу.
C++
1
*(array+ i - zeroCounter) = *(array+i);
значение i-ого элемента приваивается (i-zeroCounter)-ому элементу.
C++
1
*arraySize -=zeroCounter;
Уменьшение значения, которое расположено по адресу arraySize на zeroCounter.
Равносильно такому коду:
C++
1
*arraySize = *arraySize - zeroCounter;
1
Ferz137
1 / 1 / 0
Регистрация: 08.01.2014
Сообщений: 17
25.01.2014, 10:29  [ТС] #5
Спасибо
0
Ferz137
1 / 1 / 0
Регистрация: 08.01.2014
Сообщений: 17
26.01.2014, 13:02  [ТС] #6
До меня всё-равно не доходит где в этом этапе задачи функция,которая выбрасывает найденные нулевые элементы в массиве
0
Tulosba
:)
Эксперт С++
4396 / 3239 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
26.01.2014, 13:10 #7
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Ferz137 Посмотреть сообщение
До меня всё-равно не доходит где в этом этапе задачи функция,которая выбрасывает найденные нулевые элементы в массиве
Вот эта строка, которая выполняется в цикле:
C++
1
*(array+ i - zeroCounter) = *(array+i);
Ненулевые элементы "сдвигаются" в начало массива.
А потом игнорируются лишние элементы.
C++
1
*arraySize -=zeroCounter;
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.01.2014, 13:10
Привет! Вот еще темы с ответами:

лаба по одномерным и многомерным массивам - C++
Нужно сделать вот такую лабораторную, буду рад любой написанной функции, заранее спасибо. 1) N = 45 2) Функция для получения элементов...

решите программы по одномерным массивам на языке С++ - C++
1.Массив заполнить с помощью генератора случайных чисел в интервале в количестве 15 элементов. Сформировать массив Р из элементов массива...

Написать функцию, которая по двум заданным одномерным массивам вычисляет двумерный массив и возвращает его максимальный элемент - C++
Написать функцию, которая по двум заданным одномерным массивам (A размера m и B размера n) вычисляет двумерный массив c(ij)=a(i)*b(j) и...

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


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

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

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