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

Массив: Заполнить массив следующим образом: первый элемент равен S, а каждый следующий на 5 больше предыдущего элемента

17.03.2021, 15:00. Показов 11313. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Условие
Даны два целых числа S и N. Необходимо создать и заполнить массив следующим образом: первый элемент равен S, а каждый следующий на 5 больше предыдущего элемента массива. Массив таким образом нужно заполнять до тех пор, пока последний добавленный элемент не станет больше N.

Формат входных данных
С клавиатуры вводятся два целых числа S и N, каждое из которых не превосходит по модулю 1000.

Формат выходных данных
Выведите элементы созданного массива через пробел.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.03.2021, 15:00
Ответы с готовыми решениями:

Создать массив в котором первый элемент равен S, а каждый следующий больше предыдущего на 150
Здравствуйте! Я недавно начал изучать язык C++. Мне попалась задача на массивы,которую я не могу решить. Условие задачи состоит в том, что...

Заполнить массив таким образом, чтобы каждый следующий элемент был не меньше предыдущего элемента
Заполнить массив A(n, m) целыми случайными числами таким образом, чтобы и в каждой строке и в каждом столбце каждый следующий элемент был...

Изменить массив таким образом, чтобы каждый следующий элемент был равен сумме текущего и предыдущего
разработать программу, изменяющую массив из 10 чисел таким образом, чтобы каждый следующий элемент был равен сумме текущего и предыдущего...

21
 Аватар для Annemesski
2670 / 1333 / 479
Регистрация: 08.11.2016
Сообщений: 3,682
17.03.2021, 15:43
Свои попытки имеются?
0
126 / 83 / 44
Регистрация: 18.11.2018
Сообщений: 299
17.03.2021, 15:54
Лучший ответ Сообщение было отмечено k1cha как решение

Решение

Цитата Сообщение от k1cha Посмотреть сообщение
аны два целых числа S и N. Необходимо создать и заполнить массив следующим образом: первый элемент равен S, а каждый следующий на 5 больше предыдущего элемента массива. Массив таким образом нужно заполнять до тех пор, пока последний добавленный элемент не станет больше N.
Смог реализовать только так, попробуйте:

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 <iostream>
 
using namespace std;
 
int main()
{
    const int n = 999;
    int S, N, elems = 0;
    cin >> S >> N;
    int A[n];
    A[0] = S;
    
    for (unsigned i = 1; ; i++) {
        A[i] = A[i-1] + 5;
        elems++;
        if (A[i] > N) break;
    }
    
    for (unsigned i = 0; i < elems; i++) {
        cout << A[i] << " ";
    }
    
    system("pause");
    return 0;
}
Подходит ли такое решение?

Добавлено через 3 минуты
Цитата Сообщение от Annemesski Посмотреть сообщение
Свои попытки имеются?
Здравствуйте, не могли бы помочь с другой реализацией кода выше? Через динамический массив, как это будет выглядеть.
1
 Аватар для Annemesski
2670 / 1333 / 479
Регистрация: 08.11.2016
Сообщений: 3,682
17.03.2021, 16:05
Лучший ответ Сообщение было отмечено k1cha как решение

Решение

Цитата Сообщение от woolfskinny Посмотреть сообщение
Через динамический массив, как это будет выглядеть.
элементарно
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
int main()
{
    int S, N;
    std::cin >> S >> N;
    int sz = (N - S) / 5 + 2;
    int *arr = new int[sz];
 
    for (int i = 0; i < sz; ++i)
        std::cout << (arr[i] = S + 5 * i) << "  ";
    std::cout << std::endl;
 
    return 0;
}
Добавлено через 4 минуты
UPD: пардон, последний элемент массива украл
2
1498 / 1213 / 821
Регистрация: 29.02.2016
Сообщений: 3,630
17.03.2021, 16:07
Массив здесь не нужен
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()
{
    setlocale(LC_ALL, "");
    int S, N;
    cout << "Введите S и N: " << endl;
    cin >> S >> N;
    do
    {
        cout << S << ' ';
        S = S + 5;
    } while(S < N);
 
    system("pause");
    return 0;
}
0
 Аватар для Annemesski
2670 / 1333 / 479
Регистрация: 08.11.2016
Сообщений: 3,682
17.03.2021, 16:08
afront,
Цитата Сообщение от k1cha Посмотреть сообщение
Необходимо создать и заполнить массив
нужен
0
1498 / 1213 / 821
Регистрация: 29.02.2016
Сообщений: 3,630
17.03.2021, 16:10
Массив чисел создается и заполняется, но в проге он не нужен
0
0 / 0 / 0
Регистрация: 03.03.2021
Сообщений: 15
17.03.2021, 16:10  [ТС]
Цитата Сообщение от woolfskinny Посмотреть сообщение
Смог реализовать только так, попробуйте:
Неверно на входных данных 1 10, должно получится 1 6 11, выводит 1 6
0
 Аватар для Annemesski
