Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Объясните параметры функции scanf  (Прочитано 18767 раз)
0 Пользователей и 4 Гостей смотрят эту тему.
RealDream
Гость
« : 27-11-2006 20:01 » 

Код:
#include <stdio.h>
#include <math.h>
void main ()
{
double x,y;
printf("\n PeIIIuM ypaBHeHue BuDa sin 3x + sin x \n BBeDuTe X=");
scanf("%lf",&x);
y= sin(3*x)+sin(x);
printf("%lf",y);
scanf("%lf",&x);
}
дана программа вычисления мат форм.
scanf("%lf",&x); что значит в этой строке и других %lf и &y
пожалуйста распиишите подробно насчет lf очень прошу!
особено какие типы даных подерживают, и почему ИМЕННО lf
аранее благодарю....
« Последнее редактирование: 27-11-2006 20:08 от Finch » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #1 : 27-11-2006 20:27 » 

%lf - значит отформатировать число как double

&y - это адрес переменной y
Записан

Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #2 : 27-11-2006 20:41 » new

Вот страничка, объясняющая параметры форматирования чисел с плавающей запятой http://www.gnu.org/software/libc/manual/html_node/Floating_002dPoint-Conversions.html#Floating_002dPoint-Conversions
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
RealDream
Гость
« Ответ #3 : 28-11-2006 04:37 » 

Спасибо но нет ли что нить на русском Жаль
вот еще в дагон вопрос созрел Улыбаюсь
Вычислите значение функции y(x) на отрезке [a, b], с шагом изменения x =  xt – xt -1 = h

* 1.rar (1.08 Кб - загружено 927 раз.)
Записан
RealDream
Гость
« Ответ #4 : 28-11-2006 04:53 » 

а можешь сам вкратце сказать для чего нужно форматировать число как дабл??
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 28-11-2006 06:30 » 

RealDream, ф-ия _не_знает_, какие типы у переданных параметров, т.к. передаются указатели (они с точки зрения процессора все на одно лицо). Соотв., нужно знать, на какой тип указывает полученный указатель - на float (32 бита) или на double (64 бита).

Замечу, что эта неразбериха есть только в винде, т.к. в POSIX-совместимых ОС все плавающие параметры ф-ий scanf и printf прозрачно приводятся к double (поправте меня, если я заблуждаюсь).
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
RealDream
Гость
« Ответ #6 : 28-11-2006 08:07 » 

как я знаю long u float - типы данных
но что именно lf - эт лонг и флоат в суфиксе(сокращении)?
если это переводит тип в дабл то каждый символ что значит l и f
скажите пожалуйста!
и еще скиньте ссылку на все функции, сокращении в языке си ++. Скромно так...

Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 28-11-2006 08:36 » 

RealDream, %lf - длинное плавающее значение. Никаких прямых ассоциаций с названием типа нет - нужно читать документацию по ОС и среде, в которой программе предстоит работать, т.к. различные реализации имеют достаточно серьезные различия.

Поправочка: это к c++ отношение имеет посредственное, т.к. ф-ий форматированного ввода/вывода printf и scanf входят в "стандартную библиотеку C". Просто никто не запрещает использовать ее в C++.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
RealDream
Гость
« Ответ #8 : 28-11-2006 10:51 » 

ну а какое значение оно вообще имеет в продемонстрированной прграмме??
объясните нубу пожалуйста! (%lf)
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #9 : 28-11-2006 11:47 » 

Ну до чего ж молодёжь пошла ленивая.  С ума сойти...

В MSDN сложно заглянуть?

Format Specification Fields:

%[flags] [width] [.precision] [{h | l | I | I32 | I64}]type

что такое l смотрим здесь

Size and Distance Specification

The optional prefixes to type, h, l, and L, specify the "size- of argument (long or short, single-byte character or wide character, depending upon the type specifier that they modify). These type-specifier prefixes are used with type characters in printf functions or wprintf functions to specify interpretation of arguments, as shown in the following table.

Что такое f  смотрим здесь:

printf Type Field Characters

The type character is the only required format field ; it appears after any optional format fields. The type character determines whether the associated argument is interpreted as a character, string, or number.


ну а какое значение оно вообще имеет в продемонстрированной прграмме??

В принципе RXL уже тебе ответил. Проще говоря, это будет зависить от того, на какой системе программа будет откомпилирована.
« Последнее редактирование: 28-11-2006 11:49 от Джон » Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #10 : 28-11-2006 11:54 » 

RealDream, кратко, для особо ленивых:

Прототип: int scanf(char * fmt, ...);

Это ф-ия ввода из потока stdin.
Первый параметер - строка формата.
Многоточие вместо второго параметра указывает на переменное число доп.параметров (от 0 и до ...).

Строка формата.
Это самая обычная строка текста, но в ней могут присутствовать специальные последовательности, обнаружив кторые scanf() берет очередной параметер и производит с ним соотв. формату и назначению ф-ии действия. В данном случае - scanf("%lf", &y) - ожидается ввод строки из stdin, с введенным делается попытка распознать в тексте числовую запись, результат помещается в переменную y. Если введенная строка не соотв. формату, то в y ничего не помещается. Ф-ия возвращает количество "обслуженных" параметров.


Джон, и не говори...
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines