С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 17.11.2022
Сообщений: 89

Записать в другой массив трёхзначные числа исходного списка которые делятся на K и не делятся на M

09.03.2023, 20:20. Показов 1648. Ответов 12

Студворк — интернет-сервис помощи студентам
Дан массив чисел. Необходимо записать в другой массив все трёхзначные числа исходного списка, которые делятся на K и не делятся на M .

Входные данные
Первая строка содержит количество чисел - N . Во второй строке через пробел задаются N чисел – элементы массива (положительные целые числа не более 105). Гарантируется, что 0 < N <= 10000 . В третьей строке через пробел записаны два числа – K (1 < K <= N) и M (1 <= M <= N ).

Выходные данные
Программа должна вывести в одну строчку все элементы нового массива, разделяя их пробелами. Если ни одного подходящего элемента в массиве не было, программа должна вывести число 0.

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
#include <iostream>
#include <stdlib.h>
 
using namespace std;
 
 
int main()
{
    int N,k,m;
    cin>>N;
    cin>>k>>m;
    int array[N];
    for(int i = 0; i < N; ++i) //наполнение массива, показываем его
    {
        cin>>array[i];
    }
 
 
    int NewSize = 0;
    for(int i = 0; i < N; ++i) //считаем количество искомых элементов
        if(array[i] >= 100 && array[i] < 1000){
            ++NewSize;
        }
    int new_arr[NewSize]; //создаем новый массив
    int nomer = 0;
    for(int i = 0; i < N; ++i) //ложим в новый массив все нужные элементы старого, показываем его
        if(array[i] >= 100 && array[i] < 1000 && array[i]%k == 0 && array[i]%m != 0)
        {
            new_arr[nomer] = array[i];
            cout<<new_arr[nomer]<<' ';
        }
        else{
            cout<<'0';
            break;
        }
        
       
        
 
    return 0;
}
Выполняется только 41% процент тестов, помогите найти нюансы моего кода, из-за чего он не проходит все тесты
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.03.2023, 20:20
Ответы с готовыми решениями:

Записать в файл все компоненты исходного файла, которые делятся на m и не делятся на n
записать файл последовательность доступа file_А целыми числами, полученными с помощью генератора случайных чисел. Получить в файле file_B...

Найти трёхзначные числа в десятичной системе, которые делятся на K и не делятся на M
Задача №112310. Выбрать по делителям Напишите программу, которая выделяет в другой массив все элементы исходного массива, которые...

создать файл в котором записать трехзначные числа которые делятся на 7
создать файл в котором записать трехзначные числа которые делятся на 7. найти сумму етих чисел и записать в новый файл. (файлы должна...

12
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
09.03.2023, 20:43
Строки 24-39 выброси на фиг. А 20-23 замени
C++
1
2
3
4
5
6
7
for(int i = 0; i < N; ++i) //считаем количество искомых элементов
        if(array[i] >= 100 && array[i] < 1000){
            cout << array[i] << " ";
            ++NewSize;
        }
if (NewSize==0) 
     cout << "0";
0
0 / 0 / 0
Регистрация: 17.11.2022
Сообщений: 89
09.03.2023, 20:47  [ТС]
16%
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
09.03.2023, 21:08
Цитата Сообщение от bmouse Посмотреть сообщение
16%
Покажи свой итоговой код.
И вопрос
Цитата Сообщение от bmouse Посмотреть сообщение
не более 105
это 105 , нет?
0
0 / 0 / 0
Регистрация: 17.11.2022
Сообщений: 89
09.03.2023, 21:25  [ТС]
да, именно
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
#include <iostream>
#include <stdlib.h>
 
using namespace std;
 
 
int main()
{
    int N,k,m;
    cin>>N;
    cin>>k>>m;
    int array[N];
    for(int i = 0; i < N; ++i) //наполнение массива, показываем его
    {
        cin>>array[i];
    }
 
 
    int NewSize = 0;
    for(int i = 0; i < N; ++i) //считаем количество искомых элементов
        if(array[i] >= 100 && array[i] < 1000){
            cout << array[i] << " ";
            ++NewSize;
        }
if (NewSize==0) 
     cout << "0";
    
        
       
        
 
    return 0;
}
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
10.03.2023, 13:50
Цитата Сообщение от bmouse Посмотреть сообщение
if(array[i] >= 100 && array[i] < 1000){
C++
1
if(array[i] >= 100 && array[i] < 1000 && array[i]%k == 0 && array[i]%m != 0) [
Конечно, так, а то теряется весь смысл задачи.
Мою плюха. Прости
ЗЫ. И выкладывая код, старайся избегать большого количества пустых сточек Тебе скажут - они бесплатные. Но читать т анализировать приятнее компактный код.
0
0 / 0 / 0
Регистрация: 17.11.2022
Сообщений: 89
10.03.2023, 19:27  [ТС]
Да, я этот недочет уже сам заметил, пробовал, результат тот же к сожалению, не понимаю, какие дыри в коде нужно еще устранить, вроде все условия выполняются
0
0 / 0 / 0
Регистрация: 17.11.2022
Сообщений: 89
10.03.2023, 19:34  [ТС]
Дан массив чисел. Необходимо записать в другой массив все трёхзначные числа исходного списка, которые делятся на K и не делятся на M .

Входные данные
Первая строка содержит количество чисел - N . Во второй строке через пробел задаются N чисел – элементы массива (положительные целые числа не более 10^5). Гарантируется, что 0 < N <= 10000 . В третьей строке через пробел записаны два числа – K (1 < K <= N) и M (1 <= M <= N ).

Выходные данные
Программа должна вывести в одну строчку все элементы нового массива, разделяя их пробелами. Если ни одного подходящего элемента в массиве не было, программа должна вывести число 0.

Пример:
Входные данные
6
28 204 103 804 105 106
2 3
Выходные:
106

Код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
    int N,k,m;
    cin>>N;
    cin>>k>>m;
    int array[N];
    for(int i = 0; i < N; ++i) //наполнение массива, показываем его
    {
        cin>>array[i];
    }
    int NewSize = 0;
    for(int i = 0; i < N; ++i) //считаем количество искомых элементов
        if(array[i] >= 100 && array[i] < 1000 && array[i]%k == 0 && array[i]%m != 0){
            cout << array[i] << " ";
            ++NewSize;
        }
if (NewSize==0) 
     cout << "0";
    return 0;
}
Код проходит только 16% тестов, я не понимаю какие дыры нужно еще устранить в коде, чтобы все тесты проходили, вроде все условия учтены. Прошу вашей помощи
0
И тут вот те нате
322 / 209 / 117
Регистрация: 12.07.2016
Сообщений: 555
10.03.2023, 19:43
Очень явная ошибка в самом начале:
Первая строка содержит количество чисел - N
Во второй строке через пробел задаются N чисел
В третьей строке через пробел записаны два числа – K и M
Вот как должно выглядеть считывание данных:
C++
1
2
3
4
5
6
7
8
    int N,k,m;
    cin>>N; // первым считали N
    int array[N];
    for(int i = 0; i < N; ++i)
    {
        cin>>array[i]; // считываем N чисел
    }
    cin>>k>>m; // считываем K и M
0
0 / 0 / 0
Регистрация: 17.11.2022
Сообщений: 89
10.03.2023, 20:01  [ТС]
И правда, знал, что только размер массива нужно задавать до объявления массива, а про это нет. Можете поподробнее объяснить как это влияет в данной ситуации?
0
И тут вот те нате
322 / 209 / 117
Регистрация: 12.07.2016
Сообщений: 555
10.03.2023, 20:11
bmouse, есть поток ввода - это то, что вводит пользователь в консоль и нажимает Enter. С помощью cin>>x1; вы можете считывать данные, которые вводит пользователь, в переменную x1. Следующим вызовом cin>>x2; вы снова можете считать данные (следующую порцию) и на этот раз сохранить их в переменную x2.
Теперь несложно понять, что крайне важна согласованность между тем, что вводит пользователь, и тем, что "ожидает" в данный момент программа. Если пользователь сначала вводит x2, а потом x1, а программа при этом сначала считывает x1, а потом x2 - будет ошибка в интерпретации данных программой (а по сути программистом, эту программу написавшим).
0
0 / 0 / 0
Регистрация: 17.11.2022
Сообщений: 89
10.03.2023, 20:15  [ТС]
Спасибо большое!
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
10.03.2023, 22:17
bmouse, Ага! Все понятною
Цитата Сообщение от bmouse Посмотреть сообщение
Входные данные
Первая строка содержит количество чисел - N . Во второй строке через пробел задаются N чисел – элементы массива (положительные целые числа не более 105). . В третьей строке через пробел записаны два числа – K
Цитата Сообщение от bmouse Посмотреть сообщение
cin>>N; cin>>k>>m;
Надо сначала ввести массив, а потом уже M и K
C++
1
2
3
4
5
6
7
    cin>>N;
    int array[N];
    for(int i = 0; i < N; ++i) //наполнение массива, показываем его
    {
        cin>>array[i];
    }
    cin>>k>>m;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.03.2023, 22:17
Помогаю со студенческими работами здесь

Записать в отдельный список числа которые делятся на 7 но не делятся на 5
Создать список из ста елементов и записать в отдельный список числа которые делятся на 7, но не делятся на 5

Получить в новом файле все компоненты исходного файла, которые делятся на m и не делятся на n
Получить в новом файле все компоненты исходного файла, которые делятся на m и не делятся на n.

Получить в новом файле все компоненты исходного файла, которые делятся на m и не делятся на n
Получить в новом файле все компоненты исходного файла, которые делятся на m и не делятся на n.

Найти все трехзначные числа, которые при увеличении на 1 делятся на 2, при увеличении на 2 делятся на 3
2.Найти все трехзначные числа, которые при увеличении на 1 делятся на 2, при увеличении на 2 делятся на 3, при увеличении на 3 делятся на...

Найти все трёхзначные числа , которые при увеличении на 1 делятся на 2, при увеличении на 2 делятся на 3...
Помогите решить задачу: Найти все трёхзначные числа , которые при увеличении на 1 делятся на 2, при увеличении на 2 делятся на 3 , при...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru