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

Сортировка массива по делимости элементов нацело - C++

Восстановить пароль Регистрация
 
murus
0 / 0 / 0
Регистрация: 11.01.2011
Сообщений: 23
12.01.2011, 16:03     Сортировка массива по делимости элементов нацело #1
Дан массив целых чисел. Сформировать второй массив, включив в него все
элементы первого, которые делятся нацело на 5.

заранее спасибо за любую помощь!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.01.2011, 16:03     Сортировка массива по делимости элементов нацело
Посмотрите здесь:

Сортировка элементов массива в StringGrid C++
C++ Введите с клавиатуры число х и удалите из массива каждый элемент, делящийся нацело на х, а оставшиеся уплотните к началу массива
Сортировка массива по убыванию элементов С++ C++
массив из 20 элементов, проверить последние 5 элементов делятся ли они нацело на 2 C++
C++ Сортировка элементов массива в указанном диапазоне
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
12.01.2011, 16:09     Сортировка массива по делимости элементов нацело #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
 
int main()
{
     const int mod=5;
     std::vector<int> vec((std::istream_iterator<int>(std::cin)), std::istream_iterator<int>());
     std::vector<int> res;
     for(size_t i=0; i<vec.size(); ++i)
        if(vec[i]%mod == 0)
           res.push_back(vec[i]);
     std::copy(res.begin(), res.end(), std::ostream_iterator<int>(std::cout, " "));
     return 0;
}
Или так.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
#include <functional>
 
int main()
{
     const int mod=5;
     std::vector<int> vec((std::istream_iterator<int>(std::cin)), std::istream_iterator<int>());
     std::vector<int> res;
     std::remove_copy_if(vec.begin(), vec.end(), std::back_inserter(res), std::bind2nd(std::modulus<int>(), mod));
     std::copy(res.begin(), res.end(), std::ostream_iterator<int>(std::cout, " "));
     return 0;
}
murus
0 / 0 / 0
Регистрация: 11.01.2011
Сообщений: 23
12.01.2011, 16:41  [ТС]     Сортировка массива по делимости элементов нацело #3
спасибо большое! буду разбираться с обоими вариантами)
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
12.01.2011, 16:45     Сортировка массива по делимости элементов нацело #4
murus, В помощь
murus
0 / 0 / 0
Регистрация: 11.01.2011
Сообщений: 23
17.01.2011, 12:21  [ТС]     Сортировка массива по делимости элементов нацело #5
спасибо, все еще разбираюсь...
а без использования спец. функций можно это осуществить?
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
17.01.2011, 12:57     Сортировка массива по делимости элементов нацело #6
а что не так со спецфункциями
murus
0 / 0 / 0
Регистрация: 11.01.2011
Сообщений: 23
17.01.2011, 13:02  [ТС]     Сортировка массива по делимости элементов нацело #7
просто думаю, можно ли тоже самое сделать не прибегая к ним... хочется разобраться с самых азов, а не просто заучить название функций. например максимум и минимум можно находить с помощью встроенной функции, а можно сортировкой...
мне в данном случае самым простым способом для понимания... да и просто на самом деле я еще в самом начале изучения, без комментариев к функциям сложно сразу разобраться.
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
17.01.2011, 13:23     Сортировка массива по делимости элементов нацело #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;
 
int main(){
    int n;
    cout<<"input n\n";
    cin>>n;
    int mas[n], res[n], meter=0;
    cout<<"\ninput elements\n";
    for(int i=0;i<n;i++){
        cin>>mas[i];
        if(!(mas[i]%5)){
            res[meter]=mas[i];
            ++meter;
        }
    }
    for(int i=0; i<meter; i++) cout<<res[i]<<"  ";
}
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
17.01.2011, 13:25     Сортировка массива по делимости элементов нацело #9
murus, ВОзможно. Возможно и на потолке спать. Но зачем? Хочется разобраться с самых азов? Вперед. Чтобы разобраться с самых азов нужно и писать самому.

Создаем динамический массив размером N, заполняем, циклически проверяем сколько элементов в массиве делится на 5 без остатка, прибавляя счетчик на каждом таком элементе, выделяем память под второй массив в кол-ве элементов которые делятся на 5 без остатка, циклически проверяем первый массив если элемент делится на 5 без остатка - записываем во второй массив и так до конца 1 массива, выводим второй массив на экран. Вперед. Что не будет получатся - пишите

Добавлено через 46 секунд
igorrr37, gcc подозреваю?
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
17.01.2011, 13:43     Сортировка массива по делимости элементов нацело #10
Цитата Сообщение от ForEveR Посмотреть сообщение
igorrr37, gcc подозреваю?
да, 4.5.1
ForEveR
17.01.2011, 13:46
  #11

Не по теме:

igorrr37, Не нравится мне у них такое отхождение от стандарта...

C++
1
2
    cin>>n;
    int mas[n],

silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
17.01.2011, 13:51     Сортировка массива по делимости элементов нацело #12
ForEveR, ога, мне тоже, но особо с этим делом не разгуляешься, массив всё так же создаётся в стеке и большой размер задать не удастся.
murus
0 / 0 / 0
Регистрация: 11.01.2011
Сообщений: 23
17.01.2011, 14:01  [ТС]     Сортировка массива по делимости элементов нацело #13
ForEveR, спасибо еще раз! да я конечно пытаюсь писать самостоятельно, но в самом начале осваивания проще писать, опираясь на какой-то пример... и разобрав его детально, что есть что и почему именно так, а не по-другому. ведь одну и ту же задачу можно вообще с разными подходами решать и это тоже интересно как начинающему))

igorrr37, спс, но у меня ошибки выдает при компиляции
-невозможно выделить память для массива постоянного нулевого размера
- неизвестный размер mas и res
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
17.01.2011, 14:07     Сортировка массива по делимости элементов нацело #14
murus, Пробуйте по-моему алгоритму) Если качественно делать - без динамического выделения памяти не обойтись
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
17.01.2011, 14:22     Сортировка массива по делимости элементов нацело #15
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using namespace std;
 
int main(){
    int n, meter=0;
    cout<<"input n\n";
    cin>>n;
    int* mas=new int[n];
    int* res=new int[n];
    cout<<"\ninput elements\n";
    for(int i=0;i<n;i++){
        cin>>mas[i];
        if(!(mas[i]%5)){
            res[meter]=mas[i];
            ++meter;
        }
    }
    for(int i=0; i<meter; i++) cout<<res[i]<<"  ";
}
murus
0 / 0 / 0
Регистрация: 11.01.2011
Сообщений: 23
17.01.2011, 14:57  [ТС]     Сортировка массива по делимости элементов нацело #16
igorrr37, работает... но после ввода элементов массива печатает не новый массив, а только цифру 5... причем независимо от того какие вводятся элементы и сколько

ForEveR, буду пробовать)
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
17.01.2011, 19:29     Сортировка массива по делимости элементов нацело #17
igorrr37, неплохо бы еще память освободить!!!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.01.2011, 20:51     Сортировка массива по делимости элементов нацело
Еще ссылки по теме:

Сортировка элементов одномерного массива C++
Сортировка элементов одномерного массива C++
Сортировка элементов двумерного массива C++

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

Или воспользуйтесь поиском по форуму:
murus
0 / 0 / 0
Регистрация: 11.01.2011
Сообщений: 23
17.01.2011, 20:51  [ТС]     Сортировка массива по делимости элементов нацело #18
Люди, я сделала! взяла чуть более упрощенную схему когда числа уже известны и их не нужно вводить с клавиатуры.
Если не трудно посмотрите одним глазом нет ли косяков, на консоли вроде все правильно выводится, но вдруг я в коде накосячила где-то...

делала по подобию схемы igorrr37. Вот код, может пригодится кому-то еще:
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
34
35
36
37
#include <stdafx.h>
#include <stdio.h>
#include <conio.h>
 
void main(){
int mas[7] = {15, 20, 36, 100, 12, 8, 35};
 
int i;
 
printf("massiv:\n");
for (i = 0; i < 7; i++)
 
printf("%d\t", mas[i]); //выводим массив с пробелами (табуляцией)
 
 
int n = 0; //объявляем кол-во чисел первого массива, делящееся нацело на 5
int* result = new int[n]; //объявляем второй массив
int k = 0; //объявляем индекс результирующего массива
 
for (i = 0; i < 7; i++)
{
    if (mas[i]%5 == 0)
    {
    result[k] = mas[i];
    ++k;
    }
}
 
printf("\nresult:\n");
for (i = 0; i < k; i++)
 
  printf ("%d\t", result[i]); //выводим результирующий массив на консоль
 
 
getch ();
 
}
спасибо всем кто помогал! так здорово когда программа наконец получается!
Yandex
Объявления
17.01.2011, 20:51     Сортировка массива по делимости элементов нацело
Ответ Создать тему
Опции темы

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