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

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

17.03.2021, 15:00. Показов 11581. Ответов 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
2681 / 1341 / 482
Регистрация: 08.11.2016
Сообщений: 3,707
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
2681 / 1341 / 482
Регистрация: 08.11.2016
Сообщений: 3,707
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,631
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
2681 / 1341 / 482
Регистрация: 08.11.2016
Сообщений: 3,707
17.03.2021, 16:08
afront,
Цитата Сообщение от k1cha Посмотреть сообщение
Необходимо создать и заполнить массив
нужен
0
1498 / 1213 / 821
Регистрация: 29.02.2016
Сообщений: 3,631
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
2681 / 1341 / 482
Регистрация: 08.11.2016
Сообщений: 3,707
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
2681 / 1341 / 482
Регистрация: 08.11.2016
Сообщений: 3,707
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
2681 / 1341 / 482
Регистрация: 08.11.2016
Сообщений: 3,707
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_
5209 / 2927 / 1509
Регистрация: 14.12.2018
Сообщений: 5,267
Записей в блоге: 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_
5209 / 2927 / 1509
Регистрация: 14.12.2018
Сообщений: 5,267
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru