|
I was hoping someone would explain the line below to me...
printf ("sqrt(%lf) = %lf\n", x, result );
---------------------------------------------------
I know what the sqrt and printf functions do, but the
%1f\n lost me.
-----------------------------------------------------
The complete program is below...
#include <stdio.h>
#include <math.h>
#include <iostream.h>
int main ()
{
double x, result;
cout<<"please enter any number";
cin>>x;
result = sqrt (x);
printf ("sqrt(%lf) = %lf\n", x, result );
return 0;
}
thanks, Dave
|
|
|
|
|
The \n is a carriage return (begins a new line).
%1f indicates a double with at least one digit.
~RaGE();
|
|
|
|
|
In fact, the sqrt that is inside the printf function is just text so this is not the function !!!
For the '%1f\n' that means: you will have the third argument of printf (that means, result) formated (%) as a float (f) with minimum 1 (1) character and then followed by a newline (\n).
Everything you see in the printf function is just formated text , so in the end you will have something like that at the output: sqrt(9) = 3
Hope this helps
|
|
|
|
|
In fact, I think it is %lf and not %1f, l meaning that a "long" type would be used (it is an additional indication of size for the provided type), but this has no meaning with "f".
~RaGE();
|
|
|
|
|
I'm still confused on the line below...
printf ("sqrt(%lf) = %lf\n\n", x, result );
Where does the %lf get the square root value from to display? I see that x is passed as an argument into the sqrt function, but where does the return(the square root) output?
Thanks
--------------------------------------------------------
#include <stdio.h>
#include <math.h>
#include <iostream.h>
int main ()
{
double x, result;
cout<<"please enter any number";
cin>>x;
result = sqrt (x);
printf ("sqrt(%lf) = %lf\n\n", x, result );
return 0;
}
|
|
|
|
|
[Also look at the cedcric's post to get infos]
OK. Obviously you are not familiar with the printf function
printf works as follow : it takes as parameters a string, plus a certain quantity of variables, whose value you want to display in the string. The way the things are displayed (the formatting) will be set up in the string using a % sign followed by characters indicated precision, width andtype of variable.
So in your program,
cin>>x;
result = sqrt (x);
will put the square root of x, which is the variable you type in wenn running the programm, in the variable result.
printf ("sqrt(%lf) = %lf\n\n", x, result );
This actually displays the string "sqrt(%lf) = %lf\n\n", replacing the first occurency of %+formatting with the value of x, the second one with the value of result (since x and result are the two other parameters of printf). lf means in this case that the type is a double. So the display would be "sqrt(4) = 2" + two return carriage(the two \n), leaving two blank lines in your console, if x=4.0 (so result =2.0 )
The \n is a special caractère such as \r (which puts the cursor to the beginning of the line) or \\ which displays a \. This has nothing to do with printf.
~RaGE();
|
|
|
|
|
Rage wrote:
caractère
I thought we spoke english on CP!
Ryan "Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late" John Nichol "Point Of Impact"
|
|
|
|
|
Excellent ! That's a lapsus ! Actually, someone went to talk to me while I was writing my answer ... somehow my French2English() thread got interrupted by a corrupted CEvent from my TalkFrench() function ... seems that intern synchronisation needs to be refined
Or maybe I need some vacation ...
~RaGE();
|
|
|
|
|
Rage wrote:
somehow my French2English() thread got interrupted by a corrupted CEvent from my TalkFrench() function ... seems that intern synchronisation needs to be refined
Or maybe I need some vacation ...
Either you're a robot, or you need some serious vacation.
Or maybe both, I guess
Ryan "Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late" John Nichol "Point Of Impact"
|
|
|
|
|
My other name is C3PO.
~RaGE();
|
|
|
|
|
Rage wrote:
My other name is C3PO.
Now it all makes sense
Ryan "Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late" John Nichol "Point Of Impact"
|
|
|
|
|
I think you don't understand really the printf function. The sqrt is NOT a function, this is just text. So, when you see the first '%' that means that the second argument of the sprintf function (wich has a variable number of arguments) will be formated in a certain way, here: as a float!
Everything else that is not recognized as a formating string will be sent as TEXT characters to the output. You then have a second '%' wich take the third parameter (result) and format it as a float and send it as TEXT to the output. So, to answer your question: the square root is then taken from the argument list of the printf function!
Example:
if you enter 9 in your program, x will be 9. Then, in result you will have 3. Then your printf function can be "shown" as:
printf("sqrt(%lf) = %lf\n\",9,3); (I replaced x and result with their respective values.
So, this function will print the following STRING: sqrt(9.00000) = 3.00000
with 2 newlines (\n that are not formating string).
You can replace "sqrt" in the printf function by anything you want, it will work but print the other string instead of "sqrt"
|
|
|
|
|
Incredible how these three lines of code are not easy to explain Fortunately your two answers are far more consistant than mine, so I think it is clear now ...
~RaGE();
|
|
|
|
|
I remember the first time I tried to understand this function! That was horrible: the documentation is not really clear
|
|
|
|
|
Conventionally, %f would be a float value, while %lf (letter L not digit 1) would be a double value, so strictly speaking it would. I think auto-promotion is happening here, but wouldn't put any of my money on it.
Steve S
[This signature space available for rent]
|
|
|
|
|
Thanks everybody, I felt like a cow looking at a new gate when I saw this stuff...it's starting to make much more sense.
|
|
|
|
|
How can I open a URL with the POST command. I will Post some data from my application to my website.
|
|
|
|
|
While it wouldn't actually open an instance of explore, you could use the WinInet functions to
do the job.
e.g.
HttpSendRequest,
HttpOpenRequest,
etc.
This also has the advantage of being transparent to the user, so any visual feedback is as you
design.
Iain.
|
|
|
|
|
How to disable restore down button.
I need only maximizebox button in my application,the window shouldnot restore to its original state.
|
|
|
|
|
If you handle the WM_SYSCOMMAND / OnSysCommand message, and check the command type parameter for
SC_RESTORE, you can remove the standard behaviour. This will kill the restore function, but not
remove the button / system menu option.
You may want to change the initial window style to remove the button in the first place, and remove
the "restore" option from the system menu (hint: GetSystemMenu).
That would make it obvious to your users that the function has been removed. Otherwise, they may just
think your application is broken...
Iain.
|
|
|
|
|
please give me the example.
|
|
|
|
|
People come here to help & hint, not to do *all* the work!
Have you made a handler for WM_SYSCOMMAND? You can go into classwizard, and and the handler to
CMainFrame there.
Then, check the handler is called, by putting a breakpoint in it. Or making it pop up a MessageBox.
When you are confident it is called, start checking nID (one of its parameters) for when it =SC_RESTORE.
If so, don't can the base method, but return 0.
void CMainFrame::OnSysCommand (UINT nID, LPARAM lParam)
{
if (nID == SC_CLOSE)
return 0;
CMDIFrameWnd::OnSysCommand (nID, lParam);
}
Now try "restore" from the button on the top right, or the system menu on the top left.
To change the window style, look up:
CWnd::PreCreateWindow.
To remove menu items from the system menu, look up CMenu, CWnd::GetSystemMenu, and put them in
CMainFrame::OnCreate (....).
Good luck,
Iain.
|
|
|
|
|
I'm working on a project which is Single Document-MFC.
I'm learning database programing vith visual c++ 6.0.
I want to enter a numaric value into an EditBox.
Then this value should be stored in *.mdb table as long integer.
I chose catagory and value type as value/long from class wizard.
But I could not write any code for it.
When I enter a string,I could not have any problem.
I wrote
m_aciklamalar.GetWindowText (strAcikla);
set.m_aciklama = strAcikla;
then store Cstring into *.mdb.
please,help me !
emroz
|
|
|
|
|
Go to the properties of the Edit control, select the styles tab and check the Number check box. This should work.
The only problem: you can only enter unsigned integer. If you need floats or signed numbers, you have to override the control. If you need that, I already done this, so, if you want I can send you the source files.
|
|
|
|
|
if you send me,I'll be happy
emroz
|
|
|
|