Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.58/19: Рейтинг темы: голосов - 19, средняя оценка - 4.58
Ravik
1 / 1 / 0
Регистрация: 24.06.2010
Сообщений: 55
1

В новый динамический массив выписать все элементы массива, которые делятся на заданное число

12.08.2011, 17:38. Просмотров 3552. Ответов 24
Метки нет (Все метки)

Помоготи с простенькой задачей:

Дан массив произвольных чисел
необходимо в новый динамический массив выписать все элементы, которые делятся на число "k"
А именно перебрать все элементы массива и, если число делится на k, то расширить динамический массив на один элемент и сохранить значение.

Заранее спасибо)
Очень выручите))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.08.2011, 17:38
Ответы с готовыми решениями:

Подсчитать количество элементов массива, которые нацело делятся на заданное число K
Через массив динамический

Выписать все четные элементы массива и переписать их в другой массив
массив получен, надо выписать все четные числа массива и переписать их в еще...

Сформировать и вывести на экран новый массив, который будет содержать вначале все элементы массива A(0), затем все элементы массива B(4)
Здравствуйте! Помогите написать парочку программ... 3. Даны массивы A(0) и...

В матрице А найти все элементы, которые превышают по абсолютной величине заданное число В, и поместить их в матрицу С
Как элемент одной матрицы перенести в другую матрицу? Если что, вот задание:...

Все положительные элементы массива уменьшить на заданное число
Нам дали задачу, а я не понимаю как написать к ней код. Помогите кому не лень:3...

24
co6ak
Кошковед
515 / 503 / 63
Регистрация: 12.04.2010
Сообщений: 1,392
12.08.2011, 17:46 2
вот тут всякие примеры с динамическими массивами / матрицами

выдернуть нужный кусок и подправить будет довольно легко при наличии каких-либо знаний в черепушке
0
Ravik
1 / 1 / 0
Регистрация: 24.06.2010
Сообщений: 55
12.08.2011, 17:57  [ТС] 3
Спасибо, конечно.

Но вот что делать при полном их отсутсвии?

Меня интересует именно та часть которая расширяет уже существующий массив на один элемент и не один раз
0
LosAngeles
Заблокирован
12.08.2011, 18:04 4
Цитата Сообщение от Ravik Посмотреть сообщение
та часть которая расширяет уже существующий массив на один элемент и не один раз
std::vector, хотя и самому написать не сложно


Цитата Сообщение от Ravik Посмотреть сообщение
Но вот что делать при полном их отсутсвии?
идти во фриланс
0
Сыроежка
Заблокирован
12.08.2011, 18:08 5
Цитата Сообщение от Ravik Посмотреть сообщение
Помоготи с простенькой задачей:

Дан массив произвольных чисел
необходимо в новый динамический массив выписать все элементы, которые делятся на число "k"
А именно перебрать все элементы массива и, если число делится на k, то расширить динамический массив на один элемент и сохранить значение.

Заранее спасибо)
Очень выручите))
Тут все зависит от двух факторов: 1) на каком языке программирования, С или С++, вам надо решить задачу; 2) какой материал по языку вы проходили.

Например, если речь идет о С++, то обычно под динамическими массивами понимают шаблонный класс вектор. А если речь идет о С, то надо будет пользоваться функцией realloc/

