0 / 0 / 0
Регистрация: 06.11.2016
Сообщений: 3
1

Вызывание точки останова

06.11.2016, 15:04. Показов 1041. Ответов 6
Метки нет (Все метки)

Ввести целое число N. Выделить из этого числа цифры, кратные m, и записать их в одномерный массив.-Условие задачи.
Ниже моё решение.Последний цикл вызывает точку останова.Подскажите как решить проблему незамудреными путями т.к я студент первого курса.

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
#include "stdafx.h"
#include<iostream>
using namespace std;
void main()
{
    setlocale(0,"");
    int num, connum;
    cout << "введите число" << endl; cin >> num;
    connum = num;
    int sz_1 = 0;
    while ((connum / 10) >= 1)
    {
        connum = connum / 10;
        sz_1 = sz_1 + 1;
    }
    int sz_2=0;
    int *arr_2 = new int[sz_2];
    int *arr_1 = new int[sz_1];
    int m;
    int k = 0;
    cout << "введите m" << endl; cin >> m;
    for (int i = 0; i <= sz_1; i++) {
        if (arr_1[i] % m == 0 && sz_1!=i) {
            sz_2 += 1;
            arr_2[k] = num / (10 * (sz_1 - i));
            k += 1;
        }
    }
    for (int i = 0; i <= sz_2; i++) {
        cout << arr_2[i] << ' ';
    }
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.11.2016, 15:04
Ответы с готовыми решениями:

Срабатывание точки останова
Срабатывание точки останова при удалении указателя. Почему так? Кто-нибудь объяснит? #include...

Срабатывание точки останова
Добрый день всем. У меня после сортировки класса, сама сортировка выполняется и в конце после...

Срабатывание точки останова
#include &lt;iostream&gt; using namespace std; void FillArray(int* const arr, const int size) {...

Срабатывание точки останова
Всем привет. Никак не могу понять в чем причина остановок. Вот код: const void...

6
7166 / 6141 / 2802
Регистрация: 14.04.2014
Сообщений: 26,462
06.11.2016, 15:22 2
Для чего здесь new? Возьми обычный массив на 10 чисел.
И почему в первом цикле нет сохранения цифр в массив?

Добавлено через 1 минуту
Можно вообще ничего не сохранять: после ввода m выделяй цифры и проверяй.
1
Эксперт С++
4978 / 3085 / 456
Регистрация: 10.11.2010
Сообщений: 11,164
Записей в блоге: 10
06.11.2016, 15:44 3
Цитата Сообщение от PetrS Посмотреть сообщение
Последний цикл вызывает точку останова.
C++
1
2
    int sz_2=0;
    int *arr_2 = new int[sz_2];
1
0 / 0 / 0
Регистрация: 06.11.2016
Сообщений: 3
06.11.2016, 15:52  [ТС] 4
Я попробовал написать как ты говоришь, но что-то не так сделал, не подскажешь?
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
#include "stdafx.h"
#include<iostream>
using namespace std;
void main()
{
    setlocale(0,"");
    int num, connum;
    cout << "введите число" << endl; cin >> num;
    connum = num;
    int arr_2[10];
    int arr_1[10];
    int m;
    int k = 0;
    int sz_1=0;
    while ((connum / 10) >= 1)
    {
        connum = connum / 10;
        sz_1 = sz_1 + 1;
    }
    cout << "введите m" << endl; cin >> m;
    for (int i = 0; i < sz_1; i++) {
        arr_1[i] = num / (10 * (sz_1 - i));
        if (arr_1[i] % m == 0) {
            arr_2[k] = arr_1[i];
            k += 1;
        }
    }
    cout << "массив чисел кратных m " << endl;
        for (int i = 0; i <= k; i++) {
            cout << arr_2[i] << ' ';
        }
    }
вот что в консоли получается

введите число
123456
введите m
1
массив чисел кратных m
2469 3086 4115 6172 12345 -858993460

Добавлено через 2 минуты
но в этом же цикле я перезадаю sz_2 или так нельзя?
C++
1
2
3
4
5
6
7
for (int i = 0; i <= sz_1; i++) {
        if (arr_1[i] % m == 0 && sz_1!=i) {
            sz_2 += 1;
            arr_2[k] = num / (10 * (sz_1 - i));
            k += 1;
        }
    }
0
Эксперт С++
4978 / 3085 / 456
Регистрация: 10.11.2010
Сообщений: 11,164
Записей в блоге: 10
06.11.2016, 15:53 5
Цитата Сообщение от PetrS Посмотреть сообщение
но в этом же цикле я перезадаю sz_2 или так нельзя?
Нельзя.
1
7166 / 6141 / 2802
Регистрация: 14.04.2014
Сообщений: 26,462
06.11.2016, 15:58 6
Лучший ответ Сообщение было отмечено PetrS как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    int num, connum, m;
    cout << "введите число" << endl; cin >> num;
    cout << "введите m" << endl; cin >> m;
 
    connum = num;
    int sz_1 = 0, sz_2 = 0, arr_1[10], arr_2[10];
 
    while (connum > 0)
    {
        arr_1[sz_1++] = connum % 10;
        connum = connum / 10;
    }
 
    for (int i = 0; i < sz_1; i++)
        if (arr_1[i] % m == 0)
        {
            arr_2[sz_2++] = arr_1[i];
        }
 
    for (int i = 0; i < sz_2; i++) {
        cout << arr_2[i] << ' ';
    }
1
0 / 0 / 0
Регистрация: 06.11.2016
Сообщений: 3
06.11.2016, 16:07  [ТС] 7
спасибо, работает, только массив задом наперед выдает, но это мелочи.Очень вам признателен.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.11.2016, 16:07
Помогаю со студенческими работами здесь

Точки останова вечно вылезают
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;cmath&gt; #include &lt;clocale&gt;...

Код вызвал срабатывание точки останова
// AVal - массив анализируемых данных, Nvl - длина массива должна быть кратна степени 2. // FTvl -...

Как убрать срабатывание точки останова?
задача:посчитать значение выражения в постфиксной записи. при комментировании функции удаления все...

Ошибка в программе. Срабатывание точки останова
Класс матрицы,операторы суммы,присваивания и умножения матриц. #define _CRT_SECURE_NO_WARNINGS ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru