|
Hi,
It is safe to change the internal implementation of the exported functions, as long as you retain the signature. It is also perfectly safe to add more new functions, but you should not remove an existing function that may be used by the executable.
“Follow your bliss.” – Joseph Campbell
|
|
|
|
|
includeh10 wrote: no functions were added or deleted and function signitures were not changed
Yes that is safe, also see binary compatibility[^] for more background on the topic.
|
|
|
|
|
hello, i am having a problem with this code. I do not know what is wrong. I enter the begbal, the ourdep and the withdraw. But in the end when goes to get the final balance. The answer is always the same as the input of begin bal. Any help would be greatful.
#include <stdio.h>
#define SENTINEL 0
float endbal,
finbal;
int date,
outdep,
withdraw;
int main (void)
{
printf("BANK RECONCILIATION FOR: 10/21/98");
printf("\n\nEnding balance on statement:");
scanf ("%f", & endbal);
printf("Enter Outstanding dep (or %d to quit)>", SENTINEL);
scanf ("%d", & outdep);
while (outdep!= SENTINEL)
{
finbal = finbal + outdep;
printf("Enter outstanding dep (%d to quit)>", SENTINEL);
scanf("%f", & outdep);
}
printf("Outstanding check/withdrawal (or %d to quit)>", SENTINEL);
scanf ("%d", & withdraw);
while (withdraw!=SENTINEL)
{
finbal = finbal - withdraw;
printf("Enter withdrawal (%d to quit)>", SENTINEL);
scanf("%f", & withdraw);
}
finbal = endbal + outdep - withdraw;
printf("Your final balance in your checkbook should be $ %f" , finbal);
return 0;
}
|
|
|
|
|
Change
kbury wrote: printf("\n\nEnding balance on statement:");
scanf ("%f", & endbal);
to
printf("\n\nEnding balance on statement:");
scanf ("%f", & finbal);
and then remove the following line
kbury wrote: finbal = endbal + outdep - withdraw;
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
I made the changes and did the execute, this is what came out. still not the right answer. I do not know what else to do with this. I have tried so many things.
BANK RECONCILIATION FOR: 10/21/98
Ending balance on statement:20
Enter outstanding dep (0 to quit)>10
Enter outstanding dep (0 to quit)>10
Enter outstanding dep (0 to quit)>10
Enter outstanding dep (0 to quit)>0
Enter outstanding dep (0 to quit)>0
Outstanding check/withdrawal (or 0 to quit)>10
Enter withdrawal (0 to quit)>10
Enter withdrawal (0 to quit)>0
Your final balance in your checkbook should be $ 2185232384.000000
"c:\cop2000\a5\lcc2\score.exe"
Return code 0
Execution time 12.438 seconds
Press any key to continue...
|
|
|
|
|
Well, I didn't notice you made a bad mix of floats and ints.
Try
#define SENTINEL 0
int endbal,
finbal,
date,
outdep,
withdraw;
#include <stdio.h>
int main (void)
{
printf("BANK RECONCILIATION FOR: 10/21/98");
printf("\n\nEnding balance on statement:");
scanf ("%d", & finbal);
printf("Enter Outstanding dep (or %d to quit)>", SENTINEL);
scanf ("%d", & outdep);
while (outdep!= SENTINEL)
{
finbal = finbal + outdep;
printf("Enter outstanding dep (%d to quit)>", SENTINEL);
scanf("%d", & outdep);
}
printf("Outstanding check/withdrawal (or %d to quit)>", SENTINEL);
scanf ("%d", & withdraw);
while (withdraw!=SENTINEL)
{
finbal = finbal - withdraw;
printf("Enter withdrawal (%d to quit)>", SENTINEL);
scanf("%d", & withdraw);
}
printf("Your final balance in your checkbook should be $ %d" , finbal);
return 0;
}
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
kbury wrote: finbal = finbal + outdep;
finbal is an r-value which has not been properly initialized.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
None of the values have been initialized and it always causes problem as the programs works on a random garbage value.
1. endbal is not initialized. Either set it to 0 or some other positive value at the start of your program.
2. finbal must be set to 0 at the start of main() function.
You can initialize these at the time of declaration : float endbal = 0, finbal = 0;
Also the statement finbal = endbal + outdep - withdraw; is wrong. You have already added deposit amount and subtracted withdrawn amount in the variable finbal . So all you need is endbal = endbal + finbal .
Finally, you are displaying the wrong value. You should display endbal in the last printf statement.
I hope this helps you.
modified on Wednesday, October 14, 2009 6:59 PM
|
|
|
|
|
sorry, but that is horrible code.
you have amounts in int and float types, it might be wise and safe to be consistent.
you have an int withdraw yet you fill it with a %f in scanf.
you have two balance variables, you only need one.
you don't initialize variables that need it.
you have duplicated several lines, indicating you have chosen the wrong loop construct (use a do while instead!)
and what happens when the input isn't a number (say an empty line, or some text)?
Luc Pattyn
I only read code that is properly indented, and rendered in a non-proportional font; hint: use PRE tags in forum messages
Local announcement (Antwerp region): Lange Wapper? Neen!
modified on Wednesday, October 14, 2009 7:50 PM
|
|
|
|
|
I am still learning. I was not required to write a code for this but just a draw a flowchart. Any pointers would be appreciated.
|
|
|
|
|
Hi,
not tested:
float getNumber(char* prompt, float* delta) {
float number;
printf(prompt);
scanf("%f", number);
... add whatever checking you consider important
*delta=number;
return number!=0;
}
int main(void) {
float balance, delta;
int more;
printf("BANK RECONCILIATION FOR: 10/21/98");
printf("\n\nEnding balance on statement:");
scanf("%f", &balance);
do {
more=getNumber("Enter Outstanding dep (or 0 to quit)", &delta);
balance+=delta;
while(more);
do {
more=getNumber("Outstanding check/withdrawal (or 0 to quit)");
balance-=delta;
while(more);
printf("Your final balance in your checkbook should be $ %f" , balance);
return 0;
}
Luc Pattyn
I only read code that is properly indented, and rendered in a non-proportional font; hint: use PRE tags in forum messages
Local announcement (Antwerp region): Lange Wapper? Neen!
|
|
|
|
|
Dear Expert,
The following code is for displaying DialIn tab of user object in active directory.
can any one covert this code to visual c++ using adsi
On Error Resume Next
Const E_ADS_PROPERTY_NOT_FOUND = &h8000500D
Const FourthOctet = 1
Const ThirdOctet = 256
Const SecondOctet = 65536
Const FirstOctet = 16777216
Set objUser = GetObject _
("LDAP://cn=MyerKen,ou=Management,dc=NA,dc=fabrikam,dc=com")
blnMsNPAllowDialin = objUser.Get("msNPAllowDialin")
WScript.Echo "Remote Access Permission (Dial-in or VPN)"
If Err.Number = E_ADS_PROPERTY_NOT_FOUND Then
WScript.Echo "Control access through Remote Access Policy"
Err.Clear
Else
If blnMsNPAllowDialin = True Then
WScript.Echo "Allow access (msNPAllowDialin)"
Else
WScript.Echo "Deny access (msNPAllowDialin)"
End If
End If
WScript.Echo
arrMsNPSavedCallingStationID = objUser.GetEx("msNPSavedCallingStationID")
If Err.Number = E_ADS_PROPERTY_NOT_FOUND Then
WScript.Echo "No Caller-ID specified."
Err.Clear
Else
WScript.Echo "Verify Caller ID (msNPSavedCallingStationID): "
For Each strValue in arrMsNPSavedCallingStationID
WScript.echo strValue
Next
objUser.GetEx "msNPCallingStationID"
If Err.Number = E_ADS_PROPERTY_NOT_FOUND Then
WScript.Echo "Calling station ID(s) specified but not assigned."
Err.Clear
Else
WScript.echo "Calling station ID(s) assigned."
End If
End If
WScript.Echo
intMsRADIUSServiceType = objUser.Get("msRADIUSServiceType")
WScript.Echo "Callback Options"
If Err.Number = E_ADS_PROPERTY_NOT_FOUND Then
WScript.Echo "No Callback"
Err.Clear
Else
strMsRADIUSCallbackNumber = objUser.Get("msRADIUSCallbackNumber")
If Err.Number = E_ADS_PROPERTY_NOT_FOUND Then
WScript.Echo "Set by caller (Routing and Remote Access Service only)"
Err.Clear
strMsRASSavedCallbackNumber = objUser.Get("msRASSavedCallbackNumber")
If Err.Number <> E_ADS_PROPERTY_NOT_FOUND Then
WScript.Echo "Unused value of " & strMsRASSavedCallbackNumber & _
" appears in the Always Callback to field."
Else
Err.Clear
End If
Else
WScript.Echo "Always Callback to: " & _
strMsRADIUSCallbackNumber & " (msRADIUSCallbackNumber)"
End If
End If
WScript.Echo
intMsRASSavedFramedIPAddress = objUser.Get("msRASSavedFramedIPAddress")
If Err.Number = E_ADS_PROPERTY_NOT_FOUND Then
WScript.Echo "No static IP address assigned."
Err.Clear
Else
If sgn(intMsRASSavedFramedIPAddress) = -1 Then
intIP = intMsRASSavedFramedIPAddress
WScript.StdOut.Write 256 + (int(intIP/FirstOctet)) & "."
intFirstRemainder = intIP mod FirstOctet
WScript.StdOut.Write 256 + (int(intFirstRemainder/SecondOctet)) & "."
intSecondRemainder = intFirstRemainder mod SecondOctet
WScript.StdOut.Write 256 + (int(intSecondRemainder/ThirdOctet)) & "."
intThirdRemainder = intSecondRemainder mod ThirdOctet
WScript.Echo 256 + (int(intThirdRemainder/FourthOctet))
Else
intIP = intMsRASSavedFramedIPAddress
WScript.StdOut.Write int(intIP/FirstOctet) & "."
intFirstRemainder = intIP mod FirstOctet
WScript.StdOut.Write int(intFirstRemainder/SecondOctet) & "."
intSecondRemainder = intFirstRemainder mod SecondOctet
WScript.StdOut.Write int(intSecondRemainder/ThirdOctet) & "."
intThirdRemainder = intSecondRemainder mod ThirdOctet
WScript.Echo int(intThirdRemainder/FourthOctet)
End If
objUser.Get "msRADIUSFramedIPAddress"
If Err.Number = E_ADS_PROPERTY_NOT_FOUND Then
WScript.Echo "Static IP address specified but not assigned."
Err.Clear
Else
WScript.Echo "Static IP Address assigned."
End If
End If
WScript.Echo
arrMsRASSavedFramedRoute = objUser.GetEx("msRASSavedFramedRoute")
If Err.Number = E_ADS_PROPERTY_NOT_FOUND Then
WScript.Echo "No static Routes specified."
Err.Clear
Else
WScript.echo "Static Routes (msRASSavedFramedRoute):"
WScript.Echo vbTab & "CIDR 0.0.0.0 Metric"
For Each strValue in arrMsRASSavedFramedRoute
WScript.echo vbTab & strValue
Next
objUser.GetEx "msRADIUSFramedRoute"
If Err.Number = E_ADS_PROPERTY_NOT_FOUND Then
WScript.Echo "Static Routes specified but not assigned."
Err.Clear
Else
WScript.echo "Static Routes assigned."
End If
End If
|
|
|
|
|
raja 4 wrote: can any one covert this code to visual c++ using adsi
I'm sure someone can, but the question is will they? In the interim, read #2 and #4 here.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
Hi all,
I am new to C# development.I have application in which i need to enable / disbale too many toolbar buttons based on the tree node selection,due to this my screens is flickering to a greater extnet...please suggest me a good approach through which i can avoid the screen flickering.
Thanks in advance.....
|
|
|
|
|
hariakuthota wrote: I am new to C#
Welcome in the C++ forum...
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
hi,
I have a defined a function template as follows.
template<typename T, typename Function, typename K>
std::vector<K> find( std::vector<T> &a, Function _predicate )
{
std::vector<K> b(a.size());
//... some Code ..//
return(b);
}
which gives a compile error when i try to compile it using VC++
stating that it cannot deduce argument for parameter K.
I have attached the sample code below,
any suggestions from anyone?
Thank you
/********* File main.cpp **********/
#include <iostream>
#include "prog.h"
int main()
{
std::vector<int> a(10);
for( int i = 0; i < 10; i++)
{
a[i] = i;
}
std::vector<int> b = find( a, is_true<int>() );
for( int i = 0; i < 10; i++)
{
cout << "Value " << i << " : " << b[i] << endl;
}
}
#indef PROG_H_INCLUDED
#define PROG_H_INCLUDED
#include <vector>
//Function Predicate to check whether a value is true
template <typename T>
class is_true
{
public:
is_true()
{}
bool operator() (const T &element) const
{
if( element )
{
return true;
}
else
{
return false;
}
}
};
//Function Predicate to check whether a value is true
template <typename T>
class is_false
{
public:
is_false()
{}
bool operator() (const T &element) const
{
if( !element )
{
return true;
}
else
{
return false;
}
}
};
template<typename T, typename Function, typename K>
std::vector<K> find( std::vector<T> &a, Function _predicate )
{
std::vector<K> b(a.size());
for( int i = 0; i < a.size(); i++ )
{
if( _predicate(a[i]) )
{
b[i] = K(a[i]);
}
}
return(b);
}
#endif // PROG_H_INCLUDED
|
|
|
|
|
You cannot do that (as the message clearly states). An option would be making vector<K> an out argument, i.e. for instance:
template<typename T, typename Function, typename K>
void find( std::vector<T> &a, Function _predicate, std::vector <K> & v)
{
v.resize(a.size());
for( unsigned int i = 0; i < a.size(); i++ )
{
if( _predicate(a[i]) )
{
v[i] = K(a[i]);
}
}
}
and then
int main()
{
std::vector<int> b;
find( a, is_true<int>(), b );
}
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
C++ doesn't look at the return type when doing deducing types (or overload resolution for that matter), so you can't do what you want directly.
However, try defining find like this:
template<typename K, typename T, typename Function>
std::vector<K> find( std::vector<T> &a, Function _predicate )
{
}
and using it like this, specifying K explicitly:
std::vector<int> b = find<int>( a, is_true<int>() );
BTW - a better name for the function would be 'filter' or 'find_if' (IMNSHO)
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
modified on Wednesday, October 14, 2009 2:45 PM
|
|
|
|
|
Hi All,
I am having a dialog based application and i want to add a status bar to the dialog.
Code Sample:
I have written this in the OnInitDialog:
CStatusBar status;
status.CreateEx((AfxGetMainWnd),SBARS_SIZEGRIP,WS_CHILD|WS_VISIBLE|CBRS_TOP));
When the dialog lunches there is no status bar!!!
Can anyone tell me what i am doing wrong!!!
Thanks,
hari
|
|
|
|
|
Hari_16 wrote: Can anyone tell me what i am doing wrong!!!
Well, first of all you've created the CStatusBar object on the stack so it will be destroyed when OnInitDialog returns.
You should have a look at this nice article[^] written by Nish. It will show you exactly how to do it.
"It's supposed to be hard, otherwise anybody could do it!" - selfquote "High speed never compensates for wrong direction!" - unknown
|
|
|
|
|
Hari_16 wrote: status.CreateEx((AfxGetMainWnd),SBARS_SIZEGRIP,WS_CHILD|WS_VISIBLE|CBRS_TOP));
This does not even compile. Read #5 here.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
status.CreateEx((AfxGetMainWnd),SBARS_SIZEGRIP,WS_CHILD|WS_VISIBLE|CBRS_TOP);
I think you are referring to one extra parenthesis at the end right???
Sorry for that typo!!!
|
|
|
|
|
Hari_16 wrote: I think you are referring to one extra parenthesis at the end right???
That was one of the problems.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
I know basic numbers conversion..but what about this number -16.735.. how to convert this real to binary?
first 8 bits if i am right are 0001000 than how continue conversion for 0.735??
Can i use c++ as help?
|
|
|
|
|
You need to do a bit or research.
How you convert it depends on what you want to do with the end result.
You can have fixed point binary fractions... So, first bunch of bits are the whole number, last bunch are (eg 8 bits) are 256ths. This is quite common in motor controllers, as it makes their fractions into slightly hard integers.
Or you can have a moving "binary" point, so the fraction is represented as: 1.xxxxx * 2^yyyy.
The 1. is not needed to be stored, as it always exists. How many bits you put to xxx's and how many to yyy's is variable. These are called mantissa and exponent , so have fun googling!
Try this:
float d = 1;
BYTE *by = (BYTE*)(&d);
d = 2;
d = 1.1;
d = 1.00001;
Now look at the memory d is stored in (using your debugger) and see how it changes when you put these different numbers in.
Short answer to your question: However you like!
Iain.
I have now moved to Sweden for love (awwww).
If you're in Scandinavia and want an MVP on the payroll (or happy with a remote worker), or need contract work done, give me a job! http://cv.imcsoft.co.uk/[ ^]
|
|
|
|
|