Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.90/30: Рейтинг темы: голосов - 30, средняя оценка - 4.90
1 / 1 / 0
Регистрация: 24.06.2010
Сообщений: 55
1

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

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

Author24 — интернет-сервис помощи студентам
Помоготи с простенькой задачей:

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

Заранее спасибо)
Очень выручите))
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.08.2011, 17:38
Ответы с готовыми решениями:

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

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

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

Все элементы массива которые не делятся на 5, но делятся на 7 заменить нулями и вывести весь массив
Где ошибка? #include<stdio.h> #include<math.h> #define N 5 int main() { int i, a, k=0;...

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

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

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

Меня интересует именно та часть которая расширяет уже существующий массив на один элемент и не один раз
0
Заблокирован
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
Эксперт С++
1069 / 848 / 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
Freelance
Эксперт С++
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
12.08.2011, 18:35 8
Цитата Сообщение от Сыроежка Посмотреть сообщение
Страуструп в своей новой книге "программирование. Принципы и практика использования С++" утверждает, что этот алгоритм уже включен в стандарт
В С++0x - да, но не в нынешний C++03.
0
Higher
1953 / 1219 / 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
Freelance
Эксперт С++
2891 / 1826 / 356
Регистрация: 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
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
12.08.2011, 19:03 13
Цитата Сообщение от Сыроежка Посмотреть сообщение
Любопытно, а 'k' не удовлетворяет условию x % k?!
Вы про что, про условие удаления что ли?
Я просто обезопасился от того, что k может быть нулем и может произойти деление на нуль. А так как второе условие после || и подобных операторов не вычисляется, если первое истина, то деления на нуль не произойдет.
0
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
12.08.2011, 19:09 14
Цитата Сообщение от Сыроежка Посмотреть сообщение
С++0ч - это не стандарт. А страуструп утверждает, что алгоритм входит в стандарт. Как я уже сказал, нужно смотреть документы, которые выпускаются к стандарту в период между появлениями следующей редакции стандарта. То есть к стандарту 2003 года могли быть выпущены дополнения отдельными документами.
Не было дополнений...
На РСДН давно бы уже написали об этом. Там народ бдит очень внимательно за новыми доками.
0
Заблокирован
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
Freelance
Эксперт С++
2891 / 1826 / 356
Регистрация: 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
Freelance
Эксперт С++
2891 / 1826 / 356
Регистрация: 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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.08.2011, 19:33
Помогаю со студенческими работами здесь

Перенести в новый массив все элементы исходного, которые делятся на 3
Создать массив на N элементов,N вводится на клавиатуре,Заполнить массив случайными...

Двумерный массив. Сформировать из элементов массива одномерный массив, в который поместить все нечетные элементы, которые делятся на 3
Дан двумерный массив А с размерностью NxN, элементы массива - случайные целые числа из диапазона...

Построить новый массив, увеличивая элементы исходного массива на заданное число
Дан массив, содержащий не более 20 чисел. Построить новый, увеличивая элементы исходного массива на...

Сумма элементов массива, которые без остатка делятся на заданное число
Найти сумму всех элементов массива (массив динамический, одномерный) которые без остатка деляться...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru