Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 27, средняя оценка - 4.89
Няффка
1 / 1 / 0
Регистрация: 13.11.2010
Сообщений: 11
#1

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

14.11.2010, 23:10. Просмотров 3922. Ответов 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;
}
Эта функция определяет пересеклились ли прямые и координаты их точки пересечения.
Как сделать так, что если прямые не пересеклись, программа перестала дальше расчитывать и вернулась бы на начало, тоесть к вводу данных.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2010, 23:10     Как прервать работу функции?
Посмотрите здесь:

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

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

Как правильно записывать условные операторы и как прервать проверку при достижении результата? - C++
доброго времени суток форумчане, подскажите пожалуйста как остановить условие после правильно выполненного условия.#include &quot;stdafx.h&quot; ...

Как корректно прервать цикл? - C++
Вот цикл.Я спрашиваю &quot;Добавить еще?&quot;,пользователь жмет y или n и у меня сразу весь цикл делается (т.е. 10 раз выводит cout без ввода).Как...

Как правильно прервать/возобновить цикл - C++
Такая вот проблема: есть часто встречающаяся функция ввода вещественного массива (как правило, большого). При вводе не цифры приходится все...

Как прервать цикл используя условия ? - C++
Есть цикл for(double i=1;i&lt;=?;i++) { s+=pow(((2*i)+1),4.0); }Мне нужно чтобы он останавливался когда я задам условие...

Как прервать поток ввода, введя определенный символ? - C++
Доброго всем времени суток double d; char c; cin &gt;&gt; d; cin &gt;&gt; c; cout &lt;&lt; c &lt;&lt; d; Я ввожу число, которое записывается в d,...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт C++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
14.11.2010, 23:17     Как прервать работу функции? #2
Мб goto?
Няффка
1 / 1 / 0
Регистрация: 13.11.2010
Сообщений: 11
14.11.2010, 23:27  [ТС]     Как прервать работу функции? #3
goto не подходит. Это же не основная часть программы, а только описание одной из функций. Вроде нельзя же прыгать с одной функции в другую с помощью меток.
И это было первое что я попробывала когда писала код, компилятор выдает ошибку.
Somebody
2786 / 1600 / 145
Регистрация: 03.12.2007
Сообщений: 4,189
Завершенные тесты: 1
14.11.2010, 23:54     Как прервать работу функции? #4
Можно сделать возвращаемое значение bool (всё равно точка пересечения сохраняется в D) - return true, если пересеклись, и false, если нет.
Jupiter
Каратель
Эксперт С++
6552 / 3972 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
14.11.2010, 23:57     Как прервать работу функции? #5
зациклить, do { } while в main(), пока ф-я не вернет true
Няффка
1 / 1 / 0
Регистрация: 13.11.2010
Сообщений: 11
15.11.2010, 00:26  [ТС]     Как прервать работу функции? #6
это будет примерно так?
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;
            }
}
accept
4820 / 3240 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
15.11.2010, 02:23     Как прервать работу функции? #7
это неправильно, у тебя же там строки
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
Няффка
1 / 1 / 0
Регистрация: 13.11.2010
Сообщений: 11
15.11.2010, 08:44  [ТС]     Как прервать работу функции? #8
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.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.11.2010, 10:25     Как прервать работу функции?
Еще ссылки по теме:

Работа функции qsort - объяснить работу функции - C++
#include&lt;iostream&gt; #include&lt;cstdlib&gt; int mysort(const void *arg1, const void *arg2); int main() { const short ARR_SIZE=5; int...

Как корректно прервать цикл? (нюансы использования циклов, операторов ветвления и оператора break) - C++
Здравствуйте! такая форма работает...цикл нормально прерывается for(double i=1; i&lt;=10; i++){ if(i==8) break; ...

Объяснить работу функции - C++
Может кто объяснить работу функции void zagalovok() { Node *t; head=new Node(); t=head; int V; cout&lt;&lt;&quot;Введите...

Объясните работу функции - C++
Объясните некоторые моменты из программы. Функция ReplaceKey заменяет ключ отображения map Что такое value_type(newKey,...

Продемонстрировать работу стандартной функции - C++
char *strncpy(char *s1, const char *s2, size_t n); Копирует не более n символов из строки s2 в s1 и возвращает s2.


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

Или воспользуйтесь поиском по форуму:
accept
4820 / 3240 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
15.11.2010, 10:25     Как прервать работу функции? #9
а, это меня что-то проглючило, показалось, что функция рекурсивная

всё правильно - в функцию передаёшь D (лучше маленькой буквой её назвать), а возвращаешь результат работы функции
Yandex
Объявления
15.11.2010, 10:25     Как прервать работу функции?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru