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

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

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

Удалить из массива все элементы, в которых последняя цифра чётная, а само число делится на неё - C++

19.11.2012, 18:30. Просмотров 472. Ответов 7
Метки нет (Все метки)

Дан одномерный массив целых чисел, заполненный случайным образом числами из промежутка [-a;b] . Удалить из него все элементы, в которых последняя цифра чётная, а само число делится на неё.
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
#include "stdafx.h"
#include "stdlib.h"
#include "iostream"
using namespace std;
 
int main()
{   
    int a,b;
    int mass[10];
    cout<<"Please enter the border -a"<<"\n";
    cin>>a;
    cout<<"Please enter a border b"<<"\n";
    cin>>b;
    for(int i = 0; i <9; i++)
    {   mass[i] = a+rand()%b;   }
 
    for(int i = 0; i <9; i++)
    {
        
        int k=mass [i]%10;
        if (k!=0&&k%2==0&&mass[i]%k==0) {mass [i]=mass [i+1];cout << mass [i]<<"\n";}
        
    }
    return 1;
}
В общем если не сдвигать элементы, а просто выводить все кроме ненужных, то все четко и хорошо получается, но препод сказал нужно именно сдвинуть, а с этим все сложнее. Программа выполняется, но выдает в конце число выходящие за заданные рамки.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2012, 18:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удалить из массива все элементы, в которых последняя цифра чётная, а само число делится на неё (C++):

Удалить из массива все элементы, последняя цифра которых равна заданной - C++
не знаю,как удалить,знаю,что сдвигом массива,а как хз:wall:хелп:-| #include &lt;iostream&gt; using namespace std; int main() { int n; ...

Удалить из массива все элементы, последняя цифра которых равна заданному числу D - C++
Помогите с решением. Дан одномерный массив, элементы которого - целые числа, а также цифра D . Удалите из заданного массива все элементы,...

Удалить все элементы массива, в которых есть цифра 3 - C++
Дан массив целых чисел (n=15) заполненный случайным образом, промежутком от -20 до 50 удалить все элементы в которых есть цифра 3. Где-то...

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

Найти все двузначные числа в записи которых есть цифра n или само число делиться на n - C++
Требуется вывести по возрастанию все числа, удовлетворяющие условию задачи

