|
angel.monkey wrote: cin >> "planet"<< endl;
panet must be an array of type char.
angel.monkey wrote: {
int main();
int main()
{
...
}
angel.monkey wrote: planet == "Mercury 1"
you can not compare strings in this way
angel.monkey wrote: switch(choice)
case
switch(...)
{
and thousands more ...
Thank you masters!
|
|
|
|
|
Thanks but I still do not understand. I am very lost when it comes to things like this. Thank you anyway and have a wonderful night!
|
|
|
|
|
Jusef has already coverted many points in your software. I'll point to just one:
{
int main();
I can easily imagine making this sort of silly mistake when writing the code - I've made soft daft ones in the last few days. But it really should not need external assistance to solve this problem.
OK, two problems:
switch(choice)
case 1:
If your teacher is in any way competent, you will have been shown working programs you can look to see how to start a console program - or to define any function at all. Similarly, if you haven't seen a switch statement before you probably don't need to use it to solve your homework.
If you've done past assignments, surely you must have handed them in for assessment. You do say you got lost - but didn't your teacher show you the way? Or couldn't you ask one of your fellow students to help you?
The compiler itself will help you, as long as your program makes a small amount of sense. It can produce very helpful error messages. At the moment it probably just says: ERROR1: HUH?
I think most people could go through your program and give you a working version but:
a/ This would not help you learn - only your efforts and one to one time with your teacher or a student getting better marks will. Bribe them with a beer for their time! (Or some other not-really-a-bribe-but-shows-thanks thing)
b/ If you've been that badly lost that you can't even start a function in your previous assignments, and you suddenly produced a working program, I bet your teacger would want to know why. Your teacher can use the internet too... And I bet you found codeproject somewhere...
c/ If you were lucky, and it helped you pass without fully understanding what you were doing, I'd feel sorry for any future employer relying on your programming skills. I know you're doing a math degree - and I also know a lot of modern math relies on software. This is a skill you need. You don't need to be expert - you do need to be competent.
4/ Buy a basic book! Go to the library and borrow one... Visit a friend and sneak a peek at theirs!
5/ If your teacher is so bad that all of the class is at this level by the end of the course, and they're unapproachable to help, then speak to their boss.
6/ Lastly, and you won't like this... If you've spent a semester going to class, and you really need help with this program, and the teacher has been slightly OK, then maybe you *should* fail this class. When you join the real world, people will expect you to deliver, or in the end you starve.
I can see three possibilities:
a) You can redo this class another time, but this time you'll pay more attention to the examples and code shown in the early days of the class, so you will get great marks in your class and move on with some humility
b) You doing pretty well in your other classes. You can't resit this class, but it's only a minor part of your overall degree. Move on, and work extra hard in other areas of your study. Don't mention programming skills on your CV.
c) You are doing badly in your other classes, and failing this will be enough to tip your grades over the edge. This will not come as a surprise to you. In which case, why on earth are you leaving it till this late in your course to ask for help, and why not someone closer?
I'm sorry if this ended up a bit rant-y, but this forum isn't really the place to get your answers - you need someone a lot more local and interactive - someone who can use pend and paper and refer to the material you should have already learnt.
I wish you success though!
Iain.
ps, If it makes you feel better, I still remember thinking that:
switch (Planet)
{
case "Earth":
planetnum = 3;
break;
should have worked! I've long since worked out why not, but we all started once!
Modified: Added harsh point 6.
In the process of moving to Sweden for love (awwww).
If you're in Scandinavia and want an MVP on the payroll (or happy with a remote worker), give me a job!
|
|
|
|
|
Since you say you've been trying it for days, I'll give you a solution. But try and understand where you've gone wrong.
#include <iostream>
using namespace std;
#define PLANET_MERCURY 1
#define PLANET_VENUS 2
int main (void)
{
float fMultiplier = 1, fWeight = 1;
unsigned int nPlanet = 0;
cout<<"Please enter your weight"<<endl;
cin>>fWeight;
cout<<"Please choose a planet from the following (enter corresponding number)"<<endl;
cout<<"1. Mercury"<<endl<<"2. Venus"<<endl;
cin>>nPlanet;
switch(nPlanet)
{
case PLANET_MERCURY: fMultiplier = 0.4155;
cout<<"Your weight in Mercury is: ";
cout<<fWeight*fMultiplier<<endl;
break;
case PLANET_VENUS: fMultiplier = 0.8975;
cout<<"You weight in Venus is: ";
cout<<fWeight*fMultiplier<<endl;
break;
default: cout<<"Invalid choice!"<<endl;
break;
}
return 0;
}
Try to understand how the program works and then you can do it for the rest of the planets. You're still just beginning and you can very well read up a book. Master the fundamentals well and now. Or, you'll have trouble later.
Not the usage of >> with cin and << with cout . Note the switch cases enclosed in braces { } and can have a default case handler too.
It is a crappy thing, but it's life -^ Carlo Pallini
|
|
|
|
|
You're a gentler person than I am... See my reply[^] for a harsher take.
If it was one or two daft mistakes, I'd have joined your camp.
Happy weekend,
Iain.
In the process of moving to Sweden for love (awwww).
If you're in Scandinavia and want an MVP on the payroll (or happy with a remote worker), give me a job!
|
|
|
|
|
I actually was reading your reply when you've replied to me (when I was typing out my reply to the OP, your reply wasn't there). I would say you're right, but I see the OP is a school kid and has been trying this out for days. I'm not exactly a gentle person, but I'm rather in a good mood.
Happy weekend too!
PS: How is the process of relocation going? Found a job there yet?
It is a crappy thing, but it's life -^ Carlo Pallini
|
|
|
|
|
OP wrote: math ed degree
If it was a school project, I'd have been a lot gentler too. University isn't the big bad world - but it's getting closer...
Relocation is going smoothly - just two weeks left at my current work. I haven't found an actual job yet, but I do have a few mini-contracts to keep the wolf from the door. Just not having to go back and forth between countries will ease both our outgoing costs! I'll be a kept man, whose only duty is to greet his lady at the door with a cocktail, apron and nothing else...
Expect to see even more of me next month!
So, why the good mood?
Iain.
In the process of moving to Sweden for love (awwww).
If you're in Scandinavia and want an MVP on the payroll (or happy with a remote worker), give me a job!
|
|
|
|
|
Iain Clarke wrote: If it was a school project, I'd have been a lot gentler too. University isn't the big bad world - but it's getting closer...
Bah! I missed that one. I took that him for a school kid.
Iain Clarke wrote: I haven't found an actual job yet, but I do have a few mini-contracts ... I'll be a kept man, whose only duty is to greet his lady at the door with a cocktail, apron and nothing else...
My best wishes for finding a new job and for your love life.
Iain Clarke wrote: So, why the good mood?
The clients are impressed with our work, especially given that we are a very small team. We had been spending sleepless nights writing code and it is paying us back now.
It is a crappy thing, but it's life -^ Carlo Pallini
|
|
|
|
|
Thanks guys I really appreciate your comments. I am never going to use this class. I am not in a traditional classroom but online instead and other than Microsoft Office this is my only other computer class. I would not be here asking for help had I not been in and out of the hospital due to seizures this entire semester. Occassionally people make judgement on people that they truely have no clue about and remember that it is not our please to judge. WE are ALL here on barrowed time! It is just a requirement for becoming a math teacher not a computer programer. And speaking of harsh, TEACHING High School students Algebra will almost always be a much more rewarding carreer than what you do including the door and cocktail deal that you claim to be such a great life! I am a single mother due to domestic violence and a dead beat dad who owes us $52,000 in back child support I am only trying to better our lives because he also thouht that meeting me at the door with more than a cocktail was the high light of my day lol......so maybe being harsh is not the best way to be. What if it was your mom trying to graduate college before you graduate high school, because she knew that it was the only way to give you a better future? Just something to think about next time before you post a comment like the one you posted last night!!!
Thanks and have a very blessed day!
modified on Saturday, April 4, 2009 4:29 PM
|
|
|
|
|
I apologise if I was over-harsh. I know I wasn't in fluffy bunny land.
Given your personal circumstances (which do sound very dramatic!), then it is probably worth getting in touch with the Online University and seeing if there is anything they can do - maybe they could pretend this semester never happened, and you could resit the class.
I wish you every luck with your health and future success in teaching. It's a path I considered, but I'm aware of my deficiencies. Tolerating 15 year olds who didn't want to be there would be something I'd fail at. Probably get arrested for "Assault with projectile chalk"...
Iain.
In the process of moving to Sweden for love (awwww).
If you're in Scandinavia and want an MVP on the payroll (or happy with a remote worker), give me a job!
|
|
|
|
|
Rajesh, you realise you've just doomed her to fail if her lecturer comes along and finds this? Not to mention you're perpetuating the attitude that this forum is a place for students to come have their assignments done for them? I know it was hard to resist because it probably took you less than 2 minutes to write that slab of code, but you haven't taught her anything in the process! That's just basic C++ syntax which either A) a decent C++ resource, or B) her compiler could have taught her!
In future, please only give hints to people looking for help with their homework. Her main problem was trying to compare char arrays in a switch statement. You could have simply told her to look into enum's (and kindly linked her to an article about them). Always keep in mind that the more you "help" these people by giving them a slab of code they can copy and paste to make their grade, the more likely you will one day end up working with them, having to debug their terrible code.
modified on Saturday, April 4, 2009 11:08 PM
|
|
|
|
|
I agree with you. But I see the OP was struggling with more than a week and wasn't able to make anything out, so I gave a working solution and also asked to see how it works. I will refrain from providing complete solutions to such posts in the future though.
Thanks for your comments.
It is a crappy thing, but it's life -^ Carlo Pallini
|
|
|
|
|
Hi All
How can i get USB COnnected Drive information?Plz help me
|
|
|
|
|
Have look at my article: Detecting when drives are added or removed[^]. Hopefully it can help a bit!
Iain.
In the process of moving to Sweden for love (awwww).
If you're in Scandinavia and want an MVP on the payroll (or happy with a remote worker), give me a job!
|
|
|
|
|
Hi,
I have a process where the name of a function is in a file text. I Read this file and i whould like to call a function associated with a Execute=[] parameter.
Is it possible ?
|
|
|
|
|
Hi SNArruda,
This is possible if function you want to call is of dll.
You can use GetProcAddress [^] along with LoadLibrary[^]
regards,
Divyang Mithaiwala
Software Engineer
|
|
|
|
|
Divyang's answer is a good one - if the function you want to call is in a DLL.
There is no "execute" command like there is in BASIC. You'll have to roll your own.
int Fred ()
{
return 1;
}
int Wilma ()
{
return 10;
}
int HowHotIs(char *szName)
{
if (!lstrcmpi (szName, "fred"))
return Fred ();
if (!lstrcmpi (szName, "wilma"))
return Wilma ();
return -1;
}<pre>
and call with:
<pre>HowHotIs("Fred");
HowHotIs("Wilma");
HowHotIs(szTextFromFile);
That's a brute force approach. More elegantly, you could have a CString to function pointer map class, or take the approach of self-registering classes from this article: Enumerate your leaf classes[^].
But as you're asking your question, you may want to stick with the brute force approach to start with. But read the article - it's very good! And if you're happy with maps / function pointers - go wild. It's better and more flexible than the function I wrote above.
Iain.
ps: Other ways exist - I've just giving 3.
In the process of moving to Sweden for love (awwww).
If you're in Scandinavia and want an MVP on the payroll (or happy with a remote worker), give me a job!
|
|
|
|
|
Alright, I'm trying to wrap a server written in c for the most part in a class. From inside one of the methods I want to launch a thread to another method. My attempt looks something like this:
void WebServer::ListenServer(void)
{
unsigned threadID;
while(true)
{
int fromlen = sizeof (from);
messageSocket = accept (listenSocket, (struct sockaddr*)&from, &fromlen);
if (messageSocket != INVALID_SOCKET)
{
_beginthreadex(NULL, 1000, (void*)&WebServer::HandleRequest, NULL, 0, &threadID);
}
}
}
void WebServer::HandleRequest()
{
}
Can this even be done? I have tried multiple castings etc of the beginthreadex() function. What would be an alternative to this?
|
|
|
|
|
Hi, from the code you posted I can't be certain if WebServer::HandleRequest is a static function or not. But it must be a static function.
This is because the 3rd argument of _beginthreadex is a pointer to function, which must have exactly the same parameters and return type as the the function that is required.
In this case the function you supply must look like this:
unsigned __stdcall ThreadProc(void * param);
It MUST return an unsigned, and it MUST accept a void* as parameter, and it MUST NOT be a member function. You can still make it part of the class, but as a static function.
Also, never try to fool the compiler by casting the function pointer you pass as your callback - your program is going to try to execute this code, giving it the parameters it expects the function requires. So what if you cast a function that requires more parameters as one that requires less? It will get its arguments from uninitialized memory and will probably crash or cause memory corruption.
There is sufficient light for those who desire to see, and there is sufficient darkness for those of a contrary disposition.
Blaise Pascal
|
|
|
|
|
This article[^] should explain a) why you can't use a bare method pointer as a Win32 callback, and b) help you make an adaptor that will let you call the method you want.
It even mentions _beginthreadex !
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
|
|
|
|
|
OK, I have had my head in the sand.... I use VS 6 SP5 MFC. I maintain a legacy application which Vista has broken.
Currently I am using Codejocks Extreme toolkit Automatically linking with ToolkitPro1010vc60SD.lib
I have upgragrated to the latest, but not yet tried a build (too much other stuff going on).
My SDK libs are probably old. I understand the issues with UAC and MS's Stupid vituraliztion scheme unless you have a manifest entry telling them you know about UAC. I also understand their renaming the directory stuctures.
Years ago when they were pushing their com tecnology I bought in and split my program (500k+ lines of code) into several different EXEs which communicate with each other via COM.
Big mistake. Anyway, I won't rant. Back then they preached that you should write to the registry all the time (each time you started to make sure it hadn't gotten corrupted, so all my exe's have something like this in them)
//-----------------------------------------------------------------------------
//Check to make sure we have write permissions to the registry. If we don't, don't
//attempt to register. We won't have write permissions if we are running on
//Windows 200 or XP as a limited user.
LONG lResult = ::RegCreateKeyEx(HKEY_CLASSES_ROOT,sDocClass, 0, "", REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS, NULL,&hTestKey, NULL);
if ((ERROR_SUCCESS == lResult) && (hTestKey != NULL))
{
g_bLimitedUser = FALSE;
//-------------------------------------------------------------------------------------
// It's ok to call UpdateRegistry
m_server.UpdateRegistry(OAT_DISPATCH_OBJECT);
COleObjectFactory::UpdateRegistryAll();
//-------------------------------------------------------------------------------------
BOOL bResult = AfxOleRegisterTypeLib(m_hInstance, LIBID_NTUExplorer);
if (bResult == 0)
{
AfxMessageBox("AfxOleRegisterTypeLib Failed");
}
//-------------------------------------------------------------------------------------
if (RegisterComponents() == FALSE)
{
CString sCaption = BuildVerString2() + "Unrecoverable Error";
CString sError = "Unable to Register Components. Aborting Launch!!!";
SafeUserNotification(sError,sCaption);
if (g_pMainFrame)
g_pMainFrame->PrepareToClose();
return FALSE;
}
}
OK, so Vista comes along and
//Windows 200 or XP as a limited user.
LONG lResult = ::RegCreateKeyEx(HKEY_CLASSES_ROOT,sDocClass, 0, "", REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS, NULL,&hTestKey, NULL);
succeeds but
BOOL bResult = AfxOleRegisterTypeLib(m_hInstance, LIBID_NTUExplorer);
Fails. I hesitate to update the SDK because I am running VS 6 and things are very stable... Who knows what might crop up.
SO, as I see it, I have a couple of options...
Move all my registration to the install program as they now suggest (contratry to previous suggestions) add the manifest entry, dink with my directory structure and things will probably work, although VS 6 doesn't officially run on Vista (I have gotten it installed and it seems to run OK)
or
Bite the bullet, move to VS2008, regen my skeleton apps. Populate them with my code and Deal with the ansi compiler issues and hope for the best....
Any thoughts on what you would do? I have tried .net, 2003, 2005, and pitched them all in favor VS6. If you are a MFC developer there is little reason to move to those platforms... What about VS 2008?
|
|
|
|
|
Having many years of code successfully working and made in VC6, I still use it most days - and quite happily. Mind you, if I could still use Word 6 I would - lightweight, just what I need and not too much extra.
I am a little puzzled at your logic of NOT registering your COM objects in the registry as part of the setup process. That makes only the setup program need any sort of privilege - and you need a lot less privilege for the day to day running of your software.
So, all vista is doing is enforcing behaviour that should have been followed from the beginning.
Would it be a huge change to move the registration code to the setup and comment it out on your "real" programs?
Iain.
In the process of moving to Sweden for love (awwww).
If you're in Scandinavia and want an MVP on the payroll (or happy with a remote worker), give me a job!
|
|
|
|
|
I do register them in the install program.
MS also recommended at the time that you also register in InitInstance to make sure nothing in the registry had gotten corrupted....
Now not suprisingly they recommend the opposite.
I guess the real question is, given the issues with the compiler differences and the fact that I have a large code base, is it worth moving to VS2008, or patch the programs to run on vista and stick with VS6?
So which is better VS2008 or VS6.
Is it worth the move?
|
|
|
|
|
Not a simple problem you have.
I don't think you need to update the registry every time. If a user is stupid enough to delete your entries from the registry, then you'll get com errors and you'll have a chance to write a pithy and sarcastic message box.
AfxMessageBox (L"Please hit yourself. You deserve it. Really...");
The advantage of the way you've broken up your program is that you can slowly migrate - just one exe at a time, rather than all or nothing.
If you can tweak your current VS6 (which I use happily) codebase to work under Vista, then do new development work in later versions.
Parker M cCauley wrote: So which is better VS2008 or VS6?
Both!
Iain.
In the process of moving to Sweden for love (awwww).
If you're in Scandinavia and want an MVP on the payroll (or happy with a remote worker), give me a job!
|
|
|
|
|
I like the message box Idea.... LOL
Unfortuately, back then the theory was that some other program (like the operating system would be the culprit.
Back when I first started looking into it, I was able to find the original KB article that highly recommended you do this, and also the later KB article that says it's a bad idea.
My more recent searches on msdn don't turn up the first. Perhaps it has been removed.
I am interesting it your Both! comment....
Why both?
Do use visual assist with VS6?
|
|
|
|
|