# C++ small tutorial



## GSquadron (Jan 11, 2012)

I was reading a book and went through a problem of mine.
In November i tried to make a formula in math, but the number was way too huge and
i couldn't hope anymore in my skills in math. I just found the square power of it, 
but not the cube. So now i remember it all, and i was thinking...
What about this one: 2^2^2 ?
And made it even more interesting finding a new programming method like this:
pow(2, pow(2, 2));
from this:
pow(2, 2);
This means that you can call *same function inside the function*!
Well i didn't use it and didn't think of it till now...
So let's hope someone else will find a use of it and here is all the program:

```
#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    cout << pow(2, pow(2, 2));
    cin.get();
}
```


----------



## brandonwh64 (Jan 11, 2012)

ALEK you are going to be my hero! I am currently in a C++ class and I am struggling bad  Hope if you dont mind, I could ask you some questions soon?


*EDIT*

I tried to use your code and got an error, it would not compile


----------



## GSquadron (Jan 12, 2012)

Actually you are using the microsoft VC++ which is a different compiler from the gcc
In order to compile my program, you need to download codeblocks as an ide with its mingw
compiler:
http://sourceforge.net/projects/cod...10.05/Windows/codeblocks-10.05mingw-setup.exe

If you want to go advanced you can download only the mingw compiler and write the program on a notepad and save it as program.cpp, than open cmd, find the file path and than type in gcc program.cpp.
Here is the MinGW:
http://sourceforge.net/projects/mingw/files/MinGW/

Another way is to link the libraries with your visual studio, but that would take more thinking time to link cuz there are 2 libraries.
(and i don't know if this one works)

Last, but not least:
http://msdn.microsoft.com/en-us/library/dt5dakze(v=vs.71).aspx

This is for your compiler and i don't know the VC++, i cannot help you there!

EDIT: I remember reading from the book that instead of:
#include <iostream>
#include <cmath>

Some old compilers have it:
#include <iostream.h>
#include <math.h>

Maybe it is worth a try


----------



## brandonwh64 (Jan 12, 2012)

Ahhh ok, We have to use this in class


----------



## Kreij (Jan 12, 2012)

In VC++ the math function POW is overloaded to accept a double, float and long double.
By giving the POW function two integers the compiler cannot figure out what you want it to use.

Try this ...

```
cout << Pow((double)2, Pow((double)2, 2));
```

Given the overloads a standard ANSI C++ compiler must give this error. VC++ has attempted to adhere to ANSI standard C++ compiler as much as possible.

As a side note, you are not calling a function within a function. You are telling the compiler to call the Pow function and use it as input to another function (in this case also Pow). This is very common in programming.

You are really doing this ...

```
int a = Pow((double)2, 2);
cout << Pow((double)2, a);
```

The difference with placing the function inline as an input paramter is that the compiler is creating an unnamed variable at runtime instead of you explicitely creating one at design time.


----------



## brandonwh64 (Jan 12, 2012)

Nope I just copied and pasted his that he made. Im a novice with only 1 week of hands on C++

I just need the basics explained to me instead of what my teacher did and give me 2 chapters to read that I couldn't understand a damn thing LOL


----------



## Steevo (Jan 12, 2012)

by creating a unnamed parameter you may also find that the contents read from whatever junk leftover in that block of system ram will create issues.


----------



## brandonwh64 (Jan 12, 2012)

I still get errors when I use your code kreji


----------



## Kreij (Jan 12, 2012)

Feel free to start your own thread with C++ questions Brandon.

Okay, I didn't test in in the compiler and just spewed from memory. 
Back in a few minutes.


----------



## brandonwh64 (Jan 12, 2012)

Kreij said:


> Feel free to start your own thread with C++ questions Brandon.
> 
> Okay, I didn't test in in the compiler and just spewed from memory.
> Back in a few minutes.



Oh, I thought this was a C++ Tutorial thread? Im sorry kreji  Just trying to get a better understanding of this stuff and by watching the masters (You guys here at TPU) I may catch on.


----------



## Kreij (Jan 12, 2012)

Sorry Brandon, I did not mean to imply you could not ask question here, just that you could start your own thread if you want. 

VC++ is fussing still. Have to get back to you on that as I''m out of time tonight. 


Got it ... here you go ...

```
#include "stdafx.h"
#include "iostream"
#include "cmath"

using namespace System;

int main(array<System::String ^> ^args)
{
    using namespace std;
    cout << pow((double)2, pow((double)2, 2));
    return 0;
}
```

Sorry, I'm a little rusty at C++. DOH !!


----------



## GSquadron (Jan 12, 2012)

If you make it at school, than the best tutorial is the book in school
The teacher wont give anything outside the book
We made C++ and Java without a book and it was extremely difficult to understand


----------



## Kreij (Jan 13, 2012)

When I first learned C++ years ago, I found the hardest part to be the transition from working in a functional programming language (C, Pascal, etc.) to an object oriented language. After writing code for years with a functional mindset, the abstract concepts of OOP were quite foriegn and almost seems superfluous at the time. Of course, once I really understood OOP, there was no looking back as it's advantages and benefits became readily apparant.

Learning the new syntax of different language is really the easy part, as once you get some code working you basically won't forget how to use the syntax for any given example, or at least know where to find it in a programming reference.

IMHO, the best thing anyone could possible do is to find themselves a mentor who is willing to answer all the questions that you will have on the undelying concepts of a given programming paradigm, and hopefully one who has a great deal of patience and the ability to present things from different angles when something is just not sinking in. Thankfully, I was blessed with a mentor who besides being a coding god, had both of those traits, and to this day is a very good friend. He has since moved into higher management levels at GE and I now code more than he does, but I still pick his brain on the rare occasion when I have questions on really low level code.

When I was learning to code, the internet as we know it did not exist, so the new coders have a great advantage as there are many fine coders here on TPU who are willing to share their knowledge and experience simply for the asking, and who remember what it was like to be a coding n00b with more questions than answers.


----------



## Horrux (Jan 13, 2012)

Kreij said:


> When I first learned C++ years ago, I found the hardest part to be the transition from working in a functional programming language (C, Pascal, etc.) to an object oriented language. After writing code for years with a functional mindset, the abstract concepts of OOP were quite foriegn and almost seems superfluous at the time. Of course, once I really understood OOP, there was no looking back as it's advantages and benefits became readily apparant.
> 
> Learning the new syntax of different language is really the easy part, as once you get some code working you basically won't forget how to use the syntax for any given example, or at least know where to find it in a programming reference.
> 
> ...



As a self-taught C programmer of decent skill back in the DOS days, teaching myself C++ failed miserably.

Also, what is "cout"?


----------



## Kreij (Jan 13, 2012)

It's the command to send output to the console.


----------



## Horrux (Jan 13, 2012)

Kreij said:


> It's the command to send output to the console.



Damn where are the days when things were at least a little bit self-explanatory LOL.


----------



## GSquadron (Jan 13, 2012)

Kreij said:


> When I first learned C++ years ago, I found the hardest part to be the transition from working in a functional programming language (C, Pascal, etc.) to an object oriented language. After writing code for years with a functional mindset, the abstract concepts of OOP were quite foriegn and almost seems superfluous at the time. Of course, once I really understood OOP, there was no looking back as it's advantages and benefits became readily apparant.
> 
> Learning the new syntax of different language is really the easy part, as once you get some code working you basically won't forget how to use the syntax for any given example, or at least know where to find it in a programming reference.
> 
> ...



Your post is really motivating and i hoped to have your chances too in C++.
Unfortunately my mentor rejected me of being part of a project with Ogre3D for 9 months and accepted a girl who doesn't know how many bytes takes an int. That made me "VERY ANGRY"  and i made the project using XNA in a single day. Now i know he was not a
mentor. He was a fool trying to tell us that call of duty black ops uses the best vertex shaders ever made. I didn't lose my patience with him and went on programming myself.
What is worse i have a lot of people arguing very bad about me and they don't want me to
study programming, but i didn't hear anything and went on reading a 1200 pages book.


----------



## razaron (Jan 13, 2012)

When making a DnD dice roller a couple of months ago I remember using several math.min functions inside each other to work out 4d6 minus the lowest roll.


----------



## ctrain (Jan 13, 2012)

Aleksander Dishnica said:


> I was reading a book and went through a problem of mine.
> In November i tried to make a formula in math, but the number was way too huge and
> i couldn't hope anymore in my skills in math. I just found the square power of it,
> but not the cube. So now i remember it all, and i was thinking...
> ...



it doesn't have to be the same function.

the return is used for the argument.



Kreij said:


> ```
> #include "stdafx.h"
> #include "iostream"
> #include "cmath"
> ...



this is C++/CLI (.NET), not native C++


----------



## Kreij (Jan 13, 2012)

I know, ctrain ... that is because Brandon said he had to use VC++ in his uni classes.


----------



## GSquadron (Jan 18, 2012)

brandonwh64 said:


> *EDIT*
> 
> I tried to use your code and got an error, it would not compile



Just found your problem.
I tried it on visual studio 2010 it didn't work
It will work if you add a 
*file -> new project -> visual C++ -> win32 -> win32 console application -> empty project*
Copy paste it and it will work. It worked on my pc
If you have trouble just post your problem or watch the steps again


----------



## brandonwh64 (Jan 18, 2012)

Aleksander Dishnica said:


> Just found your problem.
> I tried it on visual studio 2010 it didn't work
> It will work if you add a
> *file -> new project -> visual C++ -> win32 -> win32 console application -> empty project*
> ...



This is what I first tried and it errored when I compiled it


----------



## GSquadron (Nov 30, 2012)

I know this thread is old, but to help out:
I fixed the error in Visual Studio 2010 using math.h header instead of cmath.
You should also remove the precompiled headers when starting a new empty project.
In Visual Studio 2012, it works perfect since it has the new headers and C++11.


----------



## MrSeanKon (Nov 30, 2012)

Aleksander Dishnica said:


> This means that you can call *same function inside the function*!


This is called recursion or not? 
Because I remember now the recursive algorithm of Fibonacci formula.


----------

