Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 12.09.2019
Сообщений: 1
1

Даны три точки A, B, C на числовой оси. Найти длины отрезков AC и BC и их сумму

12.09.2019, 22:23. Просмотров 2463. Ответов 3
Метки нет (Все метки)


Здравствуйте!
Не могу понять в чем проблема.
Вводя числа, выплевывается "Process returned -1073741819 <0xC0000005>"

Сам код
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
#include <stdio.h>
#include <math.h>
 
float fun(float x1, float x2);
 
int main()
{
    printf("Input a,b,c: ");
    float a,b,c,x;
    scanf("%f%f%f\n", a, b, c);
    a = (float)a;
    b = (float)b;
    c = (float)c;
    x=fun(a,c)+fun(b,c);
    printf("%f\n",x);
    return 0;
}
 
float fun(float x1, float x2)
{
    float s;
    s=x2-x1;
    if (s<0) {s = sqrt(s*s);}
    return (s);
}
Добавлено через 11 минут
Все, я сам нашел косяк! Забыл поставить & в scanf...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.09.2019, 22:23
Ответы с готовыми решениями:

Даны три точки на числовой оси. Найти длины отрезков и их сумму
1 Даны три точки A, B, C на числовой оси. Найти длины отрезков AC и BC и их сумму.

Даны три точки A, B, C на числовой оси. Точка C расположена между точками A и B. Найти произведение длин отрезков AC и BC.
1. Даны три точки A, B, C на числовой оси. Точка C расположена между точками A и B. Найти...

Даны четыре точки на числовой оси A, B, C И D. найти длину пересечения отрезков AB И CD
Я только начал изучать, не могли бы подсказать метод построения решения этой задачи

Оператор for. Вывести координаты и длины отрезков на числовой оси
Дано целое число N(&gt;1) и две вещественные точки на числовой оси: A,B (A&lt;B). Отрезок разбит на N...

__________________
Помогаю в написании курсовых работ и дипломов здесь.
3
Модератор
1450 / 1053 / 548
Регистрация: 16.10.2013
Сообщений: 3,204
Записей в блоге: 9
13.09.2019, 05:07 2
Лучший ответ Сообщение было отмечено FooDog как решение

Решение

я бы рекомендовал организовать ввод каждого числа по отдельности, а не через пробел. Это проще для пользователя и менее громоздко.
И также дам совет, который сам недавно получил от одного форумчанина (и полностью с ним согласен). Все переменные объявлять лучше в самом начале функции и не делать этого в середине. Это не играет роли для компилятора, но является своего рода правилом хорошего тона.
Приведение к float делать не нужно после ввода чисел. Они итак уже float.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int main()
{
    float a, b, c, x;
 
    printf("Input a: ");
    scanf("%f", &a);
 
    printf("Input b: ");
    scanf("%f", &b);
 
    printf("Input c: ");
    scanf("%f", &c);
 
    x = fun(a, c) + fun(b, c);
 
    printf("%f\n",x);
 
    return 0;
}
1
Эксперт C
25481 / 15866 / 3396
Регистрация: 24.12.2010
Сообщений: 34,726
13.09.2019, 08:28 3
Цитата Сообщение от long399 Посмотреть сообщение
Все переменные объявлять лучше в самом начале функции и не делать этого в середине. Это не играет роли для компилятора, но является своего рода правилом хорошего тона.
Это не правило хорошего тона, а правило вынужденное. Лично мне много приятнее объявлять переменные именно там, где они начинают использоваться (впрочем, это дело вкуса). Однако, увы! не все компиляторы Си эту фишку поддерживают. И легче применять для самого себя это правило, чем получать неожиданные ошибки, и гадать, с каким компилятором ты имеешь дело. Тем более, когда даешь советы здесь, на форуме. Откуда мне знать, какой компилятор у ТС-а? И конечно, я постараюсь написать код так, чтоб он был съедобен для любого компилятора.
1
2758 / 1705 / 352
Регистрация: 09.09.2017
Сообщений: 7,179
13.09.2019, 09:21 4
Лучший ответ Сообщение было отмечено FooDog как решение

Решение

Цитата Сообщение от long399 Посмотреть сообщение
я бы рекомендовал организовать ввод каждого числа по отдельности, а не через пробел.
А где у ТСа ввод через пробел? Вроде ж нормальная форматная строка: ввод трех чисел с любыми разделителями. Уж точно удобнее запроса на каждое.
Цитата Сообщение от FooDog Посмотреть сообщение
if (s<0) {s = sqrt(s*s);}
это вы fabs писали? Если да, то fabs уже есть в math.h, работает быстрее и проще для понимания.
Цитата Сообщение от FooDog Посмотреть сообщение
a = (float)a;
b = (float)b;
c = (float)c;
Такой конструкции не припомню. Зачем она?
Цитата Сообщение от FooDog Посмотреть сообщение
float fun(float x1, float x2);
Неудачный выбор названия: оно ничего не говорит о том, для чего функция предназначена. Назвали бы len() или dist(). Другое дело, что тут вынесение в отдельную функцию не очень-то и нужно: x = fabs(a-c) + fabs(b-c);
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.09.2019, 09:21

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь или здесь.

три точки А, В, С на числовой оси
Даны три точки А, В, С на числовой оси. Точка С расположена между точками А и В. Найти произведение...

На числовой оси расположены три точки..
НА числовой оси распложены три точки: A,B,C. Определить, какая из двух последних точек (B и С)...

Найти длину отрезков на числовой оси
Прив, всем.Помогите пожалуйста мне решить ету задачу: Дано три точки А,В,С на числовій осі.Знайти...

Пересечение отрезков числовой оси
Дано 2*N действительных чисел . Они определяют N интервалов числовой оси 1, a2], 3, a4], ...,...


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

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

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