На С++ ваша задача решается впару строчек посредством использования алгоритма std::copy_if и итератора вставки. Проблема в том, что вы скорей не знакомы с этими конструкциями языка.
0
ValeryLaptev
Эксперт С++
1050 / 829 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
12.08.2011, 18:14 6
Цитата Сообщение от Сыроежка Посмотреть сообщение
На С++ ваша задача решается в пару строчек посредством использования алгоритма std::copy_if и итератора вставки. Проблема в том, что вы скорей не знакомы с этими конструкциями языка.
На всякий случай: в текущий стандарт алгоритм copy_if не входит. Хотя некоторые системы уже поддерживают.
0
Сыроежка
Заблокирован
12.08.2011, 18:30 7
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
На всякий случай: в текущий стандарт алгоритм copy_if не входит. Хотя некоторые системы уже поддерживают.
Страуструп в своей новой книге "программирование. Принципы и практика использования С++" утверждает, что этот алгоритм уже включен в стандарт. Дело в том, что могут выходить дополнения и изменения к стандарту между принятиями очередных редакций стандарта.
0
asics
Freelance
Эксперт С++
2854 / 1789 / 355
Регистрация: 09.09.2010
Сообщений: 3,841
12.08.2011, 18:35 8
Цитата Сообщение от Сыроежка Посмотреть сообщение
Страуструп в своей новой книге "программирование. Принципы и практика использования С++" утверждает, что этот алгоритм уже включен в стандарт
В С++0x - да, но не в нынешний C++03.
0
diagon
Higher
1937 / 1203 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
12.08.2011, 18:38 9
А зачем он, если remove_copy_if есть?
Небольшой быдлокод:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
int main(){
    srand( time(0) );
    const int SIZE = 10;
    std::vector<int> random_arr(SIZE), new_arr;
    int k;
    std::cin >> k;
    std::generate(random_arr.begin(), random_arr.end(), [](){ return -50 + rand() % 100; } );
    std::cout << "Random array: ";
    std::copy(random_arr.begin(), random_arr.end(), std::ostream_iterator<int> (std::cout, " ") );
    std::remove_copy_if(random_arr.begin(), random_arr.end(), std::back_inserter(new_arr), [=](int x){ return !k || x % k; } );
    std::cout << std::endl << "New array: ";
    std::copy(new_arr.begin(), new_arr.end(), std::ostream_iterator<int> (std::cout, " ") );
}
0
Сыроежка
Заблокирован
12.08.2011, 18:45 10
Цитата Сообщение от asics Посмотреть сообщение
В С++0x - да, но не в нынешний C++03.
С++0ч - это не стандарт. А страуструп утверждает, что алгоритм входит в стандарт. Как я уже сказал, нужно смотреть документы, которые выпускаются к стандарту в период между появлениями следующей редакции стандарта. То есть к стандарту 2003 года могли быть выпущены дополнения отдельными документами.
0
asics
Freelance
Эксперт С++
2854 / 1789 / 355
Регистрация: 09.09.2010
Сообщений: 3,841
12.08.2011, 18:52 11
Цитата Сообщение от Сыроежка Посмотреть сообщение
С++0ч - это не стандарт
Ок. Это будущая версия стандарта, который будет иметь название С++11, так норм ?
Цитата Сообщение от Сыроежка Посмотреть сообщение
А страуструп утверждает, что алгоритм входит в стандарт.
В С++03 ? Чушь.
1
Сыроежка
Заблокирован
12.08.2011, 19:03 12
Любопытно, а 'k' не удовлетворяет условию x % k?!

Добавлено через 10 минут
Цитата Сообщение от diagon Посмотреть сообщение
А зачем он, если remove_copy_if есть?
Небольшой быдлокод:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
int main(){
    srand( time(0) );
    const int SIZE = 10;
    std::vector<int> random_arr(SIZE), new_arr;
    int k;
    std::cin >> k;
    std::generate(random_arr.begin(), random_arr.end(), [](){ return -50 + rand() % 100; } );
    std::cout << "Random array: ";
    std::copy(random_arr.begin(), random_arr.end(), std::ostream_iterator<int> (std::cout, " ") );
    std::remove_copy_if(random_arr.begin(), random_arr.end(), std::back_inserter(new_arr), [=](int x){ return !k || x % k; } );
    std::cout << std::endl << "New array: ";
    std::copy(new_arr.begin(), new_arr.end(), std::ostream_iterator<int> (std::cout, " ") );
}
Любопытно, а !k не удовлетворяет условию x % k?!
0
diagon
Higher
1937 / 1203 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
12.08.2011, 19:03 13
Цитата Сообщение от Сыроежка Посмотреть сообщение
Любопытно, а 'k' не удовлетворяет условию x % k?!
Вы про что, про условие удаления что ли?
Я просто обезопасился от того, что k может быть нулем и может произойти деление на нуль. А так как второе условие после || и подобных операторов не вычисляется, если первое истина, то деления на нуль не произойдет.
0
ValeryLaptev
Эксперт С++
1050 / 829 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
12.08.2011, 19:09 14
Цитата Сообщение от Сыроежка Посмотреть сообщение
С++0ч - это не стандарт. А страуструп утверждает, что алгоритм входит в стандарт. Как я уже сказал, нужно смотреть документы, которые выпускаются к стандарту в период между появлениями следующей редакции стандарта. То есть к стандарту 2003 года могли быть выпущены дополнения отдельными документами.
Не было дополнений...
На РСДН давно бы уже написали об этом. Там народ бдит очень внимательно за новыми доками.
0
LosAngeles
Заблокирован
12.08.2011, 19:12 15
а tr1 и tr2 за дополнения не считаются?
0
Сыроежка
Заблокирован
12.08.2011, 19:22 16
Цитата Сообщение от asics Посмотреть сообщение
Ок. Это будущая версия стандарта, который будет иметь название С++11, так норм ?

