Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Почему так? Я вот уже довольно много времени читаю книги и разные коды по программированию, но все так и не понял. Почему хорошие программисты используют запись std:: а не просто в начале написать using namespace std; ?? В чем принципиальное различие между этими двумя записями и какую лучше применять? https://www.cyberforum.ru/ cpp-beginners/ thread859622.html Необходимо написать калькулятор(деление), чтобы при выводе показывало 30 знаков после запятой C++
Необходимо написать калькулятор(деление), чтобы при выводе показывало 30 знаков после запятой. Типо 1/3 = 0,333333333333333333333333333334 P.S. Еще учитель просить использовать массив. Зачем? И как?
C++ поиск подстроки в строке Всем доброго времени суток! Дано: две строки типа string, к примеру str1 = "HeLLo" и str2 = "hell" Вопрос: как найти из str1 подстроку str2 без учёта регистра? заранее спасибо https://www.cyberforum.ru/ cpp-beginners/ thread859592.html C++ Поиск и замена слов в файле txt Как заменить и найти слова в файле txt на С++. То есть есть файл вот такой структуры AAA БББ BBB 111 222 ыыы https://www.cyberforum.ru/ cpp-beginners/ thread859590.html
C++ Рекурсивная функция
Походу что-то с массивами не то, когда ввожу слишком большое число (15+), то выбивает ошибку с кучами\стеками, которую я не понимаю. using namespace std; void rekursija(long long factorials, int ArSize); int main() { cout << "Pls enter the number: " << endl; int ArSize; cin >> ArSize; long long * factorials = new long long;
C++ Определить максимальный и минимальный элемент массива, найти разность этих элементов (Pascal -> C++) https://www.cyberforum.ru/ cpp-beginners/ thread859571.html
помогите перевести следующий текст с pascal на c++ uses crt; var mas: array of integer; i,a,b,min,max,r:integer; begin clrscr; randomize; for i:= 1 to 10 do begin
C++ Как в Си перенаправить стандартный вывод printf? https://www.cyberforum.ru/ cpp-beginners/ thread859569.html
Нужно сделать чтоб функция printf выводила данные на некоторое нестандартное устройство. То есть перенаправление стандартных потоков не подходит. Нужно подменить функцию putchar. А как это сделать? Можно описать в своей программе тело ф-ии putchar? Или надо находить где она описана в библиотеках, заремливать и писать свою?
Работа с файлами (создание, ввод, вывод и поиск по значению ключевого поля) C++
Мне нужно разработать программу, которая реализует с файлом последовательного доступа следующие операции: создание, ввод, вывод и поиск по значению ключевого поля. * Сама программа должна содержать - Код факультета, название факультета, количество поданных заявлений от абитуреентив. Ключевое поле - код факультета
C++ Функции и указатели Здравствуйте Господа !!! Вопрос банальный и честно говоря даже стыдно его тут задавать :-int Mas(){ int n={5,1,9,7,2, 8,3,6,4,9}; return **n; } и в основной программе есть указатель на эту функцию , на сколько я предполагал по первому (нулевому) эллементу массива можно раскалупать и весь массив , НО у меня получается так , что первый... https://www.cyberforum.ru/ cpp-beginners/ thread859540.html C++ Элементы линейного массива сдвинуть циклически на две позиции влево https://www.cyberforum.ru/ cpp-beginners/ thread859533.html
Дорогие форумчане помогите с переводом с pascal в C++ { of integer; i,j:integer; N:integer; Begin ClrScr; Repeat Writeln('Введите размерность массива N, не < 2 и не > 128 '); {Ввод размерности массива N}
Контейнерный класс, с чем есть? C++
Парни, всем привет! Вот сижу с домашкой... Нужно сделать контейнерный класс для двух классов (книга и библиотека) на основе массива... Вроде так ничего сложного - но я в ступоре уже как три часа. Я не могу понять как будет работать этот контейнерный класс и вообще что это такое - для начала; после - не пойму как у меня всё будет взаимодействовать: нужно написать удаление книги, удаление...
C++ Не удается создать графический объект в заданных координатах https://www.cyberforum.ru/ cpp-beginners/ thread859519.html
Всем доброго времени суток. Проблема вот в чем: пишу код кнопки(под дос, компилятор turbo c++1.0), однако в итоге он работает неправильно. 1 вызываю функцию set(x,y,wb,hb,name) с необходимыми мне координатами, шириной и высотой кнопки, а также ее именем(к примеру x=100, y=0) 2 вызваю функцию crt() 3 в цикле проверяю нажатие кнопки функцией click() и если оно верно, выхожу из цикла и завершаю...
6 / 6 / 1
Регистрация: 24.12.2012
Сообщений: 153
10.05.2013, 06:59  [ТС] 0

как выйти из циклов - C++ - Ответ 4530481

10.05.2013, 06:59. Показов 3876. Ответов 20
Метки (Все метки)

Ответ

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <Windows.h>
#include <iostream>
 
void main(void)
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);   
 
    float R = 31;
    float _x0, _y0;
    _x0 = 32 - R;
    float Dokr;
    Dokr = (-40) * (-40) - 4 * 1 * (-560);
    _y0=((-40) + sqrt(Dokr)) / 2;
    float krayokruzhnostiX1, krayokruzhnostiX2;
    krayokruzhnostiX1 = _x0 - R;
    krayokruzhnostiX2 = _x0 + R;
    
    float a = 31, b = 38;
    float _x, _y;
    float Dell;
    _y = b - 45;
    Dell = (-80) * (-80) - 4 * 1 * 671;
    _x = (-80 + sqrt(Dell)) / 2;
    float krayellipsaX1, krayellipsaX2;
    krayellipsaX1 = _x - a;
    krayellipsaX2 = _x + a;
    
    
    float Yell1, Yell2;
    float Yokr1, Yokr2;
    float X1, X2;
    float t, w, D;
 
        float n1 = 1;//типо a
        w = 2 * _y0;//типо b
        
        float znachenieellipsa = 1;
            float t1, w1, D1;
            float n2 = 1;//типо а
            w1 = 2 * _y;//типо b
 
    for( float i1 = krayokruzhnostiX1; i1 < krayellipsaX2; i1 = i1 + 0.001)
    {
        t = pow(i1 - _x0, 2) + pow(_y0, 2) - pow(R, 2);// типо c
        D = w * w - 4 * n1 * t;//дискриминант
        Yokr1 = (w + sqrt(D)) / 2 * n1;//первый корень окружности
        Yokr2 = (w - sqrt(D)) / 2 * n1;//второй корень окружности
        
        
        t1 = ((pow(i1 - _x, 2)) / (a * a) - znachenieellipsa) * (b * b) + (_y * _y);//типо с
        D1 = w1 * w1 - 4 * n2 * t1;//дискриминант 
        Yell1 = (w1 + sqrt(D1)) / 2 * n2;//первый корень эллипса
        Yell2 = (w1 - sqrt(D1)) / 2 * n2;//второй корень эллипса
 
        if( Yell1 != Yokr1)
        {
            printf("точки окружности от края окружности до края эллипса по X\n\tX=%0.3f \n\tY=%0.3f, Y1=%0.3f\n", i1, Yokr1, Yokr2);
            printf("точки эллипса от края окружности до края эллипса по X\n\tX=%0.3f \n\tY=%0.3f, Y1=%0.3f\n", i1, Yell1, Yell2);
        }
        else{break;}
        
    }
 
        printf("точки пересечения\n");
    system("pause");
}
посидел подумал вот что получилось. сделал все в 1 цикл. таки она считает точки! только сейчас не знаю как найти Yell1 == Yokr1

Добавлено через 8 минут
p.s на 70 строку не обращайте внимания... =)

Добавлено через 13 часов 6 минут
народ, нужна помощь... нужно сделать так чтобы ВСЕ числа считались с остатком до 0.001... понял почему такой косяк... возникает погрешность...

Добавлено через 1 час 12 минут
возник новый вопрос... как в формулах сказать компьютеру чтобы вычислял до трех знаков после запятой? например в строках 52 53 и 58 59, а то ведь там числа могу получаться очень длинные...

Добавлено через 2 часа 32 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <Windows.h>
#include <iostream>
#include <iomanip>
using namespace std;
 
void main(void)
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);   
 
    float R = 31.000;
    float _x0, _y0;
    _x0 = 32.000 - R;
    float Dokr;
    Dokr = (-40.000) * (-40.000) - 4.000 * 1.000 * (-560.000);
    _y0 = ((-40.000) + sqrt(Dokr)) / 2.000;
    float krayokruzhnostiX1, krayokruzhnostiX2;
    krayokruzhnostiX1 = _x0 - R;
    krayokruzhnostiX2 = _x0 + R;
    
    float a = 31.000, b = 38.000;
    float _x, _y;
    float Dell;
    _y = b - 45.000;
    Dell = (-80.000) * (-80.000) - 4.000 * 1.000 * 671.000;
    _x = (-80.000 + sqrt(Dell)) / 2.000;
    float krayellipsaX1, krayellipsaX2;
    krayellipsaX1 = _x - a;
    krayellipsaX2 = _x + a;
    
    
    float Yell1 = 0.000, Yell2 = 0.000;
    float Yokr1 = 0.000, Yokr2 = 0.000;
    float X1, X2;
    float t, w, D;
 
        float n1 = 1.000;//типо a
        w = 2.000 * _y0;//типо b
        
        float znachenieellipsa = 1.000;
            float t1, w1, D1;
            float n2 = 1.000;//типо а
            w1 = 2.000 * _y;//типо b
 
    for(float i1 = krayokruzhnostiX1; i1 <= 0; i1 = i1 + 0.000001)
    {       
        t = pow(i1 - _x0, 2.000) + pow(_y0, 2.000) - pow(R, 2.000);// типо c
        D = w * w - 4.000 * n1 * t;//дискриминант
        Yokr1 = (w + sqrt(D)) / 2.000 * n1;//первый корень окружности
        X1=i1;      
        
        t1 = ((pow(i1 - _x, 2.000)) / (a * a) - znachenieellipsa) * (b * b) + (_y * _y);//типо с
        D1 = w1 * w1 - 4 * n2 * t1;//дискриминант 
        Yell1 = (w1 + sqrt(D1)) / 2.000 * n2;//первый корень эллипса
                
        if(Yokr1 == Yell1)
            break;      
    }
    printf("X=%.3f Yokr=%.3f, Yell=%.3f\n", X1, Yokr1, Yell1);
 
    for(float i1 = 21; i1 <= krayellipsaX2; i1 = i1 + 0.000001)
    {       
        t = pow(i1 - _x0, 2.000) + pow(_y0, 2.000) - pow(R, 2.000);// типо c
        D = w * w - 4.000 * n1 * t;//дискриминант
        Yokr2 = (w - sqrt(D)) / 2.000 * n1;//второй корень окружности
        X2=i1;      
        
        t1 = ((pow(i1 - _x, 2.000)) / (a * a) - znachenieellipsa) * (b * b) + (_y * _y);//типо с
        D1 = w1 * w1 - 4 * n2 * t1;//дискриминант 
        Yell2 = (w1 - sqrt(D1)) / 2.000 * n2;//второй корень эллипса
 
        if(Yokr2 == Yell2)
            break;
        else
        {
        printf("X=%f Yokr=%f, Yell=%f\n", X2, Yokr2, Yell2);
        }
    }
        
    printf("X=%.3f Yokr=%.3f, Yell=%.3f\n", X2, Yokr2, Yell2);
        
    system("pause");
}
сделал два цикла, первый для первых точек, второй для вторых) в первом все нормально, можно сказать повезло... а вот со вторым циклом так не везет, проскакивает. количество итераций конечно много... но если можно подскажите как сделать чтобы сами значения при вычислении до трех знаков округлялись? поиск пробовал

Добавлено через 1 минуту
поиск пробовал, много интересного пишут, но я не могу понять как в мои выражения это вставить

Добавлено через 1 минуту

вот в этой точке проскакивает...

Добавлено через 16 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <Windows.h>
#include <iostream>
#include <iomanip>
using namespace std;
 
void main(void)
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);   
 
    float R = 31.000;
    float _x0, _y0;
    _x0 = 32.000 - R;
    float Dokr;
    Dokr = (-40.000) * (-40.000) - 4.000 * 1.000 * (-560.000);
    _y0 = ((-40.000) + sqrt(Dokr)) / 2.000;
    float krayokruzhnostiX1, krayokruzhnostiX2;
    krayokruzhnostiX1 = _x0 - R;
    krayokruzhnostiX2 = _x0 + R;
    
    float a = 31.000, b = 38.000;
    float _x, _y;
    float Dell;
    _y = b - 45.000;
    Dell = (-80.000) * (-80.000) - 4.000 * 1.000 * 671.000;
    _x = (-80.000 + sqrt(Dell)) / 2.000;
    float krayellipsaX1, krayellipsaX2;
    krayellipsaX1 = _x - a;
    krayellipsaX2 = _x + a;
    
    
    float Yell1 = 0.000, Yell2 = 0.000;
    float Yokr1 = 0.000, Yokr2 = 0.000;
    float X1, X2;
    float t, w, D;
 
        float n1 = 1.000;//типо a
        w = 2.000 * _y0;//типо b
        
        float znachenieellipsa = 1.000;
            float t1, w1, D1;
            float n2 = 1.000;//типо а
            w1 = 2.000 * _y;//типо b
            printf("точки пересечения эллипса и окружности\n");
    for(float i1 = krayokruzhnostiX1; i1 <= 0; i1 = i1 + 0.00001)
    {       
        t = pow(i1 - _x0, 2.000) + pow(_y0, 2.000) - pow(R, 2.000);// типо c
        D = w * w - 4.000 * n1 * t;//дискриминант
        Yokr1 = (w + sqrt(D)) / 2.000 * n1;//первый корень окружности
        X1=i1;      
            float tpy1 = int(Yokr1 * 1000 + 0.5)/10000.0;
        t1 = ((pow(i1 - _x, 2.000)) / (a * a) - znachenieellipsa) * (b * b) + (_y * _y);//типо с
        D1 = w1 * w1 - 4 * n2 * t1;//дискриминант 
        Yell1 = (w1 + sqrt(D1)) / 2.000 * n2;//первый корень эллипса
            float tpy2 = int(Yell1 * 1000 + 0.5)/10000.0;
        if(Yokr1 == Yell1)
            break;      
    }
    printf("\tX1=%.3f\tY1=%.3f\n", X1, Yokr1);
 
    for(float i1 = 21; i1 <= krayellipsaX2; i1 = i1 + 0.0001)
    {       
        t = pow(i1 - _x0, 2.000) + pow(_y0, 2.000) - pow(R, 2.000);// типо c
        D = w * w - 4.000 * n1 * t;//дискриминант
        Yokr2 = (w - sqrt(D)) / 2.000 * n1;//второй корень окружности
        X2=i1;      
            float tpy1 = int(Yokr2 * 1000 + 0.5)/1000.0; 
        t1 = ((pow(i1 - _x, 2.000)) / (a * a) - znachenieellipsa) * (b * b) + (_y * _y);//типо с
        D1 = w1 * w1 - 4 * n2 * t1;//дискриминант 
        Yell2 = (w1 - sqrt(D1)) / 2.000 * n2;//второй корень эллипса
            float tpy2 = int(Yell2 * 1000 + 0.5)/1000.0;
        if(tpy1 == tpy2)
            break;
        else
        {
        //printf("X=%f Yokr=%f, Yell=%f\n", X2, tpy1, tpy2);
        }
    }
        
    printf("\tX2=%.3f\tY2=%.3f\n", X2, Yokr2);
        
    system("pause");
}
фух все разобрался и решил эту задачку))

Вернуться к обсуждению:
как выйти из циклов C++
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.05.2013, 06:59
Готовые ответы и решения:

как выйти из программы
при выполнении программы - выполняется выбранная операция, после чего при нажатии любой кнопки цикл...

Как выйти из условия if?
Пользователю предлагается выбор, он должен ввести 1 или 2. Я хочу учесть и ситуацию, когда...

Как выйти из цикла while();
#include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;cctype&gt; #include &lt;string&gt; #include &lt;vector&gt;...

Как выйти из оператора if
Пишу ИИ для крестиков-ноликов и вопрос в том, если исполниться одино условие как сделать так что бы...

20
10.05.2013, 06:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.05.2013, 06:59
Помогаю со студенческими работами здесь

Как выйти из программы
Написав щось подібне калькулятору. Але що написати щоб вийти з консолі?? буду вдячний. І ще...

do while - как выйти из цикла?
Подскажите пожалуйста, а то я уже всю голову &quot;сломал&quot;, почему при вводе &quot;А&quot; цикл не прерывается???...

Как выйти из функции
Прошу прощения. Произошел сбой при записи. Напишите еще раз суть задачи. То получилось что-то...

Не пойму как из цикла выйти
в учебнике такой пример. #include &lt;stdio.h&gt; main() { long nc; nc = 0; while...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru