|
1 / 1 / 0
Регистрация: 01.11.2017
Сообщений: 164
|
||||||
Как разбить программу на функции?07.04.2018, 14:52. Показов 3959. Ответов 21
Метки нет (Все метки)
0
|
||||||
| 07.04.2018, 14:52 | |
|
Ответы с готовыми решениями:
21
Как разбить программу на функции ? Как разбить программу на функции ? Дайте совет, как разбить данную программу на функции? |
|
"C with Classes"
|
|
| 07.04.2018, 14:57 | |
|
noname12345, подумай сколько отдельных задач решает твоя программа, каждую задачу оберни в функцию и вызывай их по мере необходимости.
0
|
|
|
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
|
||||||
| 07.04.2018, 14:59 | ||||||
|
Прежде чем бить на функции нужно определиться, что именно будет выполнять функция, а потом переносить тот код, который отвечает за это в эту функцию.
Пример функции:
0
|
||||||
|
1 / 1 / 0
Регистрация: 01.11.2017
Сообщений: 164
|
||
| 08.04.2018, 11:58 [ТС] | ||
|
Я просто не могу понять синтаксис, пишу, но выдает ошибки
0
|
||
|
|
||||||
| 08.04.2018, 12:06 | ||||||
|
Ну вот смотри, есть например задача: Купить огурец. Для того, чтобы купить огурец, нужно
1.одеться 2.прийти в магазин 3.взять огурец, 4.подойти к кассе, оплатить покупку 5. вернуться домой. Это и есть подзадачи. Так же эти подзадачи можно разбивать ещё и ещё, если что-то сложное есть. Обычно такие вот подзадачи используют в программировании, чтобы не писать одно и то же по 20 раз. Например, можно сделать функцию рисования квадратика, и использовать её везде. В общем ищи, что у тебя такое однотипное и вставляй в функцию. И да, когда я учил C++, ещё сталкивался с таки примерно
Чтобы не путать одни задачи с другими, их разделяют файлами
0
|
||||||
|
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
|
|||||||||||||||||||||
| 08.04.2018, 20:11 | |||||||||||||||||||||
|
noname12345, Если у тебя в коде нет последовательностей, которые повторяются, тогда нет смысла выносить их в функции. Функции нужны для того, чтоб не повторять код, т.е. если какая-то последовательность строк кода у тебя в программе повторяется, тогда есть смысл, либо запихнуть это в цикл (если повторения несколько раз подряд), либо написать функцию, если повторения не подряд
Давай на примерах: У меня есть массив чисел int arr[5][2] = { 1,2,3,4,5,6,7,8,9,10 }; которые я хочу попарно суммировать и вывести, я могу написать такой код:
А что если наш код выглядит так:
0
|
|||||||||||||||||||||
|
"C with Classes"
|
||
| 08.04.2018, 20:16 | ||
|
0
|
||
|
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
|
||
| 08.04.2018, 20:18 | ||
ИМХО
1
|
||
|
1 / 1 / 0
Регистрация: 01.11.2017
Сообщений: 164
|
||
| 08.04.2018, 21:24 [ТС] | ||
|
0
|
||
|
"C with Classes"
|
||
| 08.04.2018, 21:51 | ||
|
0
|
||
|
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
|
|
| 08.04.2018, 21:59 | |
|
noname12345, Ну хотя бы код выложи с попытками
0
|
|
|
1063 / 984 / 153
Регистрация: 10.08.2015
Сообщений: 5,354
|
|
| 09.04.2018, 04:15 | |
|
Все операции ввода/вывода обычно выносят в отдельные функции
0
|
|
|
1 / 1 / 0
Регистрация: 01.11.2017
Сообщений: 164
|
|||||||
| 11.04.2018, 16:02 [ТС] | |||||||
0
|
|||||||
|
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
|
|||||||||||
| 12.04.2018, 09:50 | |||||||||||
|
noname12345, Весь код не проверял, только то, что связано с функцией. Смотри, у тебя функция принимает два параметра, но тут же ты внутри функции переопределяешь
fout в строчке 12. Зачем? эту строчку тебе нужно перенести в строчку 24.Далее, fout в функции ты принимаешь по значению, а значит передается копия и в строчке 31 ты не сможешь получить данные из файла. Должно быть так void foutopen(ifstream &fout, string path)Третье, у тебя, по логике, функция открывает файл и проверяет его на корректность открытия, а дальше то ни чего полезного не происходит, даже если ты не смог открыть файл, ты все равно, пытаешь его прочитать в 33 строчке. Т.е. твоя функция должна возвращать результат, смогла ли она открыть файл. Т.е. твоя функция должна выглядеть так:
1
|
|||||||||||
|
1 / 1 / 0
Регистрация: 01.11.2017
Сообщений: 164
|
|||||||
| 15.04.2018, 13:15 [ТС] | |||||||
0
|
|||||||
|
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
|
|||||||
| 15.04.2018, 14:25 | |||||||
|
Второе, у тебя функция принимает три параметра, а передаешь два. Третье, &fout здесь ты передаешь адрес переменной а не саму переменную.В итоге вызов должен быть таким:
1
|
|||||||
|
1063 / 984 / 153
Регистрация: 10.08.2015
Сообщений: 5,354
|
|||||||
| 15.04.2018, 16:48 | |||||||
|
посмотри этот код, ни ничего не делает, кроме того, что переливает содержимое из файла в файл. Все i/o операции вынесены в универсальные функции. Они работают с вектором строк, который можно впоследствии преобразовать, как угодно. Для этого можно написать еще одну функцию по аналогии с теми, что уже есть. Важно, что переменные живут в своем именном пространстве и не прыгают из функции в функцию
0
|
|||||||
|
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
|
||
| 15.04.2018, 17:06 | ||
|
Кто я такой чтоб это оспаривать ) Если вы прочитаете эту тему с самого начала, то поймете, что у ТС что-то свое на уме, а то что ему советуют (по алгоритмам) он не слушает. Ему объясняешь, а он повторно задает те же вопросы и говорит что ни чего не понял. Я уже просто забил на это, пусть пишет как хочет, я просто указываю на грамматические ошибки.
0
|
||
|
1 / 1 / 0
Регистрация: 01.11.2017
Сообщений: 164
|
|||||||
| 15.04.2018, 19:06 [ТС] | |||||||
Только вот не могу понять почему файл для вывода пуст после выполнения программы
0
|
|||||||
|
1063 / 984 / 153
Регистрация: 10.08.2015
Сообщений: 5,354
|
|
| 15.04.2018, 20:11 | |
|
0
|
|
| 15.04.2018, 20:11 | |
|
Помогаю со студенческими работами здесь
20
Разбить программу на 2 функции с++ Разбить программу на функции Разбить программу на функции
Разбить программу на функции Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|