Register to reply

[C++] Tutorial 1: Discussion

by dduardo
Tags: discussion, tutorial
Share this thread:
dduardo
#19
Jul18-04, 05:41 PM
Emeritus
dduardo's Avatar
P: 1,919
DarkAnt, the code you put there are your functions.
exequor
#20
Jul20-04, 09:14 AM
exequor's Avatar
P: 393
hey dduardo when you are finished with the main topics are you going to give a tutorial on using some gui toolkit or so?
dduardo
#21
Jul20-04, 09:36 AM
Emeritus
dduardo's Avatar
P: 1,919
Which gui toolkit do you want? FLTK, GTK, QT?
exequor
#22
Jul27-04, 09:13 AM
exequor's Avatar
P: 393
i have wxwindows and fltk added to dev cpp but i just can't seem to find a download for GTK with dev cpp. Its not like i want to learn them all I was just experimenting to see which one i should go with so that later on i don't regret choosing one then having to make a switch. It would be nice to know which one you think is best? Do u do any gui by the way?
BobG
#23
Aug1-04, 10:43 PM
Sci Advisor
HW Helper
BobG's Avatar
P: 2,280
Quote Quote by dduardo
DarkAnt, the code you put there are your functions.
Would that be something to enable your mathematical functions such as square root, etc.?

Not that making your own isn't fun. Check this out - a mathematical transmission. Newton-Raphson doesn't work so well at extremely low or extremely high "rpms". Pushing the significant digits into Newton-Raphson's most effective range and tracking the powers of ten separately makes this run a lot better, especially for those problem numbers like "What's the square root of 1.01?" which converge somewhere between here and eternity.

Using recipricals for numbers less than one makes things a lot easier to deal with, as well (like that annoying divide by zero problem when you try to find the square root of .5)

Being able to find the square root on three sticks of bamboo slapped together 50 years ago easier than my program could got so frustrating I decided to just give in and borrow a couple slide rule tricks.


//Name: Bob
//Filename: squareroot.cpp

#include<iostream.h>

void main()

{
//variables
double my_number=-1, temp_number, difference_number;
int count,recip=0,napier=0;
const int max_count=25;
const double tolerance=.000001;


//input (no negatives allowed)
while(my_number<0)
{
cout <<"Input number: ";
cin >>my_number;
if(my_number<0)
{
cout <<"You must enter a positive number!" <<endl;
}
else
{
}
}
cout <<endl;

//pre-processing (if number less than one, use reciprical)
if(my_number<1)
{
recip=1;
my_number=1/my_number;
}
else
{
}

//pre-processing (Napier's method to speed processing)
if(my_number<10)
{
my_number=my_number *100;
napier=-1;
}
else
{
while(my_number>1000)
{
my_number=my_number/100;
napier++;
}
}

//processing (Newton-Raphson method)
count=0;
temp_number=my_number;
while(count<max_count)
{
difference_number=my_number-temp_number*temp_number;
if(difference_number<tolerance && difference_number * (-1) < tolerance)
{
break;
}
else
{
temp_number=temp_number-difference_number/(1-2*temp_number);
}
count++;
}

//post-processing (undo Napier's)
if(napier==-1)
{
temp_number=temp_number/10;
my_number=my_number/100;
}
else
{
while(napier>0)
{
my_number=my_number*100;
temp_number=temp_number*10;
napier--;
}
}


//post-processing (if reciprical was used, flip back to original)
if(recip==1)
{
temp_number=1/temp_number;
my_number=1/my_number;
}
else
{
}

//output
if(difference_number<tolerance && difference_number * (-1)<tolerance)
{
cout << endl << "Square root of " <<my_number <<" is: " <<temp_number <<endl;
}
else
{
cout << endl << "Routine failed to converge! " <<temp_number << endl;
}

return;
}
Alek
#24
Aug1-04, 11:08 PM
P: 7
Sorry Bob, I didn't mean to be that impolite anyway, , Hello !
WRab
#25
Aug2-04, 04:16 AM
P: 3
Quote Quote by Alek
I dis-
Your coding style I have to say is really really

Can you please change the dot h into no-dot-h ?
The Standard tells me that I have to return an int in main-function instead of void.
I think so,...-lol-
Over!
Alek
#26
Aug2-04, 08:01 AM
P: 7
Quote Quote by cipher
hey dduardo when you are finished with the main topics are you going to give a tutorial on using some gui toolkit or so?
If you could give all members tutorials in biology ?

I don't know why no one thinks up some tutorials in LISP ? I am learning, it is used a lot in PR, NN.
It is so kind of you to give people this tutorial anyway.
Thank DDuardo
BobG
#27
Aug2-04, 09:38 AM
Sci Advisor
HW Helper
BobG's Avatar
P: 2,280
Quote Quote by Alek
Sorry Bob, I didn't mean to be that impolite anyway, , Hello !
That's okay. I know a little Basic, but C++ is completely new to me.

I already know the iostream can go either way (evidently, different compilers handle it differently and our teacher warned us that we might have to drop the .h if we used this at home on a different compiler).

Totally clueless on the main function (we've only had two classes, so far).

At least starting to get a feel for having to live without any line numbers.
jwyw0813
#28
Sep14-04, 12:54 AM
P: 1
hello everyone,

i would like to have a function to Minimize the average waiting time of N print jobs using c++.
i am thinking of using heap class to build it
i have read a book and it has the follow idea.

the first line is the number of job needed to be do
subsequent lines - arrival time, length of job

sample input 1
6
0 7
0 2
0 1
5 10
6 3
8 5
Average waiting time : 4.33
However i dont know how to calculate the waiting time out and how to start
can anyone teach me how to do that , thx all
rgrig
#29
Sep14-04, 02:21 AM
P: 34
jwyw0813, a greedy algorithm should work. If you are not familiar with "greedy": search "\"job schedule\" greedy" on google.

A quick idea is: add jobs to the heap in non-descending order of their starting time and use as ordering criteria for the heap their end times. I have omitted some details and, more important, I haven't proved this works -- and neither tried it, so be sure to take the info in this paragraph with a grain of salt.

As for the heap.. If you are writing the program in C++ then you might be better of using std::set instead of a heap (because it is readily available from the standard library). In Java you have TreeSet. In C# you have SortedList (this might be slower...),. In OCaml you have Set, etc. In short you can use a set-like DS, which is usually implemented as a balanced search tree, instead of the heap, simply because heap implementations are not readily available in most standard libraries.
SahinTC
#30
Sep30-04, 12:50 AM
P: 19
I've been programming in C++ for around four to five years right now, and have to say I wish I had a tutorial like that when I started.

You might really want to teach Hungarian notation and standard naming conventions though.
Err, you know:

methods: methodNameHere()
constant: CONSTANT_HERE,
integer: iNum1, iNum2,
float: fNum1, fNum2

I say this because it really helps make the code neat and simple to read and understand.

Also, for anyone else interested, I would highly recommend the Deitel and Deitel book, C++ How to Program. Hands down one of the best books for beginners.

EDIT: Might also want to include a blurb on Dev C++, in my opinion the best free IDE for C++ there is. IDEs generally make the process of learning how to code from scratch much easier than working with commandline executed compilers. Plus, syntax hilighting is nice. :)
rgrig
#31
Oct2-04, 12:37 PM
P: 34
Hungarian notation is an historical one. Everybody agrees these days that it is obsolate (see Java or .NET coding standards for example.

As for the book, just look at:
http://www.accu.org/cgi-bin/accu/rvo...file=cp003204a

The conclusion: "Do not buy this book, and if someone tries to give you a copy decline, politely, then firmly."

If you want good books look for:
Bjarne Stroustrup, The C++ Language (the "c++ bible" by the creator of the language)
Effective C++ & More Effective C++, Scott Meyers (nice idioms)
Design Patterns, Gamma et. al (designing big applications)
Modern C++ Design, Andrei Alexandrescu (advanced _language_ usage, very heavy on templates)

In general, when you consider buying a book make a visit to www.accu.org to see at least one authorized opinion.
hatefilledmind
#32
Nov25-04, 05:07 AM
P: 2
I was never a fan of Hungarian notation. However if you have to edit source code for a Win32 program you might come across it, so you should at least be aware of what it is.

I've never read the Deitel & Deitel book on C++ (I have their book on Java, it's OK), but to imply that a book for beginners is in the same class as an exhaustive C++ reference book (the one by Stroustrup) and an advanced text on OO design for software professionals and other advanced users is unreasonable. Those are good books but not suitable for those without substantial experience (either with C++ or OOP in general). And there's a lot to learn in C++.
ramollari
#33
Dec1-04, 02:53 AM
P: 453
Quote Quote by hatefilledmind
Those are good books but not suitable for those without substantial experience (either with C++ or OOP in general). And there's a lot to learn in C++.
I've read C++ How to Program from Deitel & Deitel, and it is excellent for beginners. It's not just learning C++ but learning programming concepts from the beginning in most structured way. The treatment of structured programming especially is great. I think it is useful for professionals as well who need to consolidate the messy knowledge they have in mind, and to write clearer programs.
I just would like to read a book for MFC with C++ but I'm not finding an appropriate one.
ramollari
#34
Dec1-04, 04:05 AM
P: 453
Quote Quote by rgrig
Design Patterns, Gamma et. al (designing big applications)
This is a classically important book of course, but if you ever read that book you'd understand that it is not for learning C++. How could a beginner understand what are patterns whithout knowing about design, or worse about programming basics.
rgrig
#35
Dec7-04, 03:45 PM
P: 34
"Design patterns" is, as I said, for designing applications -- in any OO language.

For structured programming you are better of with Dijkstra's "Structured programming" book. His writing style is excelent.

Why exactly do you want to learn about MFC? It is old and a very good example of BAD library design. You would be much better off learning .NET class library or Java API.
ramollari
#36
Dec8-04, 02:08 AM
P: 453
Well, MFC are the libraries that I have in my compiler, Microsoft Visual C++ 6.0. But I'd be willing to learn any other libraries for GUI in C++.


Register to reply

Related Discussions
CFD tutorial Mechanical Engineering 4
C# Tutorial Programming & Computer Science 13
GR Tutorial Special & General Relativity 2
Probability tutorial Academic Guidance 0
Tutorial La Tec General Math 1