|
|
|
I need help with some homework. I had to write a program that would convert a number entered by the user into another base between 2-10. For example 1014 base 10 to base 8 = 1766. My program seems to convert some bases correctly both other it gives me the wrong answer and i cant figure it out. Also i set a while loop that makes the user enter a base number between 2-10, if they dont it keeps asking them until they do. What happens is if you still enter a number between 2-10 say 8 it will still ask you to enter a number between 2-8 and if you enter 8 again it will work.
thanks for your help.
#include <iostream>
#include <cmath>
using namespace std;
int main ()
{
// Variables
int num, base, p=2, d, m;
// User input
cout << "Please enter your number: ";
cin >> num;
// Number less than Zero
while (num <= 0)
{
cout << "Please enter a number greater than zero: ";
cin >> num;
}
cout << "Please enter the base number you would like to convert your number to: ";
cin >> base;
// Base between 2-10
while (base != 2, base != 3, base != 4, base != 5, base != 6, base != 7, base != 8, base != 9, base != 10)
{
cout << "Please enter a base number between 2-10: ";
cin >> base;
m=(int)pow((double)base,(double)p);
// Calculations
if (m > num)
{
p--;
m=(int)pow((double)base,(double)p);
}
else
{
p++;
m=(int)pow((double)base,(double)p);
}
while (p >= 0)
{
d=num/m;
cout << d;
num=num%m;
m=m/base;
p--;
}
cout << endl;
return 0;
}
}
|
|
|
|
|
chipper3344 wrote: while (base != 2, base != 3, base != 4, base != 5, base != 6, base != 7, base != 8, base != 9, base != 10)
I don't know what you are trying to do there but it is wrong. You should separate the different conditions by an AND: while (base!=2 && base!=3 && ...
By the way, something a little bit cleaner would be to check if your number is outside the boundaries (no check every possible case):
while (base<2 || base base>10) (it will continue looping if base is strictly less than 2 OR strictly bigger than 10). But I suppose you want to do the opposite ?
For the rest, I didn't look too much in details.
|
|
|
|
|
While using Visual Studio 2005 to built a MFC C++ application, when I create a Control Variable on a dialog it takes about 5 minutes.
However if I disconnect from our network it works as normal; i.e no long wait.
I have reset all reference to network drives to local drives, does anyone know what is causing this.
It looks like a network timeout, but I dont know the item that its looking for on the network whn creating a ctontrol variable.
Many thanks,
Andy.
|
|
|
|
|
Do your VS2005 default #include or lib paths point to network drives?
/ravi
|
|
|
|
|
No, I don't think so.
If I move the project onto a PC which is not connected to the network as is fine.
I have opted for everything on C:\.
Does that help.
|
|
|
|
|
What about a network drive in your system PATH?
|
|
|
|
|
Just did a check and NO, no ddrives other than C:
Andy.
|
|
|
|
|
I'm learning c++ and using visual studio c++ 2005 express edition. I had written a lot of program's code and try to run, and when it should be started I got an error : An unhandled exception of type 'System.NullReferenceException' occurred in System.Windows.Forms.dll Additional information: Object reference not set to an instance of an object.
What must I do, that this error disapear ???
|
|
|
|
|
You must be new if you're a stranger to the NullReferenceException!
For .NET-related question there's at least two other message boards here that will be more
helpful:
(Managed) C++/CLI[^]
.NET Framework[^]
|
|
|
|
|
I looked (Managed) C++/CLI and .NET Framework, I used search and found nothing about NullReferenceException! Do you know something about it??
|
|
|
|
|
I meant ask your question on one of those message boards - C++/CLI is probably the most
appropriate since this isn't a framework question
The NullReferenceException class' name says it all - it's the exception thrown when you try to
dereference a null reference.
NullReferenceException Class[^]
It should be clear in the debugger which line of your code is using a reference that
hasn't been initialized/allocated yet. You may have to view the call stack to find the line in
your code (when the exception occurs).
|
|
|
|
|
debugger shows, taht tihs error comes at this code :
this->b_em.pct->Load("b_em.jpg");<br />
this->b_em.pct->Location = System::Drawing::Point(13, 64);<br />
this->b_em.pct->Size = System::Drawing::Size(5, 5);<br />
this->b_em.pct->TabIndex = 3;<br />
this->b_em.pct->TabStop = false;<br />
this->b_em.pct->Visible = false;
so where is probelm ?
|
|
|
|
|
Unfortunately I have never used forms with .NET. There's many helpful people on the .NET boards
that have though
I have no idea what class your "this->b_em.pct" object is so, based on what I see, the only
guess I can make is the Load() method call is failing - is the b_em.jpg file in the app exe folder
or in the system path?
Mark
|
|
|
|
|
b_em is from structure
ref struct tank {<br />
int step_x, step_y; <br />
System::Windows::Forms::PictureBox^ pct;<br />
};
b_em.jpg is at app exe folder
that code is at void InitializeComponent(void) function
|
|
|
|
|
Dear thesad
if you ask on the correct forum(Managed C++/CLI) you can find your answer early
|
|
|
|
|
Ok. I'll take another wild guess - pct is NULL.
Maybe try
//System::Windows::Forms::PictureBox^ pct = gcnew System::Windows::Forms::PictureBox();
b_em.pct = gcnew System::Windows::Forms::PictureBox();
b_em.pct->Load(...
You can save yourself lots of typing by omitting the implied "this->"
|
|
|
|
|
many thanks Mark, it really help
|
|
|
|
|
You are welcome
Really, consider the C++/CLI board for future CLI-related questions. I get so confused trying to
think in .NET when I'm on the C++ board.
Cheers!
Mark "flailing in the dark" Salsbery
|
|
|
|
|
Your first step should be to set a breakpoint with the debugger ( F9 ) and examine your code to see which line blows up, then check to see what variable is null, causing the error. Everything else, is flailing in the dark.
Christian Graus - Microsoft MVP - C++
Metal Musings - Rex and my new metal blog
|
|
|
|
|
Hy, since most of you have probably been programming in MFC for a very long time, I was wondering if you could give me some tips on how to improve my programming skills in C++. Thanks
Alessandra
|
|
|
|
|
first tip :
MFC != C++
second tip :
initialize all variables.
third tip :
check that all pointers are valid before using them.
...
|
|
|
|
|
Maximilien wrote: check that all pointers are valid before using them.
I'm of the opinion that that is a bad idea. For example, consider code that follows the following pattern throughout:
if (p)
{
p->SomeFunction();
}
Many people (most people, in fact) get into the habit of doing this even when it is a bug for p to be NULL. Assuming p should never be NULL the extra check turns a crash at the point of the problem into some obscure problem later down the track as the function SomeFunction was never called. I’ve seen this many, many times. A better approach is as follows:
assert(p);
p->SomeFunction();
In a debug build we assert and in a release build you get a crash dump (because naturally everyone collects crash dumps from MS…) which points you at the problem.
As for IsBadReadPointer and friends, see here[^].
Steve
|
|
|
|
|
I did not offer anything else than "check the pointers" either you use asserts, if or some exceptions, you need to do it anyway.
Stephen Hewitt wrote: As for IsBadReadPointer and friends, see here[^].
I never use or used those functions.
|
|
|
|