Найти все четырёхзначные числа, у которых сумма крайних цифр равна сумме средних цифр, а само число делится на 6 и 27 - C++
найти все четырёхзначные числа , у которых сумма крайних цифр равна сумме средних цифр , а само число делится на 6 и 27 . В С++

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
19.11.2012, 18:33 #2
Mishaka, а нельзя использовать еще один массив и сохранять результат туда? так вам было бы проще
Mishaka
0 / 0 / 0
Регистрация: 25.09.2012
Сообщений: 32
19.11.2012, 18:34  [ТС] #3
Цитата Сообщение от I.M. Посмотреть сообщение
Mishaka, а нельзя использовать еще один массив и сохранять результат туда? так вам было бы проще
так не, препод не примет...(
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
19.11.2012, 18:38 #4
Mishaka, тогда вам нужно делать нормальный сдвиг элементов массива. Сейчас у вас его нет.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int size = 9;
for(int i = 0; i <size;)
    {
        
        int k=mass [i]%10;
        if (k!=0&&k%2==0&&mass[i]%k==0)
        {
            for (int j = i; j < size-1; ++j)
                mass[j] = mass[j+1];
            size--;
        }
        else i++;      
    }
Mishaka
0 / 0 / 0
Регистрация: 25.09.2012
Сообщений: 32
20.11.2012, 19:22  [ТС] #5
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
38
#include "stdafx.h"
#include "iostream"
using namespace std;
 
int main()
 
{   
    int a,b;
    const int n = 10;
    int p=0;
    cout<< "Please enter o border -a\n";
    cin >>a;
    cout << "Please enter a border b\n";
    cin>>b;
    int mass[n];
    for(int i=0; i<n; i++){
        mass[i]=rand()%(b-a+1)+a;
    }
 
    for (int i=0;i<n;i++){
        cout<<mass[i]<<"\t";
    }
    for(int i = 0; i<n;i++)
    {
        
        int k=mass[i]%10;
        if (k!=0&&k%2==0&&mass[i]%k==0)
        {
            for( int j=i;j<n-1-p;j++)
            {mass[j]=mass[j+1];}
            p++;
        }
    }
    for (int i=0;i<=n-p;i++){
        cout<<mass[i]<<"\t";
    }
    return 1;
}
Добавлено через 20 секунд
все равно не работает!!!!
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
20.11.2012, 19:26 #6
Mishaka, я уже написал вам рабочий цикл для сдвига элементов массива на одну позицию. Зачем вы его изменили?
Mishaka
0 / 0 / 0
Регистрация: 25.09.2012
Сообщений: 32
20.11.2012, 19:30  [ТС] #7
Цитата Сообщение от I.M. Посмотреть сообщение
Mishaka, я уже написал вам рабочий цикл для сдвига элементов массива на одну позицию. Зачем вы его изменили?
да потому что если в массиве попадаются два рядом стоящие числа подходящие под условие то он и выводит что зря....
komand0
8 / 8 / 0
Регистрация: 20.06.2012
Сообщений: 225
20.11.2012, 19:49 #8
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include "iostream"
using namespace std;
 
int main()
 
{   
    int a,b;
    const int n = 10;
    int p = 0;
    cout<< "Please enter a border -a\n";
    cin >>a;
    cout << "Please enter a border b\n";
    cin>>b;
 
    int mass[n];
 
    for(int i=0; i<n; i++){
        mass[i]=rand()%(b-a+1)+a;
    }
 
    for (int i=0;i<n;i++)
        cout<<mass[i]<<" ";
 
    for(int i = 0; i<n; i++)
    {
        if((mass[i]%2 == 0) && (mass[i] == 0 || mass[i] % (mass[i]%10) == 0))
        {
            mass[i] = NULL;
            p++;
        }
    }
    for (int i=0;i<=n-p;i++)
    {
        if(mass[i] == NULL)
        {
            int j = i+1;
            for( ;j < n; j++)
            {
                if(mass[j]!=NULL)
                {
                    mass[i] = mass[j];
                    mass[j] = NULL;
                    break;
                }
            }
            if(j==n)
                break;
        }
    }
    for (int i=0; i < n-p; i++)
    {
        cout<<mass[i]<<" ";
    }
    cout << endl;
 
    system("PAUSE");
    return 0;
}
Добавлено через 58 секунд
если я правильно понял условие то это оно

Добавлено через 6 минут
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include "iostream"
using namespace std;
 
int main()
 
{   
    int a,b;
    const int n = 10;
    int p = 0;
    cout<< "Please enter a border -a\n";
    cin >>a;
    cout << "Please enter a border b\n";
    cin>>b;
 
    int mass[n];
 
    for(int i=0; i<n; i++){
        mass[i]=rand()%(b-a+1)+a;
    }
 
    for (int i=0;i<n;i++)
        cout<<mass[i]<<" ";
    cout << endl;
    for(int i = 0; i<n; i++)
    {
        if((mass[i]%2 == 0) && (mass[i] % (((mass[i]%10)==0)?1:mass[i]%10) == 0))
        {
            mass[i] = NULL;
            p++;
        }
    }
    for (int i=0;i<=n-p;i++)
    {
        if(mass[i] == NULL)
        {
            int j = i+1;
            for( ;j < n; j++)
            {
                if(mass[j]!=NULL)
                {
                    mass[i] = mass[j];
                    mass[j] = NULL;
                    break;
                }
            }
            if(j==n)
                break;
        }
    }
    for (int i=0; i < n-p; i++)
    {
        cout<<mass[i]<<" ";
    }
    cout << endl;
 
    system("PAUSE");
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2012, 19:49
Привет! Вот еще темы с ответами:

Вывести числа, сумма десятичных цифр которых равна n и само число делится на m - C++
2)Из чисел от 10 до 99 вывести те, сумма цифр которых равна n и само число делится на m.

Проверить гипотезу: если сумма цифр числа делится на 3, то и само число делится на 3 - C++
Проверить гипотезу: если сумма цифр числа делится на 3, то и само число делится на 3.

Написать программу, которая упорядочивает по возрастанию только те элементы заданной последовательности, последняя цифра которых не равнк k - C++
задача на массивы: написать программу, которая упорядочивает по возрастанию только те элементы заданной последовательности, последняя...

Удалить из массива все элементы,в записи которых все цифры различны. - C++
Ребят,помогите задачу решить: в файле input.txt содержаться сведения о группе студентов в формате: номер группы; запись о каждом...


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

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

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