|
konadora
Singapore66063 Posts
On June 29 2009 02:35 Scorch wrote: Looks like you are trying to teach yourself programming from scratch without any guidance. That's hard. You should look for a C++ tutorial which explains the basics in an understandable and structured manner. Posing random questions on a very specific problem without quite understanding the answers won't help you much. Especially since those who give advice often look at the problem from a higher level that you don't even need yet. For example, I've seen people talk about compiler settings here, which isn't what you want to know at all and will only confuse you. You won't make it far without knowing basic concepts like control structures, data types, return values etc. So you should try and learn those basics and then come back if any questions remain. Also, it's far easier for a beginner to modify and extend existing code than to write it yourself. I understand that myself, but I haven't really been taught all the reasoning and concepts, and for my test, I'll have to write a code myself.
Lol I've managed to push my test to wednesday, woot
|
On June 29 2009 08:19 virLudens wrote:Show nested quote +On June 29 2009 05:53 fusionsdf wrote:On June 29 2009 01:41 konadora wrote: Also, if you specify 'C' but the user types in 'c' instead (small C), then does it matter? I recall my teacher saying that caps matter a lot in programming. since nobody answered this: yes, case matter Variable is different from VARIABLE and vArIaBlE. Generally constants are in all CAPS, normal variables are lowercase with either underscores between words like_this_variable or camel case likeThisVariable. Struct and Class names tend to have the first letter capitalized. Its really important to stay consistent throughout your code. camel notation ftw. there's also another one that has the type in the variable name, but it's fallen out of favour.
Hungarian Notation. I've always disliked it
|
On June 29 2009 13:08 fusionsdf wrote:Show nested quote +On June 29 2009 08:19 virLudens wrote:On June 29 2009 05:53 fusionsdf wrote:On June 29 2009 01:41 konadora wrote: Also, if you specify 'C' but the user types in 'c' instead (small C), then does it matter? I recall my teacher saying that caps matter a lot in programming. since nobody answered this: yes, case matter Variable is different from VARIABLE and vArIaBlE. Generally constants are in all CAPS, normal variables are lowercase with either underscores between words like_this_variable or camel case likeThisVariable. Struct and Class names tend to have the first letter capitalized. Its really important to stay consistent throughout your code. camel notation ftw. there's also another one that has the type in the variable name, but it's fallen out of favour. Hungarian Notation. I've always disliked it
Oh cool, I didn't even know it was called the Camel notation. I started with Hungarian Notation, and it's ultra lame
|
Bill307
Canada9103 Posts
I feel like giving a lesson on data type basics.
8 bits = 1 byte, by the way. If you don't already know this, then repeat this to yourself 10 times, because I will interchange between bits and bytes constantly. E.g. if I say "32 bits" and then "4 bytes" then you need to recognize instantly that I'm talking about the same amount.
When you declare a variable, your compiler will set aside some region in memory (the computer's RAM) for that variable. Whenever you use that variable, you are accessing or modifying that region.
byte and char are both 8-bit (1-byte) variables: they occupy 8 bits in memory. Although they have different uses, in memory they look the same. E.g. the byte 65 and the char 'A' look exactly the same in memory: 65.
int and long are 16-bit and 32-bit variables, respectively. They store #s as integers. They can store both positive and negative integers. In memory, the int 65 might look like this: 0 65. Notice it occupies 2 bytes. Similarly, the long 65 might look like this: 0 0 0 65. If the number is too big to be stored in a single byte, then it spills over into the next byte, allowing you to store larger numbers.
Think of it like base-10 digits. A single digit can store only the numbers 0 to 9. Anything higher than 9 and you need 2 or more digits. Same thing with bytes, except it's base-256. You can store 0-255 in a single byte: anything higher than 255 and you need 2 or more bytes.
Base-10 example, counting from 8 to 12: 0 8 0 9 1 0 1 1 1 2
Base-256 (bytes) example, counting from 254 to 258: 0 254 0 255 1 0 1 1 1 2
If you can't figure out the pattern here, then look up number systems with different bases.
int and long can store negative numbers, too, but that's a lesson for another day. (It's actually pretty simple, if you understand binary and if it's explained correctly.)
If you're wondering what happens when you try to store a number that's too large in a byte, int, or long, then try it for yourself and see what happens (don't worry, it won't break anything).
float and double are 32-bit and 64-bit variables, respectively. These store numbers in floating point format, which is basically scientific notation. At this point in time, you might as well use doubles. But if you were to make, say, a game, where speed can be important, then you would use only floats in your program.
Pointers, when you start to use them (and die by them), take up 32 bits in memory. They're used to point to some location in memory, like where a variable is stored. Don't even try to learn how to use these until you understand a lot of simpler concepts first.
Structs and Classes take up varying amounts of memory, depending on what data they contain.
Hopefully now you understand variables a bit better.
|
|
On June 29 2009 16:44 Bill307 wrote: int and long are 16-bit and 32-bit variables, respectively.
The size of int is actually compiler specific; on 32+ bit machines, int is usually 32 bit, which is what I think applies to konadora.
|
Germany2896 Posts
Bill your sizes are usually true on 16 Bit systems. On 32 Bit systems int is usually 32 bit. And the C++ standard promises even less. On 32 Bit VS afaik byte/char=8bit, short=16bit, int/long=32 bit, long long=64 Bit. And of course each of them is available as signed and unsigned.
|
konadora
Singapore66063 Posts
Does it matter if I'm using a 64-bit edition of Vista?
Thanks a lot Bill, understand much clearer now, teacher hardly explained >__<
Thanks Smix
|
Bill307
Canada9103 Posts
Oh, thanks for the correction, guys.
So I guess the corrected version is:
short = 16-bit integer (-32768 to +32767) long = 32-bit integer (approx. -2 billion to +2 billion) int = 16- or 32-bit integer
Bah.
Well, I guess it's safest to assume int is only 16 bits, and use "long" if you need more than that.
|
Germany2896 Posts
From the Stroustrup:
Sizes of C++ objects are expressed in terms of multiples of the size of a char , so by definition the size of a char is 1 . The size of an object or type can be obtained using the sizeof operator. This is what is guaranteed about sizes of fundamental types: 1 = sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) 1 <= sizeof(bool) <= sizeof(long) sizeof(char) <= sizeof(wchar_t) <= sizeof(long) sizeof(float) <= sizeof(double) <= sizeof(long double) sizeof(N) = sizeof(signed N) = sizeof(unsigned N) where N can be char , shortint , int , or longint . In addition, it is guaranteed that a char has at least 8 bits, a short at least 16 bits, and a long at least 32 bits. A char can hold a character of the machine’s character set. Usual are: char=8bit short=16bit int=16 or 32 bit long=32 or 64 bit long long=64 bit
There are also some typedefs with fixed size, but I forgot their names. If I recall correctly there are also some size requirenments for pointers in relation to ints, but I forgot that too. On Win32 it is guaranteed that int,long are 32bit.
|
konadora
Singapore66063 Posts
Bump
I've been doing something called the BMI test, here's my program:
#include <iostream> using namespace std;
int main() { double w, h; double a; cout << "Please enter your weight (in KG) and height (in meters)." << endl; cin >> w >> h; a = (w/(h*h)); if (w > 0, h > 0) cout << "Your Body Mass Index is " << a << endl; else cout << "Invalid input." << endl;
if (0 < a < 20, w > 0, h > 0) cout << "You have a low BMI." << endl; else if (20 < a < 25, w > 0, h > 0) cout << "You are within the healthy BMI range. Congratulations!" << endl; else cout << "You have exceeded the healthy BMI range." << endl; return 0; }
But the thing is, whenever I put in invalid numbers (-9001 or something), "You have a low BMI." STILL shows. What's the problem?
Will check this when I wake up in the morning, thanks in advance for any help! (going off to sleep;; )
|
#include <iostream> using namespace std;
void main() { double w, h; double a; cout << "Please enter your weight (in KG) and height (in meters)." << endl; cin >> w >> h; a = (w/(h*h)); if (w > 0, h > 0) {cout << "Your Body Mass Index is " << a << endl; if (0 < a < 20, w > 0, h > 0) cout << "You have a low BMI." << endl; else if (20 < a < 25, w > 0, h > 0) cout << "You are within the healthy BMI range. Congratulations!" << endl; else cout << "You have exceeded the healthy BMI range." << endl; } else cout << "Invalid input." << endl; }
|
my god, i was good at math in highschool, so i thought i would be good at programming
boy was i wrong
|
Kau
Canada3500 Posts
Don't you need to use && or || for if statements?
|
On July 10 2009 00:59 konadora wrote:Bump I've been doing something called the BMI test, here's my program: Show nested quote +#include <iostream> using namespace std;
int main() { double w, h; double a; cout << "Please enter your weight (in KG) and height (in meters)." << endl; cin >> w >> h; a = (w/(h*h)); if (w > 0, h > 0) cout << "Your Body Mass Index is " << a << endl; else cout << "Invalid input." << endl;
if (0 < a < 20, w > 0, h > 0) cout << "You have a low BMI." << endl; else if (20 < a < 25, w > 0, h > 0) cout << "You are within the healthy BMI range. Congratulations!" << endl; else cout << "You have exceeded the healthy BMI range." << endl; return 0; } But the thing is, whenever I put in invalid numbers (-9001 or something), "You have a low BMI." STILL shows. What's the problem? Will check this when I wake up in the morning, thanks in advance for any help! (going off to sleep;; )
This doesn't give you compilation errors?!
if (0 < a < 20, w > 0, h > 0)
You probably meant || or && right...?
|
On July 10 2009 01:36 Kau wrote: Don't you need to use && or || for if statements? yes, yes you do
|
You need to figure out the inequalities... you have 0 < a < 20 and 20 < a < 25, i.e. you don't cover the case where a == 20.
#include <iostream> using namespace std;
int main() { double w, h; double a; cout << "Please enter your weight (in KG) and height (in meters)." << endl; cin >> w >> h; // assuming you can't weight 0 kg and have 0 cm height ( h = 0 actually give you division by zero exception if( w <= 0 || h <= 0 ) { cout << "Invalid input." << endl; return 0; } else { a = (w/(h*h)); cout << "Your Body Mass Index is " << a << endl; }
if ( a > 0 && a < 20 ) cout << "You have a low BMI." << endl; else if ( a > 20 && a < 25 ) cout << "You are within the healthy BMI range. Congratulations!" << endl; else cout << "You have exceeded the healthy BMI range." << endl;
return 0; }
|
On July 10 2009 01:17 gokai wrote: my god, i was good at math in highschool, so i thought i would be good at programming
boy was i wrong lol same here, i crawled out of my c programming and mips r2000 class.. phew, never have to program again (hopefully)
good luck kona! i hate programming with a passion so looking at this stuff makes me gag lol.
|
konadora
Singapore66063 Posts
|
On July 10 2009 07:37 konadora wrote: What does || do??
or...
|
|
|
|