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

Как прервать работу функции?

14.11.2010, 23:10. Показов 26037. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
dot CrossLine (const line &L, const line &P, dot&D)
{
    double z;
    z=Determin(L.A,L.B,P.A,P.B);
    if (fabs(z)<1e-12)
    {
        char S[]="Прямые не пересекаются";
        CharToOem(S,S);
        cout<<S<<"\n";
    }
    else 
    {
        D.X=Determin(-L.C,L.B,-P.C,P.B)/z;
        D.Y=Determin(L.A,-L.C,P.A,-P.C)/z;
    }
    return D;
}
Эта функция определяет пересеклились ли прямые и координаты их точки пересечения.
Как сделать так, что если прямые не пересеклись, программа перестала дальше расчитывать и вернулась бы на начало, тоесть к вводу данных.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.11.2010, 23:10
Ответы с готовыми решениями:

Прервать работу програмы
У меня вопрос , могу ли я как то прервать работу программы при невыполненни или выполнении условия? if ((defaultTemp &gt; MaxTemp) or...

Прервать выполнение функции,если её объект удалён
class A { class A; void Bar(A* a) { delete(a); } class A {

Вернуть из функции значение; при этом прервать саму функцию
Всех приветствую! Прощу прощения за глупый вопрос, но не знаю на него ответа. Требуется вернуть из функции значение при этом прервать саму...

8
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
14.11.2010, 23:17
Мб goto?
0
1 / 1 / 0
Регистрация: 13.11.2010
Сообщений: 11
14.11.2010, 23:27  [ТС]
goto не подходит. Это же не основная часть программы, а только описание одной из функций. Вроде нельзя же прыгать с одной функции в другую с помощью меток.
И это было первое что я попробывала когда писала код, компилятор выдает ошибку.
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
14.11.2010, 23:54
Можно сделать возвращаемое значение bool (всё равно точка пересечения сохраняется в D) - return true, если пересеклись, и false, если нет.
1
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
14.11.2010, 23:57
зациклить, do { } while в main(), пока ф-я не вернет true
1
1 / 1 / 0
Регистрация: 13.11.2010
Сообщений: 11
15.11.2010, 00:26  [ТС]
это будет примерно так?
C++
1
2
3
4
5
6
7
8
9
void main
{
бла бла бла
while (CrossLine(AB,BC,B)&&CrossLine(BC,CA,C)&&CrossLine(CA,AB,A))
{
дальше код программы если выражение истина.
}
 
}
а саму функцию переписала так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
bool CrossLine (const line &L, const line &P, dot&D)
{
    double z;
    z=Determin(L.A,L.B,P.A,P.B);
    if (fabs(z)<1e-12)
    {
        char S[]="Прямые не пересекаются";
        CharToOem(S,S);
        cout<<S<<"\n";
        return false;
    }
    else 
    {
        D.X=Determin(-L.C,L.B,-P.C,P.B)/z;
        D.Y=Determin(L.A,-L.C,P.A,-P.C)/z;
        return true;
            }
}
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
15.11.2010, 02:23
это неправильно, у тебя же там строки
C++
1
D.X=Determin(-L.C,L.B,-P.C,P.B)/z;
какой false или true

кстати
C++
1
z=Determin(L.A,L.B,P.A,P.B);
тоже, z - double
0
1 / 1 / 0
Регистрация: 13.11.2010
Сообщений: 11
15.11.2010, 08:44  [ТС]
accept
C++
1
2
3
4
    
 
     D.X=Determin(-L.C,L.B,-P.C,P.B)/z;
     D.Y=Determin(L.A,-L.C,P.A,-P.C)/z;
эта часть кода расчитывает координаты точки пересечения, я так и не поняла про какие строки ты говоришь. А вообще хотела что бы функция CrossLine возвращала пересеклись ли прямые вообще. Вот поэтому true и false.
1
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
15.11.2010, 10:25
а, это меня что-то проглючило, показалось, что функция рекурсивная

всё правильно - в функцию передаёшь D (лучше маленькой буквой её назвать), а возвращаешь результат работы функции
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.11.2010, 10:25
Помогаю со студенческими работами здесь

Как прервать работу файла bat, между двумя exe
Доброго времени суток, форумчане! Есть 3 программы(exe,bat,exe) которые запускаются вот так 1.exe|2.bat|3.exe Как при определённом...

Как прервать работу макроса, если он не откликается на Ctrl+Break?
здравствуйте иногда после нажатия Run когда очень срочно нужно прервать работу макроса я делаю - прерываю его работу парой клавиш...

Как прервать работу цикла for, если значение переменной достигло определенного значения?
В php знаю как остановить цикл, а в pascal нет. Подскажите.

Как сделать так, чтобы работу макроса нельзя было прервать с помощью Ctrl+Break и других комбинаций?
Добрый день, известно, что работу мкроса можно остановить, например, ctrl+break/pause. Возможно и ещё другими комбинациями.. Что нужно...

Как прервать работу зацикленного макроса, если CTRL/Break не "того"?
Привет. Макрос (видимо) зациклился и колбасит уже час вместо положеных 10 минут. Ни на что не реагирует, собственно. Хотя параллельно могу...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru