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

программа работает через раз

06.10.2022, 20:46. Показов 705. Ответов 6

Author24 — интернет-сервис помощи студентам
Вчера работало все нормально, а сегодня код выводит ответ через раз. пробовал 2 веб-компилятора и там тоже один раз выходит, другой нет.

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
#include <iostream>
#include <cmath>
 
using namespace std;
 
int main()
{
    float a_y, a_x, b_x, b_y, c_x, c_y;
 
    cout << "coordinates: ";
    cin >> a_x >> a_y >> b_x >> b_y >> c_x >> c_y;
 
    float b = sqrt(pow(b_x - a_x, 2) + pow(b_y - a_y, 2)),
        c = sqrt(pow(c_x - b_x, 2) + pow(c_y - b_y, 2)),
        a = sqrt(pow(a_x - c_x, 2) + pow(a_y - c_y, 2));
 
    float max = a;
    if (b > max) {
        max = b;
        if (max >= c + a) {
            cout << "doesn't exist";
        }
    }
    else if (c > max) {
        max = c;
        if (max >= b + a) {
            cout << "doesn't exist";
        }
    }
    else
        if (max >= c + b) {
            cout << "doesn't exist";
        }
        else {
            float coor = a + b + c;
            cout << "per: " << coor << endl;
        }
 
    return 0;
}
не пойму от чего это зависит и почему так
Миниатюры
программа работает через раз   программа работает через раз  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.10.2022, 20:46
Ответы с готовыми решениями:

Почему работает программа через раз?
Крч авторизация и регистрация ... записываю данные при регистрации в файл ... file&lt;&lt;login&lt;&lt;&quot;...

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

Морской бой работает через раз
Пишу консольный морской бой на с++ и столкнулся с проблемой на стадии расстановки кораблей....

Алгоритм RSA (работает через раз)
Всем привет! Пытаюсь реализовать алгоритм RSA для лабораторной работы, но всё тщетно. Можете...

6
3697 / 2647 / 761
Регистрация: 29.06.2020
Сообщений: 9,800
06.10.2022, 21:02 2
Если что, это все не мое
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
#include <iostream>
#include <cmath>
// проверка треугольника на существование
// сумма двух любых сторон треугольника должна быть больше 3ей стороны
bool is_triangle( const double a, const double b, const double c ){
    if( ( a + b ) <= c )
        return false;
    if( ( a + c ) <= b )
        return false;
    if( ( b + c ) <= a )
        return false;
    return true;
}
double distance(const double a_x, const double a_y, const double b_x, const double b_y ) {
    double dx = a_x - b_x;
    double dy = a_y - b_y;
    return std::sqrt(dx * dx + dy * dy);
}
int main(){
    double a_y, a_x, b_x, b_y, c_x, c_y;
 
    std::cout << "Coordinates: " ;
    std::cin >> a_x >> a_y >> b_x >> b_y >> c_x >> c_y;
    double  a = distance(a_x, a_y, b_x, b_y),
            b = distance(b_x, b_y, c_x, c_y),
            c = distance(c_x, c_y, a_x, a_y);
    if (is_triangle(a,b,c))
        std::cout << "Triangle perimeter is : " << a+b+c;
    else
        std::cout << "Triangle by given points dosn't exist.";
}
0
716 / 676 / 110
Регистрация: 29.05.2015
Сообщений: 4,079
06.10.2022, 21:15 3
Цитата Сообщение от drake4 Посмотреть сообщение
не пойму от чего это зависит и почему так
Чё ж тут непонятного? Путаница в многочисленных if-else, при каких-то входных данных не выполняется ни одно из условий.
1
3697 / 2647 / 761
Регистрация: 29.06.2020
Сообщений: 9,800
06.10.2022, 21:31 4
Цитата Сообщение от alexu_007 Посмотреть сообщение
Путаница в многочисленных if-else
Ага. Я как посмотрел на все это. Глаза закатились. И я решил слепить из уже готовых функций на просторах этого форума.
Ибо я не стану это "курить".
0
Вездепух
Эксперт CЭксперт С++
12783 / 6662 / 1793
Регистрация: 18.10.2014
Сообщений: 16,849
06.10.2022, 21:36 5
Цитата Сообщение от drake4 Посмотреть сообщение
Вчера работало все нормально, а сегодня код выводит ответ через раз.
Зачем вы выдумываете? На тех входных данных, на которых ваша программа сейчас не выводит ответ, она никогда не выводила ответа: ни "вчера", ни когда-либо еще.

Цитата Сообщение от drake4 Посмотреть сообщение
не пойму от чего это зависит и почему так
Что написали в программе, то и получили.
0
Модератор
Эксперт С++
13701 / 10904 / 6472
Регистрация: 18.12.2011
Сообщений: 29,110
07.10.2022, 08:26 6
Для этой задачи проверка на существование треугольника вообще бессмысленная,
т.к. любые три точки на плоскости образуют треугольник.
Если точки на одной прямой, то треугольник можно назвать вырожденным.
Кроме того, ТС в коде тоже предлагает такой случай считать треугольником,
т.к. делает сравнения через >=, а не через ==
Поэтому, предлагаю код ТС сократить до
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    double a_y, a_x, b_x, b_y, c_x, c_y;
    cout << "coordinates: ";
    cin >> a_x >> a_y >> b_x >> b_y >> c_x >> c_y;
 
    double b = sqrt((b_x - a_x)*(b_x - a_x) + (b_y - a_y)*(b_y - a_y));
    double c = sqrt((b_x - c_x)*(b_x - c_x) + (b_y - c_y)*(b_y - c_y));
    double a = sqrt((c_x - a_x)*(c_x - a_x) + (c_y - a_y)*(c_y - a_y));
    double per=a+b+c;
    if(per==0) 
      cout<<"It is not triangle, but point\n";
    else
      cout << "perimetr=" << per << endl;
 
    return 0;
}
0
573 / 475 / 99
Регистрация: 05.08.2022
Сообщений: 2,598
07.10.2022, 09:31 7
Цитата Сообщение от drake4 Посмотреть сообщение
не пойму от чего это зависит и почему так
зависит от входных данных
Вчера вы одни данные вводили, сегодня другие вводите (это по вашим же картинкам видно).
Странно ожидать идентичного поведения при этом.
0
07.10.2022, 09:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.10.2022, 09:31
Помогаю со студенческими работами здесь

cin.getline работает через раз
вот этот код работает прекрасно #include &lt;iostream&gt; using namespace std; void Open_Directory()...

Чтение из файла - программа корректно работает лишь раз
пишу курсовую,возникла проблема, суть: при первом запуске вроде работает всё нормально, при...

Замена значения в матрице. Работает через раз.
Задание: Составить программу на языке С++.В матрице размерности 10 на 6 найти номер первого из...

Цикл ввода и вывода числа работает через раз
Имеется цикл ввода и вывода числа с неопределенным количеством повторений. Если вводится нечисловое...

Как правильно записать условие для подсчета быков и коров. Мое работает через раз
/*Написать игру «Быки и коровы». Программа «загадывает» четырёхзначное число и играющий должен...

Не работает программа через printf и scanf
Нужно написать программу, которая бы выводила таблицу через printf и scanf, которые бы находились в...

Не работает программа при запуске в Windows через командную строку
Дали задание скомпилить cmake под Linux. Там все получилось. Как доп.задание дали перенести и...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru