|
3 / 2 / 1
Регистрация: 01.02.2019
Сообщений: 108
|
||||||
Функции и их создание01.02.2019, 13:15. Показов 3667. Ответов 66
Метки нет (Все метки)
Добрый день.
Начал изучать Си. Дошёл до темы "Функции". Решил написать простенькую программу для сложения двух чисел. Если пользователь хочет продолжать сложение - нажимает y, не хочет - n. Кликните здесь для просмотра всего текста
Но, к сожалению, данный код не работает. Сложение производится только один раз, и потом постоянно "продолжить... повторите ввод и т.д.". Странно, почему так. Если скопировать тело функции в основную программу, то всё работает как надо. В чём может быть дело? Заранее спасибо за ответы!
0
|
||||||
| 01.02.2019, 13:15 | |
|
Ответы с готовыми решениями:
66
Создание функции, формирующую предложение из аргументов функции, аргументы . Аргументы - переменное число Создать базу данных с(Создание функции БД, Создание процедуры БД, Создание тригера БД) Создание функции внутри другой функции |
|
3 / 2 / 1
Регистрация: 01.02.2019
Сообщений: 108
|
|
| 27.02.2019, 15:22 [ТС] | |
|
D3m1an, получается, что объявление массива и его заполнение элементами необходимо производить в самой функции?
*** В случае данной программы использование функции практически не сократило длину кода, значит, её применение тут излишне? 8Observer8, примерно то же самое всё. Но я вижу слово класс, а это уже ООП. Пока продвигаться дальше не буду, надо разобраться с */&. Придётся читать Шилдта ещё раз ![]() *** И ещё вопрос ко всем. Может ли человек стать хорошим программистом без порядочного знания высшей математики. Или если в ней буксуешь, то лучше даже за программирование не браться?
0
|
|
| 27.02.2019, 16:14 | |||
|
Добавлено через 2 минуты
0
|
|||
|
296 / 227 / 102
Регистрация: 11.08.2016
Сообщений: 780
|
|
| 27.02.2019, 16:20 | |
|
IchStudiereC, совершенно верно. В данном случае, когда программа короткая и выполняет одну лишь функцию, то проще обойтись без функций и выполнить весь механизм в main. Создание функций полезно тогда, когда операцию приходится выполнять повторно, либо её механизм засоряет главный код.
Создание массива вы можете также выполнить и в main, но тогда нужно будет обеспечить доступ к данной области памяти сторонним функциям. Допустим, также через указатель или статическую память.
0
|
|
|
3 / 2 / 1
Регистрация: 01.02.2019
Сообщений: 108
|
||||
| 27.02.2019, 16:29 [ТС] | ||||
Особенно стереометрия) Про высшую геометрию и топологию молчу)А динамическое выделение через malloc?
0
|
||||
|
296 / 227 / 102
Регистрация: 11.08.2016
Сообщений: 780
|
|
| 27.02.2019, 16:45 | |
|
IchStudiereC, можно динамически. Но, метод выделения памяти не влияет на доступ к ней. В общем, если массив у вас внешний, используйте 3ий аргумент для доступа к нему. Будет проще.
0
|
|
| 27.02.2019, 16:54 | |||
|
I worked in a few companies where math was not required. For example, if you make GUI applications with Databases.
0
|
|||
| 28.02.2019, 21:02 | |
|
0
|
|
|
3 / 2 / 1
Регистрация: 01.02.2019
Сообщений: 108
|
|||||||||||
| 01.03.2019, 14:59 [ТС] | |||||||||||
|
8Observer8, пока рано классы, с азами проблемы
![]() Я лазаю по киберфоруму, всякие задачки решаю, заданные другими пользователями ранее. Если не получается, подглядываю решение. Есть вопросик такой: Найти одинаковые элементы массива и организовать следующий вывод: ***
Вот кусочек программы:
Добавлено через 3 минуты Не по теме:
Кликните здесь для просмотра всего текста
Модераторы не против, если я буду в одной теме все свои вопросы задавать?
0
|
|||||||||||
|
296 / 227 / 102
Регистрация: 11.08.2016
Сообщений: 780
|
|
| 01.03.2019, 15:12 | |
|
IchStudiereC, немного не ясно , что вы хотите модернизировать.
Если нужно выводить неопределенное количество элементов : "а[2] , а[6]" - а в другой раз допустим : " а[7] " - то здесь явно необходимо сделать цикл с очередным выводом всех элементов, которые отвечают условию. Это один вариант. Либо, записывать в некий массив те элементы, что соответствуют условию и выводить уже просто строку после слов "повторяется 1 раз".
0
|
|
|
3 / 2 / 1
Регистрация: 01.02.2019
Сообщений: 108
|
||||||
| 01.03.2019, 16:05 [ТС] | ||||||
|
D3m1an, не получается
![]() Кликните здесь для просмотра всего текста
Добавленное закомментировал
0
|
||||||
|
296 / 227 / 102
Регистрация: 11.08.2016
Сообщений: 780
|
|||||||||||
| 01.03.2019, 16:11 | |||||||||||
|
IchStudiereC, я сейчас с телефона пишу. Поэтому вот маленький пример как вывожу я неопределенное количество элементов.
Смысл должен быть понятен.
1
|
|||||||||||
|
3 / 2 / 1
Регистрация: 01.02.2019
Сообщений: 108
|
|||||||||||
| 06.03.2019, 00:12 [ТС] | |||||||||||
|
Доброй ночи.
Продолжаю работать с массивами. Задача: реверс элементов. Вот таким образом он осуществляется: Кликните здесь для просмотра всего текста
Я опять хочу в виде функции это дело реализовать: Кликните здесь для просмотра всего текста
void reverse(int *a)
{ int n; for(int i=0; i <n/2; i++) { int tmp = a[i]; a[i] = a[n-i-1]; a[n-i-1] = tmp; } } вызываю:
0
|
|||||||||||
|
3 / 2 / 1
Регистрация: 01.02.2019
Сообщений: 108
|
||||||||||||||||
| 06.03.2019, 15:23 [ТС] | ||||||||||||||||
|
Я сделал
![]() Кликните здесь для просмотра всего текста
Вызов:
Снова ничего не понимаю ![]() Задача: Выбор одной из половин массива(ч-з switch) Кликните здесь для просмотра всего текста
"Первый" case не работает) Вырезаю, ставлю его под "второй" case - и, о Боги, он работает. Но теперь уже "второй" не заводится) Wtf!
0
|
||||||||||||||||
|
296 / 227 / 102
Регистрация: 11.08.2016
Сообщений: 780
|
|
| 06.03.2019, 16:40 | |
|
IchStudiereC, полный код , пожалуйста.
Добавлено через 1 минуту И break отсутствует в switch. Врятли, сначала операции идут с первой половиной, затем со второй. При этом если выбрать кейс 2, то программа отработает, но если выбрать 1, то она выполнит оба кейса.
0
|
|
|
3 / 2 / 1
Регистрация: 01.02.2019
Сообщений: 108
|
|
| 06.03.2019, 23:37 [ТС] | |
|
D3m1an, ах) Я просто некорректно свич использовал.
Получается, после отработки какого-то из кейсов обязателен брейк, и, соответственно, программа прервётся. А я хотел дальше с кусочком массива работать. Значит, надо через if делать? Добавлено через 11 минут Да, сделал через него.
0
|
|
|
296 / 227 / 102
Регистрация: 11.08.2016
Сообщений: 780
|
|
| 07.03.2019, 10:51 | |
|
IchStudiereC, программа не прервется. break прекращает работу текущего цикла, позволяет выйти из него немедленно. То есть, программа продолжит свою работу после switch до своего конца.
Ещё один полезный оператор - continue позволяет прервать выполнение программы в цикле и перейти к следующей итерации цикла(не выходя из него). Рекомендую почитать про них, если до сих пор есть вопросы по работе с ними. Добавлено через 48 секунд Если в кейс добавить return, тогда программа закончит свою работу.
0
|
|
|
3 / 2 / 1
Регистрация: 01.02.2019
Сообщений: 108
|
|||||||||||
| 13.03.2019, 15:25 [ТС] | |||||||||||
|
Что-то я давно не отписывался)
ГСПЧ. На примере самого простого, линейного.. Почему записи
0
|
|||||||||||
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
|
||||||
| 13.03.2019, 15:44 | ||||||
|
а вот так ?
0
|
||||||
|
3 / 2 / 1
Регистрация: 01.02.2019
Сообщений: 108
|
|
| 13.03.2019, 15:59 [ТС] | |
|
ValeryS, это даёт третий результат)
Добавлено через 1 минуту вру, работает) Добавлено через 36 секунд i++, не убрал сначала Добавлено через 53 секунды а с точки зрения опытного программиста, какая запись считается оптимальной?
0
|
|
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
|
|||
| 13.03.2019, 16:06 | |||
|
вторая это так называемая UB(неопределенное поведение) запись i++ это постинкременент т.е сначала используется значение переменной а потом увеличивается на 1в такой записи один компилятор может сделать так, а другой эдак
0
|
|||
| 13.03.2019, 16:06 | |
|
Создание функции Создание функции Создание функции
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|