|
thanks Greg that`s very descriptive
|
|
|
|
|
you are a tax calculator in company, and you should calculate the tax based on staff’s salary as follows:
-the salary is less than 600, the tax is 0.
-the salary is greater than 600 and less than 800, the tax is 10% of the salary.
-the salary is greater than 800 and less than 1000, the tax is 13% of the salary.
-the salary is greater than 1000 and less than 1500, the tax is 18% of the salary.
-the salary is greater than 1500, tax is 20% of the salary.
Write a program in C++ to ask the user to enter the salary then calculate the tax using:
If-Only structure, If-Else structure, Switch-Case structure.
|
|
|
|
|
So do it! Write that program! It won't write itself ...
|
|
|
|
|
It looks like a good start to develop a working program!
|
|
|
|
|
Hi there!
I have started this Tax software program for you:
#include <iostream>
using namespace std;
int main()
{
cout<< "Tax software developed by https://iq.direct" << endl;
cout<< "Enter Salary:";
double s = 0, t = 0;
cin >> s;
cout<<"you entered: " << s << endl;
if (s < 600)
{
t = 0;
}
if (s >= 600 && s < 800 )
{
t = s * 0.1;
}
if (s >= 800 && s < 1000 )
{
t = s * 0.13;
}
cout<< "The tax will be :" << t;
return 0;
}
|
|
|
|
|
Hi
I have done this many times streamin text, this time however the text just doesn't appear I do a SW_SHOW on both the rich edit and the dialog
So I decided just to do a simple test copy "this is a test\r\n": info the pBuff *pcb = 16 for the next call I have *pcb = 0 to tell rich edit no more
The Dialog box and rich edit appear with no test however When I press any character on my keyboard e.g type D The text This is a text magically appears in front of D
Any ideas are appreciated
|
|
|
|
|
No idea until we will see your actual code.
|
|
|
|
|
I’ll post it about 7 am thank you
|
|
|
|
|
i'LL POST THREE pieces 1) the oninitdialog of the parent Cdialog 2) the Steamin 3) resource file Tell me if you want to see more thanks you
BOOL CStorge::OnInitDialog()
{
int numolines;
storagepointer = new CRichEditCtrl;
CDialog::OnInitDialog();
CHARFORMAT cf2 = { 0 };
STREAMIN((WPARAM)storage_ptr, (LPARAM)storagelen);
storagepointer->SetSel(0, -1);
cf2.cbSize = sizeof(cf2);
cf2.dwMask = CFM_FACE | CFM_PROTECTED;
cf2.dwEffects = CFE_PROTECTED;
memcpy(&cf2.szFaceName[0], "Courier New",12);
storagepointer->SetSelectionCharFormat(cf2);
storagepointer->SetSel(0, 0);
storagepointer->ShowWindow(SW_SHOW);
ShowWindow(SW_SHOW);
return TRUE;
}
call to setup STREAMIN
LRESULT CStorge::STREAMIN(WPARAM mywparam, LPARAM mylparam)
{
char *sendptr;
sendptr = (char*)mywparam + 4;
streaminparm parms;
parms.storpointer = (char *)sendptr;
parms.storlen = (int)mylparam;
EDITSTREAM STORAGESTREAM;
STORAGESTREAM.pfnCallback = storagestreamin;
STORAGESTREAM.dwCookie = mywparam;
STORAGESTREAM.dwCookie = (DWORD_PTR) &parms;
long numstream = storagepointer->StreamIn(SF_TEXT,STORAGESTREAM);
return TRUE;
}
the Streamin function
DWORD storagestreamin(DWORD_PTR dwCookie,
LPBYTE pbBuff,
LONG cb,
LONG* pcb)
{
static BOOL flag = 0;
if (flag == 0)
flag = 1;
else
{
*pcb = 0;
flag = 0;
return 0;
}
int i;
streaminparm* inparms = (streaminparm *)dwCookie;
void* holdptr = inparms->storpointer;
char* holdptr1 = (char*)pbBuff;
int totalen = inparms->storlen;
memcpy((char *)pbBuff, "This is a test\r\n",16);
*pcb = 16;
return 0;
for (i = 0; i < totalen; i += storageline)
{
memcpy(holdptr1, holdptr, storageline);
holdptr = (char*)holdptr + storageline;
holdptr1 = (char*)holdptr1 + storageline;
*holdptr1 = '\r';
holdptr1 = (char*)holdptr1 + 1;
*holdptr1 = '\n';
*pcb += 74;
}
return 0;
}
the Dataexchange member to create the rich edit HWND
void CStorge::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Text(pDX, IDC_ASID, asidstr);
DDX_Text(pDX, IDC_SP, spstr);
DDX_Text(pDX, IDC_TCB, tcbstr);
DDX_Text(pDX, IDC_FP, fpstr);
DDX_Control(pDX, IDC_EDIT2, (CWnd&) *storagepointer);
}
The resource indentfier of the cdialog with richedit
IDD_DIALOG10 DIALOGEX 0, 0, 769, 429
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
CAPTION "Storage View / Change"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
CTEXT "",IDC_TCB,45,30,47,8
CTEXT "OwnIng TCB",IDC_STATIC,41,13,58,8
CTEXT "",IDC_SP,164,28,43,8
CTEXT "Storage SubPool",IDC_STATIC,162,12,55,8
CTEXT "",IDC_ASID,265,26,32,8
CTEXT "Asid",IDC_STATIC,269,9,31,8
CTEXT "",IDC_FP,399,31,19,8
CTEXT "Fetch Protect Key",IDC_STATIC,392,15,63,8
CONTROL "",IDC_CUSTOM5,"PieCOntrol",WS_TABSTOP,617,99,109,109
COMBOBOX IDC_COMBO1,491,236,48,30,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP
CONTROL "",IDC_EDIT2,"RichEdit20A",ES_MULTILINE | WS_BORDER | WS_TABSTOP | WS_VISIBLE, 45,106,494,314 THE RICH EDIT
EDITTEXT IDC_EDIT1,45,110,494,314,ES_AUTOHSCROLL
COMBOBOX IDC_COMBO2,637,244,67,16,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LISTBOX IDC_LIST2,641,310,68,11,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
END
|
|
|
|
|
ForNow wrote: CDialog::OnInitDialog();
CHARFORMAT cf2 = { 0 };
STREAMIN((WPARAM)<b>storage_ptr</b>, (LPARAM)storagelen);</blockquote>
What is storage_ptr? Its type and value?
|
|
|
|
|
you think thats the problem I should make it a CRicheditrl *
BTW I did Call AfxRichEditInit and I did observer that storage__ptr had a Hwnd after the DoDataExange
void* storage_ptr;
|
|
|
|
|
ForNow wrote: C++Copy Code
void* storage_ptr;
You mean you pass an uninitialized pointer into your STREAMIN method?
BTW, did you debug your code (and, particularly, this STREAMIN method)?
|
|
|
|
|
The Ponter I pass to the streamin is 1) the data ptr and 2) the length of it I did debug it and it passed the value back that I wanted in pBuff and *pcb
storage_ptr should be of type CrRicheditCtrl * instead of void * but it does a value and After the Call Cdialog::OnInitDialog it Called my DoDataExchage and had a valid HWND
In in fact if you look at that small test when I pass "this is a test\r\n" back to pBuff and *pcb = 16 that doesn't display
When I type any chanarcter in the rich edit for example a D this is a test follow it for example looks like this DThis is a test
thanks
|
|
|
|
|
I could not test your "code" because there is a lot of problems with:
undeclared identifier
undeclared identifier
cannot convert from 'DWORD (__cdecl *)(DWORD_PTR,LPBYTE,LONG,LONG *)' to 'EDITSTREAMCALLBACK'
...
and so on.
Could you post a code (sample project) that would reproduce your problem?
|
|
|
|
|
is there anywhere I could zip it if not the total project is 6 .cpp files with 6 headers and resource file
thanks you are really nice
|
|
|
|
|
Sorry! I don't know.
But if you won't find a way to do that then you could repost your question in Visual C++ Programming
Or just email it to me: <my surname=""> at <onlinehome.de>
|
|
|
|
|
Ill take the latter thanks but this mini project is a tcp/ip application that gets data into the RichEdit from a z z/os machine
let me see if I can somehow segregate it The rich edit portion that is causing the problems and then get a clean build and i'll send it over thanks you are very nice
|
|
|
|
|
You have to simplify your project code until it will reproduce the problem. Just make a very simple project with your RichEdit without any TCP/IP and other IPCs.
Test it. If you won't find the reason of the trouble while debugging this test project then post it to me or/and to the community.
|
|
|
|
|
|
Victor
commented out IDC_EDIT1 and the stream out worked
you are very nice guy for your offer
IDD_DIALOG10 DIALOGEX 0, 0, 769, 429
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Storage View / Change"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
CTEXT "",IDC_TCB,45,30,47,8
CTEXT "OwnIng TCB",IDC_STATIC,41,13,58,8
CTEXT "",IDC_SP,164,28,43,8
CTEXT "Storage SubPool",IDC_STATIC,162,12,55,8
CTEXT "",IDC_ASID,265,26,32,8
CTEXT "Asid",IDC_STATIC,269,9,31,8
CTEXT "",IDC_FP,399,31,19,8
CTEXT "Fetch Protect Key",IDC_STATIC,392,15,63,8
CONTROL "",IDC_CUSTOM5,"PieCOntrol",WS_TABSTOP,617,99,109,109
COMBOBOX IDC_COMBO1,491,236,48,30,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP
CONTROL "",IDC_EDIT2,"RichEdit20A",ES_MULTILINE | WS_BORDER | WS_TABSTOP,45,106,494,314
COMBOBOX IDC_COMBO2,637,244,67,16,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LISTBOX IDC_LIST2,641,310,68,11,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
END
|
|
|
|
|
Does it mean that your text was under the IDC_EDIT1 control? Or what???
|
|
|
|
|
No just commented out that control maybe it overlaid IDC_EDIT
Thank you
|
|
|
|
|
ForNow wrote: maybe it overlaid IDC_EDIT
Yes, it is what I meant in my previous post. 
|
|
|
|
|
For the class parameter the documentation says a redefined name (not sure what that means) the reason I am asking I am using a control for which I have a specific WNDCLASS which I registered however the CDialog::Create fails with that control statement in the resource definition
Thanks
|
|
|
|
|
We need to see the code and a bit more detail. If the control is not known at build time then the resource compiler may well have a problem.
|
|
|
|
|