2670 / 1333 / 479
Регистрация: 08.11.2016
Сообщений: 3,682
17.03.2021, 16:16
Цитата Сообщение от k1cha Посмотреть сообщение
Неверно на входных данных 1 10, должно получится 1 6 11, выводит 1 6
Да, woolfskinny, Вы сделали
C++
1
A[0] = S;
то бишь добавили первый элемент массива, но elements не продвинули, он как был 0, так и остался, в итоге массив заполняется правильно, а счетчик элементов врет на 1.
1
126 / 83 / 44
Регистрация: 18.11.2018
Сообщений: 299
17.03.2021, 16:23
Лучший ответ Сообщение было отмечено k1cha как решение

Решение

Цитата Сообщение от k1cha Посмотреть сообщение
Неверно на входных данных 1 10, должно получится 1 6 11, выводит 1 6
Я думал, элемент больше N не нужно выводить, а так в таком случае изменяем эту строчку кода:
C++
1
for (unsigned i = 0; i < elems+1; i++) {
*elems меняем на elems+1

Добавлено через 5 минут
Цитата Сообщение от Annemesski Посмотреть сообщение
элементарно
Спасибо! Есть пару вопросов.

Цитата Сообщение от Annemesski Посмотреть сообщение
int sz = (N - S) / 5 + 2;
По какому принципу вы определяете размерность массива здесь? А также часто вижу, что при работе с динамическим массивом в конце пишут (очищают что ли, точно не знаю) что-то вроде delete[arr], у вас же я такой строчки не вижу, это необязательно?
0
 Аватар для Annemesski
2670 / 1333 / 479
Регистрация: 08.11.2016
Сообщений: 3,682
17.03.2021, 16:24
Цитата Сообщение от woolfskinny Посмотреть сообщение
*elems меняем на elems+1
корректнее будет сделать так (в Вашем коде):
C++
10
11
A[0] = S;
++elements;
1
0 / 0 / 0
Регистрация: 03.03.2021
Сообщений: 15
17.03.2021, 16:35  [ТС]
Цитата Сообщение от woolfskinny Посмотреть сообщение
Я думал, элемент больше N не нужно выводить, а так в таком случае изменяем эту строчку кода
Заметил еще ошибку
на входных данных 1000 10
выходные данные 1000 1005
правильно 1000
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
17.03.2021, 16:37
Цитата Сообщение от woolfskinny Посмотреть сообщение
часто вижу, что при работе с динамическим массивом в конце пишут (очищают что ли, точно не знаю) что-то вроде delete[arr]
delete[]arr; - освобождение памяти динамического массива (выделенная под массив память становится доступной). если не запишите, тоже ничего страшного не произойдёт - память освободится при завершении программы. однако настоятельно рекомендуется записывать delete[]arr; когда массив стал не нужен.
1
 Аватар для Annemesski
2670 / 1333 / 479
Регистрация: 08.11.2016
Сообщений: 3,682
17.03.2021, 16:39
Цитата Сообщение от woolfskinny Посмотреть сообщение
По какому принципу вы определяете размерность массива здесь?
Простая арифметика: разность между N и S определяет диапазон элементов массива, делим на шаг k (в данном случае 5) получаем то, сколько раз числа возрастающие на шаг k уместятся в диапазон N - S, так как здесь само N входит в диапазон, нужно прибавить 1 и еще прибавить 1 так как в диапазон входит число лежащее между N и (N + k - 1). Просчитайте вручную по этой формуле несколько примеров с различными вводными, сразу все понятно станет.
Цитата Сообщение от woolfskinny Посмотреть сообщение
в конце пишут (очищают что ли, точно не знаю) что-то вроде delete[arr], у вас же я такой строчки не вижу, это необязательно?
В данном случае не обязательно так как программа по завершении возвращаете среде исполнения (операционной системе) все занятые ресурсы, но по хорошему стоит перед return добавить
C++
1
delete[] arr;
как напоминание о том что взятую память надо обязательно вернуть.
1
Модератор
Эксперт CЭксперт С++
 Аватар для Volga_
5208 / 2925 / 1509
Регистрация: 14.12.2018
Сообщений: 5,266
Записей в блоге: 1
17.03.2021, 16:42
Цитата Сообщение от k1cha Посмотреть сообщение
Даны два целых числа S и N. Необходимо создать и заполнить массив следующим образом: первый элемент равен S, а каждый следующий на 5 больше предыдущего элемента массива. Массив таким образом нужно заполнять до тех пор, пока последний добавленный элемент не станет больше N.
Можно:
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 <iostream>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "ru");
    int S, N, i;
    cin >> S >> N;
    int* a;
    if (S > N)
    {
        a = new int(S);
        cout << *a << endl;
        delete a;
        system("pause");
        return 0;
    }
    else if (S == N)
    {
        a = new int[2];
        a[0] = S;
        a[1] = S + 5;
        cout << a[0] << "  " << a[1] << endl;
    }
    else
    {
        int sW = (N - S) / 5 + 2;
        a = new int[sW];
        for (int i = 0; i < sW; i++)
        {
            a[i] = S + i * 5;
            cout << a[i] << "  ";
        }
    }
    delete[] a;
    system("pause");
    return 0;
}
1
126 / 83 / 44
Регистрация: 18.11.2018
Сообщений: 299
17.03.2021, 16:45
Цитата Сообщение от k1cha Посмотреть сообщение
Заметил еще ошибку
на входных данных 1000 10
выходные данные 1000 1005
правильно 1000
Попробуйте так:

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
#include <iostream>
 
using namespace std;
 
int main()
{
    const int n = 999;
    int S, N, elems = 0;
    cin >> S >> N;
    int A[n];
    A[0] = S;
    elems++;
    
    if (A[0] < N) {
        for (unsigned i = 1; ; i++) {
            A[i] = A[i-1] + 5;
            elems++;
            if (A[i] > N) break;
        }
    }
    
    for (unsigned i = 0; i < elems; i++) {
        cout << A[i] << " ";
    }
    
    system("pause");
    return 0;
}
0
0 / 0 / 0
Регистрация: 03.03.2021
Сообщений: 15
17.03.2021, 17:01  [ТС]
Теперь при 1000 10 все верно однако при 1000 1000 выводит 1000 1005 (1000 правильно)
0
126 / 83 / 44
Регистрация: 18.11.2018
Сообщений: 299
17.03.2021, 17:05
Цитата Сообщение от k1cha Посмотреть сообщение
Теперь при 1000 10 все верно однако при 1000 1000 выводит 1000 1005
Вы уверены? Только что проверил на 1000 1000, выводит 1000. Скопируйте код из сообщения выше, он должен правильно выводить.
0
Модератор
Эксперт CЭксперт С++
 Аватар для Volga_
5208 / 2925 / 1509
Регистрация: 14.12.2018
Сообщений: 5,266
Записей в блоге: 1
17.03.2021, 17:20
Цитата Сообщение от woolfskinny Посмотреть сообщение
Заметил еще ошибку
на входных данных 1000 10
выходные данные 1000 1005
правильно 1000
Попробуйте мой код выше (#15). Помоему:
1. При вводе 1000 10, то правильный вывод нужен 1000
2. При вводе 1000 1000, то правильный вывод нужен 1000 1005
0
0 / 0 / 0
Регистрация: 03.03.2021
Сообщений: 15
17.03.2021, 17:21  [ТС]
перепутал, как раз 1000 1005 должно выводить , а выводит 1000
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.03.2021, 17:21
Помогаю со студенческими работами здесь

Создать массив: первый элемент равен A, второй равен B, а каждый последующий элемент равен сумме всех предыдущих
Даны целые числа N (&gt; 2), A и B. Сформировать и вывести цело- численный массив размера N, первый элемент которого равен A, второй равен...

Сформировать массив: первый элемент равен A, второй равен B, каждый последующий - равен сумме всех предыдущих
Помогите с задачей . Условие : даны числа А и В. Сформировать и вывести целочисленный массив размера N, первый элемент которого равен A,...

Вывести массив размера N, первый элемент которого равен А, второй В, а каждый предыдущий элемент равен сумме всех предыдущих
Данны целые числа N(&lt;2), А и В. сформулировать и вывести целочисленный массив размера N, первый элемент которого равен А, второй В, а...

Заполнить массив по правилу: первый элемент массива равен единице, второй равен N, третий – двум, четвертый равен N – 1 и так далее.
Задали написать программу, которая заполнит массив A из N элементов последовательными целыми числами от 1 до N по следующему принципу: ...

Создать массив, каждый элемент которого равен квадрату предыдущего индекса
Известен первый элемент массива A: A=6. Создать массив, каждый элемент которого равен квадрату предыдущего индекса. Вывести полученный...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 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 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru