Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

Прервать работу програмы - 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); }Мне нужно чтобы он останавливался когда я задам условие...

8
asics
Freelance
Эксперт С++
2854 / 1789 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
14.11.2010, 23:17 #2
Мб goto?
0
Няффка
1 / 1 / 0
Регистрация: 13.11.2010
Сообщений: 11
14.11.2010, 23:27  [ТС] #3
goto не подходит. Это же не основная часть программы, а только описание одной из функций. Вроде нельзя же прыгать с одной функции в другую с помощью меток.
И это было первое что я попробывала когда писала код, компилятор выдает ошибку.
0
Somebody
2797 / 1608 / 148
Регистрация: 03.12.2007
Сообщений: 4,202
Завершенные тесты: 3
14.11.2010, 23:54 #4
Можно сделать возвращаемое значение bool (всё равно точка пересечения сохраняется в D) - return true, если пересеклись, и false, если нет.
1
Jupiter
Каратель
Эксперт С++
6568 / 3989 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
14.11.2010, 23:57 #5
зациклить, do { } while в main(), пока ф-я не вернет true
1
Няффка
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;
            }
}
0
accept
4831 / 3252 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
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
0
Няффка
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.
1
accept
4831 / 3252 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
15.11.2010, 10:25 #9
а, это меня что-то проглючило, показалось, что функция рекурсивная

всё правильно - в функцию передаёшь D (лучше маленькой буквой её назвать), а возвращаешь результат работы функции
0
15.11.2010, 10:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.11.2010, 10:25
Привет! Вот еще темы с ответами:

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

Как прервать цикл при вводе 0, и начать расчет - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; int main() { setlocale(LC_ALL,...

Работа функции 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; ...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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