Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ Вещественные числа

Автор: Evernes 8.11.2006 18:53

Здравствуйте, ктонить подскажите плиз...
Дана задача:
Найти из трех вещественных положительных чисел, хранящихся в переменных a,b,c, то число, которое имеет наибольшую дробную. На экран вывести найденное число и его дробную часть. Исходные числа ввести с клавиатуры.


#include <stdio.h>;

int a,b,c,k
main();
{
if (float(a) < float(b))
k=float(b);
if (float(b) < float©)
k= float©;
printf(k);
getch()
}


Я тут сделал набросок...
Вопрос заключается в следующем: Какие еще нужно включать библиотеки? Как вывести на экран исходное число? И правильно ли вообще решено? blink.gif
СПАСИБО ЗАРАНЕЕ give_rose.gif




М
Пользуемся тегами !


Автор: klem4 8.11.2006 18:58

задача кстати похожая решалась недавно ...

Дробная часть числа :


float pi = 3.14159;
float ost = pi - (int)pi;





http://forum.pascal.net.ru/index.php?showtopic=13237

Автор: Evernes 8.11.2006 19:37

Я конечно понимаю, что это наглость unsure.gif
Но нельзя ли выложить правильное решение этой задачи... А то я пока совсем не разбираюсь в С...


Да и еще можете объяснить какие библиотеки надо тут включать... или одной достаточно?

Автор: klem4 8.11.2006 21:46

Смотри ничего сложного ...

# include <stdio.h>

int main(void)
{
float a, b, c, max;

printf("a = "); scanf("%f", &a);
printf("b = "); scanf("%f", &b);
printf("c = "); scanf("%f", &c);

max = a;

if ((b - (int)b) > (max - (int)max))
max = b;

if ((c - (int)c) > (max - (int)max))
max = c;

printf("Value = %2.5f, Rest = %2.5f", max, max - (int)max);

return 0;
}


или так :

# include <stdio.h>

int main(void)
{
float value, max;

printf("Input 3 values\n");

max = - 1;

for (int i = 0; i < 3; i++)
{
scanf("%f", &value);
if ((max < 0) || ((value - (int)value) > (max - (int)max)))
max = value;
}

printf("Value = %2.5f, Rest = %2.5f", max, max - (int)max);

return 0;
}

Автор: volvo 8.11.2006 22:34

Андрей, первый вариант ни разу не правильный smile.gif Попробуй такие данные:

  a = 2.996; b = 3.128; c = 4.975;
У тебя получится, что Value = Rest ... blum.gif

Автор: klem4 8.11.2006 22:57

Исправил
rolleyes.gif

Автор: Evernes 8.11.2006 23:20

СПАСИБО большое народ!!!=)
Просто тока начили изучать, а препод ничего нормально объяснить не может... norespect.gif

Автор: Evernes 9.11.2006 21:18

И еще один вопрос...

Не подскажите что обозначают следующие строки:

"%f",

"Value = %2.5f, Rest = %2.5f"

а то я что то не могу найти в учебнике что это такое...

Автор: klem4 9.11.2006 21:25

форматный вывод printf(char *format, ...)

%f - для вывода числа типа float
%2.5f - выводится число с плавающей сточкой, под число резервируется 2 позиции, после запятой печатаются первые 5 знаков.

"Value = %2.5f, Rest = %2.5f"


В консоль выведется : "Value = " (первый аргумент в соответсвии с форматом %2.5f) ", Rest = " (второй аргумент в соответсвии с форматом %2.5f)

Где первый аргумент: max
Второй: max - (int)max



ps Плохой учебник у тебя ;)

Автор: Evernes 9.11.2006 21:33

Спасибо good.gif