Помогите с написанием программы на C++
Пожалуйста

Приложения:

Ответы

Ответ дал: clinteastwood2
0
Элементарно же, делается 1 циклом. Это вас в школе учат так плохо или вам не интересно программирование?
#include <iostream>
using namespace std;

int main()
{
    for (int i = 1000; i < 10000; i += 3) {
        cout << i << " ";
    }
    return 0;
}

clinteastwood2: по поводу читабельности, так же мне проще понять что речь о числе 10000 да и потом константа она константа, вдруг я вцикле что-то ошибся и недописал 0, здесь же такое не случится
DigitalAnnihilator: в данном случаи говорить, что вынесение значения в константу даст вам удобство - вводить в заблуждение читателя. Вынос в константу упростит жизнь: в часном случаи - возможно, в принципе - нет.
clinteastwood2: да и само чикло в теле цикла я также не изменю, выход за предел либо ещё какие операции не пройдут, я буду уверен что цикл прокрутит нужные мне n - итераций, либо если рець идет о вложенных циклах..
DigitalAnnihilator: Я не понимаю, вашей обеспокоености "читабельностью" в данном случаи (:
Однозначный ответ: в данной задаче в данном решение, константа не несет профита. Ответ должен быть обоснованный и к делу :)
clinteastwood2: я же сказал, забежал на перед
clinteastwood2: Здесь от константы будет ни холодно ни жарко..
DigitalAnnihilator: Не упоминайте вложенные циклы, вложенные циклы - страшный грех и их та же константа никак в них не поможет, разве что, если вы не пожелаете индекс сделать константным (:
clinteastwood2: я лишь сказал что можно вынести в константу, как ещё вариант блеснуть знанием перед преподом)
clinteastwood2: выбор же остается за ТС
DigitalAnnihilator: Да как угодно можно "блеснуть", главное что бы в голове что-то осталось. Я же придераюсь не к тому что вы предложили вынести в константу какое-либо значение, вопрос в другом, вы написади для "удобства", я в свою очередь прояснил ситуацию, так что ставьте константы и чем больше - тем лучше, в пределах разумного конечно, главное не вводите в заблуждение человека.
Ответ дал: DigitalAnnihilator
1
Код прекреплен к ответу, всё прокоментрировано. Так же продублирован в коментариях. Если есть вопросы, велком в те же коментарии.

З.Ы.
Учимся правильно:
а. Декомпозировать задачу (разбивать глобальную задачу, на максимально не зависимые под задачи)
б. Выносить в универсальные функции участки кода, которые можем реюзать потом (вытекает из пункта выше)
в. Чему учиться - где учиться? Доучивайте процедурку уже, по основным темам всем есть в интернете специализированные сайты. Есть вопросы какие? - Велком в ЛС. Как доучите (вам хватит с головой месяц для основ, если раз в два дня что-то делать будете вечером) - переходите на ООП, это все на чем зыждется современное программирование, тут уже для вас открываются книги:
- Шилдт Самоучитель C++ 3 издание (если вы возьметесь за C++)
- Маерс 55 правил (там примеры на Java, но вы легко разберетесь, все понятно)
- Фаулер Код с душком (тоже вроде примеры на Java, но как и предыдущее универсально в принципе)
г. Если планируете работать по специальности ищите в интернете по таким ключам: Паттерны GOF/GRASP/LISP, Работа с динамической памятью, Наследование/динамическая типизация (это просто то, что у вас должно просто сидеть на подкорке, конечно список далеко не полный, но пока будите знакомится с парадигмами ООП и плюсами, сами его интуитивно дополните).

Спасибо за отметку "Лучший ответ" и нажатую кнопочку "Спасибо" тут и в аккаунте (:
Приложения:

clinteastwood2: да и не совсем ясно зачем вы его здесь динамически выделили, он разве у вас между разными обектами гуляет и его нужно между ними передавать?
DigitalAnnihilator: 1. Почему создаем динамически? Вообще это совсем не уровень данного задания но если пошла речь об этом то:
а. Все объекты не являющиеся встроеными типами - по хорошему выделяем динамически, вы же не хотите держать всегда в оперативе все полноразмерные данные, а пользовать по мере надобности, после чего проверяем полученный указатель на null
б. Во избежании копирования, вернуть ссылку на созданный объект лучше чем когда он будет копироваться, либо как альтернатива move-симантика - велком
DigitalAnnihilator: 2. Нам delete не нужно. Почему? По тому, что забыл нюанс один, думал как упростить пример, но затупил, зрада. Хорошо что заметили (:
Просто в таких функциях обычно делаю shared_ptr, что избавляет от головной боли, но упрощал и вот так вышло.
clinteastwood2: иммел ввиду зачем динамически виделяем именно в этом примере, а так да)
DigitalAnnihilator: В это примере зачем? Там вектор - большой объект вот почему)
DigitalAnnihilator: Поправил, теперь возращает по значению, можно было заморочится с shared_ptr, но не для этого примера
DigitalAnnihilator: Но это явно говнистый код получается, когда такую сущность как вектор мы копируем
clinteastwood2: По поводу, того что вектор большой объект, вообще вектор хранит в себе ссылки на кучу с реальным содержанием, так что никакой разницы. Сам вектор занимает в стеке где-то до 16 байт (стандартом не определено, но менее 12 - по 4 на ссылку, размер и резерв на 32-битной архитектуре не получится). Чисто формально - в куче он будет занимать немного больше, чем в стеке, но места в куче значительно больше, чем в стеке. Так что не критично, разве что копирование все портит.
DigitalAnnihilator: но не менее 12*
DigitalAnnihilator: на 11 стандарте будет всегда 12 занимать, тут как не крути
Вас заинтересует