В С++03 ? Чушь.
Стр. 793: "Из-за моей ошибки этот алгоритм выпал из стандарта 1998 ISO Standard. В настоящее время эта ошибка исправлена, но до сих пор встречаются реализации языка С++, в которых неталгоритма copy_if...."

Так что сообщите Страуструпу, что он несет чушь!
0
asics
Freelance
Эксперт С++
2854 / 1789 / 355
Регистрация: 09.09.2010
Сообщений: 3,841
12.08.2011, 19:29 17
Цитата Сообщение от Сыроежка Посмотреть сообщение
Так что сообщите Страуструпу, что он несет чушь!
Он утверждает, что
Цитата Сообщение от Сыроежка Посмотреть сообщение
этот алгоритм выпал из стандарта 1998 ISO Standard
следовательно в стандарте 2003(т. е. нынешнем) года он должен быть, смотрю документ INTERNATIONAL STANDARD ISO/IEC 14882
Second edition
2003-10-15

- его там нет, как прикажете такое понимать ?
0
Сыроежка
Заблокирован
12.08.2011, 19:29 18
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Не было дополнений...
На РСДН давно бы уже написали об этом. Там народ бдит очень внимательно за новыми доками.
Тогда значит Страуструп вводит своих читателей в заблуждение. Я посмотрел VS 2010, и там этот алгоритм присутствует!
0
asics
Freelance
Эксперт С++
2854 / 1789 / 355
Регистрация: 09.09.2010
Сообщений: 3,841
12.08.2011, 19:31 19
Цитата Сообщение от Сыроежка Посмотреть сообщение
Я посмотрел VS 2010, и там этот алгоритм присутствует!
И что в этом удевительного ? VS10 частично поддерживает C++0x, это давно известно.
0
Сыроежка
Заблокирован
12.08.2011, 19:33 20
Цитата Сообщение от asics Посмотреть сообщение
Он утверждает, что

следовательно в стандарте 2003(т. е. нынешнем) года он должен быть, смотрю документ INTERNATIONAL STANDARD ISO/IEC 14882
Second edition
2003-10-15

- его там нет, как прикажете такое понимать ?
Так и понимать, как я предполагаю, что возможно после 2003 года вышел официальный документ, который поправляет стандарт. Например, для С, принятого в 1989 году, в 1995 году выходил дополнительный документ, который не входил в текст стандарта (текст стандарта, как был принят, так уже не менялся, который вносил изменения в стандарт.
0
12.08.2011, 19:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.08.2011, 19:33

Все элементы, следующие за наибольшим элементом массива, увеличить на заданное число C
Все элементы, следующие за наибольшим элементом массива, увеличить на...

Создать новый массив С, в котором элементы массива A, которые не включаются в B
Даны два массива : А и B. Необходимо создать третий массив, в котором нужно...

Из массива Х все четные элементы записать в динамический массив Y
Сформировать динамический одномерный целочисленный массив Х. Найти количество...


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

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

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