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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.88
Ravik
1 / 1 / 0
Регистрация: 24.06.2010
Сообщений: 54
12.08.2011, 17:38     В новый динамический массив выписать все элементы массива, которые делятся на заданное число #1
Помоготи с простенькой задачей:

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

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

Сжать массив, удалив из него все элементы, которые лежат в интервале [a,b]. Освободившиеся в конце элементы массива заполнить нулями. C++
Сформировать новый массив В таким образом чтобы в него вошли те элементы массива А, которые являются числами Фибоначи C++
Сформировать и вывести на экран новый массив, который будет содержать вначале все элементы массива A(0), затем все элементы массива B(4) C++
C++ Создать новый массив А1, содержащий все четные элементы массива А, расположенные по возрастанию
C++ Все элементы, следующие за наибольшим элементом массива, увеличить на заданное число C
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
co6ak
Кошковед
 Аватар для co6ak
402 / 495 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
12.08.2011, 17:46     В новый динамический массив выписать все элементы массива, которые делятся на заданное число #2
вот тут всякие примеры с динамическими массивами / матрицами

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

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

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


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

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

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

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

На С++ ваша задача решается впару строчек посредством использования алгоритма std::copy_if и итератора вставки. Проблема в том, что вы скорей не знакомы с этими конструкциями языка.
ValeryLaptev
Эксперт C++
1005 / 784 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
12.08.2011, 18:14     В новый динамический массив выписать все элементы массива, которые делятся на заданное число #6
Цитата Сообщение от Сыроежка Посмотреть сообщение
На С++ ваша задача решается в пару строчек посредством использования алгоритма std::copy_if и итератора вставки. Проблема в том, что вы скорей не знакомы с этими конструкциями языка.
На всякий случай: в текущий стандарт алгоритм copy_if не входит. Хотя некоторые системы уже поддерживают.
Сыроежка
Заблокирован
12.08.2011, 18:30     В новый динамический массив выписать все элементы массива, которые делятся на заданное число #7
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
На всякий случай: в текущий стандарт алгоритм copy_if не входит. Хотя некоторые системы уже поддерживают.
Страуструп в своей новой книге "программирование. Принципы и практика использования С++" утверждает, что этот алгоритм уже включен в стандарт. Дело в том, что могут выходить дополнения и изменения к стандарту между принятиями очередных редакций стандарта.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
12.08.2011, 18:35     В новый динамический массив выписать все элементы массива, которые делятся на заданное число #8
Цитата Сообщение от Сыроежка Посмотреть сообщение
Страуструп в своей новой книге "программирование. Принципы и практика использования С++" утверждает, что этот алгоритм уже включен в стандарт
В С++0x - да, но не в нынешний C++03.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 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, " ") );
}
Сыроежка
Заблокирован
12.08.2011, 18:45     В новый динамический массив выписать все элементы массива, которые делятся на заданное число #10
Цитата Сообщение от asics Посмотреть сообщение
В С++0x - да, но не в нынешний C++03.
С++0ч - это не стандарт. А страуструп утверждает, что алгоритм входит в стандарт. Как я уже сказал, нужно смотреть документы, которые выпускаются к стандарту в период между появлениями следующей редакции стандарта. То есть к стандарту 2003 года могли быть выпущены дополнения отдельными документами.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
12.08.2011, 18:52     В новый динамический массив выписать все элементы массива, которые делятся на заданное число #11
Цитата Сообщение от Сыроежка Посмотреть сообщение
С++0ч - это не стандарт
Ок. Это будущая версия стандарта, который будет иметь название С++11, так норм ?
Цитата Сообщение от Сыроежка Посмотреть сообщение
А страуструп утверждает, что алгоритм входит в стандарт.
В С++03 ? Чушь.
Сыроежка
Заблокирован
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?!
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
12.08.2011, 19:03     В новый динамический массив выписать все элементы массива, которые делятся на заданное число #13
Цитата Сообщение от Сыроежка Посмотреть сообщение
Любопытно, а 'k' не удовлетворяет условию x % k?!
Вы про что, про условие удаления что ли?
Я просто обезопасился от того, что k может быть нулем и может произойти деление на нуль. А так как второе условие после || и подобных операторов не вычисляется, если первое истина, то деления на нуль не произойдет.
ValeryLaptev
Эксперт C++
1005 / 784 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
12.08.2011, 19:09     В новый динамический массив выписать все элементы массива, которые делятся на заданное число #14
Цитата Сообщение от Сыроежка Посмотреть сообщение
С++0ч - это не стандарт. А страуструп утверждает, что алгоритм входит в стандарт. Как я уже сказал, нужно смотреть документы, которые выпускаются к стандарту в период между появлениями следующей редакции стандарта. То есть к стандарту 2003 года могли быть выпущены дополнения отдельными документами.
Не было дополнений...
На РСДН давно бы уже написали об этом. Там народ бдит очень внимательно за новыми доками.
LosAngeles
Заблокирован
12.08.2011, 19:12     В новый динамический массив выписать все элементы массива, которые делятся на заданное число #15
а tr1 и tr2 за дополнения не считаются?
Сыроежка
Заблокирован
12.08.2011, 19:22     В новый динамический массив выписать все элементы массива, которые делятся на заданное число #16
Цитата Сообщение от asics Посмотреть сообщение
Ок. Это будущая версия стандарта, который будет иметь название С++11, так норм ?

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

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

- его там нет, как прикажете такое понимать ?
Сыроежка
Заблокирован
12.08.2011, 19:29     В новый динамический массив выписать все элементы массива, которые делятся на заданное число #18
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Не было дополнений...
На РСДН давно бы уже написали об этом. Там народ бдит очень внимательно за новыми доками.
Тогда значит Страуструп вводит своих читателей в заблуждение. Я посмотрел VS 2010, и там этот алгоритм присутствует!
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
12.08.2011, 19:31     В новый динамический массив выписать все элементы массива, которые делятся на заданное число #19
Цитата Сообщение от Сыроежка Посмотреть сообщение
Я посмотрел VS 2010, и там этот алгоритм присутствует!
И что в этом удевительного ? VS10 частично поддерживает C++0x, это давно известно.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.08.2011, 19:33     В новый динамический массив выписать все элементы массива, которые делятся на заданное число
Еще ссылки по теме:

Файлы. Выбрать все значения, которые делятся нацело на 2 и 4, но не делятся на 6 C++
C++ Создать новый массив С, в котором элементы массива A, которые не включаются в B
C++ Записать в третий массив все четные элементы первого массива, которые не входят во второй массив Исправить код

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

Или воспользуйтесь поиском по форуму:
Сыроежка
Заблокирован
12.08.2011, 19:33     В новый динамический массив выписать все элементы массива, которые делятся на заданное число #20
Цитата Сообщение от asics Посмотреть сообщение
Он утверждает, что

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

- его там нет, как прикажете такое понимать ?
Так и понимать, как я предполагаю, что возможно после 2003 года вышел официальный документ, который поправляет стандарт. Например, для С, принятого в 1989 году, в 1995 году выходил дополнительный документ, который не входил в текст стандарта (текст стандарта, как был принят, так уже не менялся, который вносил изменения в стандарт.
Yandex
Объявления
12.08.2011, 19:33     В новый динамический массив выписать все элементы массива, которые делятся на заданное число
Ответ Создать тему
Опции темы

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