C/C++ Guide to C++ Programming For Beginners

AI Thread Summary
The discussion focuses on a beginner's guide to C++ programming, emphasizing the importance of selecting a suitable integrated development environment (IDE), such as Bloodshed’s Dev-C++, for compiling and debugging code. Participants express appreciation for the tutorial's structure and suggest including deeper explanations of key concepts like conditional statements, iterative statements, and pointers. There is a request for clearer code examples to enhance understanding, particularly regarding function definitions and the use of header files. The conversation also touches on the potential for future tutorials on GUI toolkits and advanced topics. Overall, the thread serves as a collaborative platform for sharing insights and improving the learning experience in C++.
  • #51
Hurkyl said:
Not to mention that it's not free!

I thought QBASIC was a beautiful language, is VB really that bad? (Of course, I had not yet heard of Pascal or C++ at that time in my life)
It is all commercial: the language and the development environment. That is to the advantage of Microsoft.

Also by the way VB is little related with QBASIC. When I think of VB I think of 'drag and drop', not of programming.

VB is useful for prototyping and for RAD software development. But not for beginners who want to learn programming principles. C++ would be a good one.
 
Technology news on Phys.org
  • #52
I started out with VB, and I agree. After I started programing in C++ I felt like I wasted a lot of time of VB. Oh well live and learn.
 
  • #53
ramollari said:
VB is useful for prototyping and for RAD software development. But not for beginners who want to learn programming principles. C++ would be a good one.

Python would be an even better one. Simple syntax, while teaching modern programming principles. Even after you move on to a different language, it's still great for scripting!
 
  • #54
my question is simple, i think, but it still killing me in class
i kinda gave up on learning new stuff, because i still have not been able to successfully run it,...nothing to do with errors(though i'll have those) but i don't know the specific way to run a program when u finish,...the ending part just does not make sense for me, pretty much because i don't know how to do it
 
  • #55
SqrachMasda said:
my question is simple, i think, but it still killing me in class
i kinda gave up on learning new stuff, because i still have not been able to successfully run it,...nothing to do with errors(though i'll have those) but i don't know the specific way to run a program when u finish,...the ending part just does not make sense for me, pretty much because i don't know how to do it

You're going to have to be a bit more specific, mate :frown:. What language are you using? What compiler? Can you post exactly the problem you're having and post the source of what you have so far?
 
  • #56
Hurkyl said:
Not to mention that it's not free!

I thought QBASIC was a beautiful language, is VB really that bad? (Of course, I had not yet heard of Pascal or C++ at that time in my life)
Oddly enough that's not entirely true. .net express
 
  • #57
i am creating two fileds a header file function.h with function wel() defined in it and a main file main.c which is calling wel() function define inside function.h. Hope this is enough.
function.h
public void wel()
{
printf("Hello Welcome !");
}

main.c

# "header.h"
int main(int argc, char *argv[])
{
wel();
return 0;
}
 
  • #58
people shouhld alwasy start with pascal =]
 
  • #59
Multidimensional arrays

dduardo said:
Please post your C++ questions or comments here for Tutorial 1.
I am having trouble getting my multidimensional array to do what I want it to do. Here is an exmple
of how I want this to look and how it will work.

row 1) Part Description | Part number //this is multidemsional array PD( row 1,columns 1-18 ), m array P#

row 2) Cam | 2110 // PD [1][0-4],Cam[1][0-4]

row 3) air filter | 1111 // PD [2][0-10],cam[2][0-4]
ect

My goal is on the first time the order function is entered to have row 1 and 2 display, the 2nd time the order function is entered rows 1,2,3 will display, the third rows 1,2,3,4 ect. Also the array will only display addresses not what it is supposed to. I know this is not an easy thing to do but I am not able to think of any other way to show all of the ordered items. Helllllllllllp plllllllllllllllease...

here is the code I have.

#include <iostream>
#include <iomanip>
#include <ctype.h>
#include <stdlib.h>
using namespace std;

void partsorder(char order[]);
void list(char order[]);
int zz = 0;
const int ROWS = 50;
const int COLS = 50;
const int CAM = 20;

int main()
{
char shaft[CAM]="";

do
{
cout << "The cam number is 2110. The cam kit number is 2110k. Please enter\n"
<< "the approiate part number ";
cin.getline(shaft,CAM);
if (shaft[0] != 0) //if shaft is not null then goto
list(shaft);
}while(shaft[0] != 0);
}

void list(char order[])
{
if (zz == 0){
cout << " | Part Description |" << " Part # |\n ";
partsorder(order);
}
else {
partsorder(order);
}
}

void partsorder(char order[])
{
int num = 0, e = strlen(order);
num = atoi(order);
char c[CAM] = "Cam";
char ck[CAM] = "Cam kit";
char b,pd[ROWS][COLS];
zz++;

switch (num)
{
case 2110:
if (e == 4){
for(int y = 0; y < COLS; y++){
pd[zz][y]=c[y];

}
//strcpy(pd,c);
b = ' ';
//cout << "Please enter the quantity -->";
//cin >> q;
//price = 86 * q;
break;
}

else if (e == 5) {
for(int y = 0; y < COLS; y++){
pd[zz][y]=c[y];
}
//strcpy(pd,ck);
b = 'k';
//cout << "Please enter the quantity -->";
//cin >> q;
//price = 136 * q;
}
}
int x = 0;
for(int y = 0; y < COLS; y++){
cout << pd << endl;
for (x = 0; x <= zz; x++){
//cout << " | " << setw(16)<< setiosflags(ios::left) << pd [x][y]<< " | " << setw(5) << num << b << endl;
}
}
}
 
  • #60
no updates... :cry:
 
  • #61
Example

Number = 65536

log(65536)/log(2) = 16 bits = (16/8) bytes = 2 bytes

A 16-bit (2 byte) number ranges from 0 to 65535, or -32768 to 32767 depending if its signed or unsigned. To hold 65536 would require 17 bits.
 
  • #62
Maybe I'm in the wrong place, but what the heck. In the basic tutorial, you mention that the int is usually 4 bytes. I don't know if it's something you want to get into, but it is compiler-dependent. I had occasion to use the Borland compiler a few years ago, and ints were all over the place. Sometimes they were longs, sometimes they were shorts, and I never did find a pattern to it. I finally gave up declaring ints at all and went straight to longs and shorts.

For what it's worth...
 
  • #63
The same problem obtains in a 64 bit environment where longs are 64 bits.
The Borland compilers are 16 bit, which is what MS-DOS and consumer Windows (Win95, Win98, WinME) are built on top of.
 
  • #64
I finally finished the basic c++ tutorial. If your interested in a particular topic in programming let me know and i'll see if I can accommodate you.
 
  • #65
dduardo, it was a really good tutorial. Apart from the basics what else do you think would be good to know to solve problems using c++; such as for the acm programming contest? Do you plan to have an intermediate tutorial?
 
  • #66
For the intermediate I'll do pointers, strings, basic classes, structures and file io.

Then for advanced I'll do overloading, polymorphism, virtual and templates.

I could also do a tutorial just on alorithms: sorting, trees, heaps, queues, stacks, etc.

I could also do special topics like posix threads, interprocess communication (IPC), x86 asm, etc.

In terms of ACM programming you would want a tutorial on dynamic programming. I know when I did ACM that was a big topic.

Which one do you want?
 
  • #67
How about a topic covering math functions, Stuff like trigonometry and so on?
 
  • #68
I could add math functions to intermediate and dynamic memory allocation to advanced.
 
  • #69
Without putting too much pressure/workload on you dduardo :-p, i would like to see as much included as possible to make the tutorial show most sides of c++ programming and the different aspects of it.

My suggestion is to try and cover as much as possible as clearly as possible as you have done so far. I like the fact that the posts are not several pages long but gives a more-than-basic idea about the specific topic and it is up to the reader to go and try for themselves a bit instead of reading every program code out of a book.

Great tutorial:biggrin:
 
  • #70
C++ using For statement

This is my first time using a C++ program...actually any programs. my C++ programming class is a lot harder than my physics and math classes. =(
i've never struggled so much so i would REALLY REALLY appreciate as much help as possible. here is my problem:

Write a program that asks the user how many numbers will be entered and then has the user enter those numbers. When this is done, report to the user the position of the first 7 entered and the last 7 entered. By position we mean, for example, that if the first 7 is the 2nd number entered then its position would be 2.

Sample screen output 1:

How many numbers will be entered? 8
Enter num: 5
Enter num: 7
Enter num: 6
Enter num: 7
Enter num: 7
Enter num: 3
Enter num: 8
Enter num: 6
The first 7 was in position 2
The last 7 was in position 5


Sample screen output 2:

How many numbers will be entered? 8
Enter num: 5
Enter num: 2
Enter num: 6
Enter num: 7
Enter num: 1
Enter num: 3
Enter num: 8
Enter num: 6
The first 7 was in position 4
The last 7 was in position 4


Sample screen output 3:


How many numbers will be entered? 8
Enter num: 5
Enter num: 1
Enter num: 6
Enter num: 5
Enter num: 9
Enter num: 3
Enter num: 8
Enter num: 6
Sorry, no sevens were entered.


All i know is that for the counter controlled loop, I use the For loop and include the if-else statement inside the loop. I just can't get the problem to tell me the positions for both 7s.
thanks again.
 
  • #71
if this was a wrong place to put my question, can you tell me where? Thanks
 
  • #72
I will do it by keeping two variables,
1. min_pos - will hold the position of first 7
2. max_pos - will hold the position of last 7

Steps :
1. Initialise min_pos and max_pos to -1
2. Whenever a 7 is read,
if min_pos = -1, update min_pos = counter
if counter > max_pos, update max_pos = counter
3. if both min_pos = -1, output no 7 was read
otherwise output min_pos and max_pos

Once you are done with the program, read the program carefully. Try to understand how the value of -1 was being used here. Such techniques are commonplace in many programs, so it should help you out.

-- AI
 
  • #73
I need help with tutorial.I'am working a assigment 1.I enterd this in the Bloodshed Dev C++.
Code:
#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[]) {
    char myCharacter = 'z';
    cout << "The datatype is" << sizeof(int) << " bytes!" << endl;
    cout << " the varible has a value of " << myCharacter << endl;
    return 0;

}
It works kind of.For some starge reason the box pops up but it closes as soon as it opens.
 
  • #74
scott1, you can either run the application directly from thecommand line or add the following:

This should go at the top:

#include <cstdlib>

and this should go right before the return line:

system("PAUSE");
 
  • #75
It works now.Thanks
 
  • #76
I'am working on the Pythegrom therom assigment.I need help
Code:
#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[]) {
  int a = 'a', b = 'b', c = 'c';
     cout << "Enter Length of A" << endl;
     cin >>  a;
     cout << "enter length of b" << endl;
     cin >> b;
  a * a * b * b == c * c
   cout  << "c =" <<  c << endl;
    system("PAUSE");
    return EXIT_SUCCESS
It says there somthing worng with line 13 and 4 things with line 15 but I think there's probally more stuff worng with it then that.
 
  • #77
Why are you doing a = 'a', b='b', c='c'?

Why don't you just do: double a, b, c;

Then the pythagorean theorem is simply c = sqrt(a*a+b*b) ;

remember to #include <cmath> for the sqrt function.
 
  • #78
It worked thanks
 
  • #79
Is there ever going to be another more advance tutoril
 
  • #80
I've don't this before and now I'm trying to do the hypotenuse thing again...here's what I've got:

Code:
#include <cstdlib>
#include <iostream>
#include <cmath>

using namespace std;

int main(int argc, char *argv[])
{
   double a, b, c;
   
   a = sqrt(b*b+c*c);
   
   cin >> b >> c;
   cout << a;
    
    system("PAUSE");
    return EXIT_SUCCESS;
}

every time I run it a is equal to 0 EDIT: I'm stupid, I got it..
 
  • #81
I the "cin" needs to go before the equation.
 
  • #82
some problems about matrix class

I have an exercise of building matrix class with characters: plus, subtract, divide, convert. Can you help me?:confused:
 
  • #83
I suppose I may have posted this out of place, but it seemed to go beyond the tutorial. Here it is again.

I've been trying for days to get my boyfriend's C++ program to work, and I am almost ready to concede defeat, but I have frequented this site in the past as a lurker, actually learning a lot of what I know from the tutorials (thanks!).

Now, I have a problem I just can't seem to solve.

The object is to have the user pick a choose from a menu and have that value stored somewhere to be used by a function later. Once that choice is picked, the user needs to be able to pick another choice, until he or she fills in all three choices and then it's on to the formula! I also need a choice for clearing the data (I know how to set it all to 0) and one for quitting the program (just return 0; right?), as well as a display of the data that has been entered already once the formula calculates (I have this block of code written too). My formula works, but I'm not sure how to get all the values stored or how to let the user go back and pick a choice from the list after he or she has chosen one already.

Here's what I have so far, and it's a work in progress, but hopefully it's on the right track. I'm thinking I need to, maybe, use a switch statement for the menu, but I can't get that to work for me, and I'm still not sure how to store a value that's not going to be immediately used (maybe something with an array, but again I seem unable to produce the right code).


#include <iostream>
#include <math.h>
using namespace std;

doublemortgage (int c, double b, double a)
{
int i = c;
double j = b;
double k = a;
double l = b/(12 * 100);
double m = c * 12;
double result = k * (l / (1 - pow(1+l, -m)));
return result;
}


int main ()
{
int c;
double b;
double a;
double result;
int x;

cout << "Mortgage Calculation Menu \n";
cout << "1. Enter a Loan Amount \n";
cout << "2. Enter a Loan Rate \n";
cout << "3. Enter a Term in Years \n";
cout << "4. Calculate a Payment \n";
cout << "5. Clear All Input \n";
cout << "9. Quit \n";
cout << "Enter Your Selection: ";
cin >> x;

cout << " \n";

cout << "Enter a Loan Amount: $";
cin >> a;
cout << "Enter a Loan Rate: ";
cin >> b;
cout << "Enter a Term in Years: ";
cin >> c;
cout << "Your Monthly Payment: $"<< mortgage(c, b, a) << endl;

cout << " \n";

cout << "You Entered" << endl;
cout << "Loan Amount: $" << a << endl;
cout << "Loan Rate: " << b << "%" << endl;
cout << "Loan Term: " << c << "years" << endl;
cout << "Monthly Payment: $" << mortgage (c, b, a) << endl;


return0;
}
 
  • #84
Is there a version of the getSubString function in c++? If so, what is it and what are the parameters?

-Thanks in advance
 
  • #85
alright, so I am an Electrical Engineering major, and my current project requires me to program...
im using Visual STudio 2005, and I am having a little trouble with just the basics...

here's my program so far:

#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>

int main
{
printf("heuy");
cout<< "hey";


return 0;

}

i run it, and all it gives me is a blank window...
it doesn't write anything...
can anyone help me?
 
  • #86
mmm ...did tha tcode actually compile?
my guess would be that your main call is missing something.

if it closes to fast put a pause statement like delay, getch, getchar.
 
  • #87
hiiiiiii(mamboooooooooooooooooo)

I hope some of you will not understand may be the language i used in the brackets but are the swahili word so don't worry about it but what i do want to ask from your my friends is just the sammary of c programming language because am still learner of that language but also u can ask me about pascal programming language because somehow iam well on it i hope you will accept my request
 
  • #88
hi my friends
i am a new in this side and i wana your help as fast as you can pleaaaaaaaas>>

the "q" is how to write the function in c++ if
x1=6 ,f(x)=x^2-4 and f'(x)=2x by using Newton raphson method
and the next estimate of the root:
xk+1 = xk - f(xk) / f'(xk)

and the answer should be if i enter the (0.1):

- Enter precision (1/10, 1/100, 1/1000,...): 0.1

xk f(x) derived_f(xk) xk+1 dx
6.000 32.000 12.000 3.333 2.667
3.333 7.111 6.667 2.267 1.067
2.267 1.138 4.533 2.016 0.251
2.016 0.063 4.031 2.000 0.016


pleas don't be late>>>>>thanks
 
  • #89
which is better:
using c++ (graphics mode) or using Visual c++??
i'm sort of confused.
 
  • #90
Nuclear: graphics mode of what? opengl, directx, graphics.h??
 
  • #91
how viable would it be if we had a sticky on a pointers tutorial? Or a quick refresher - i always end up linking to wikipedia then a couple of college sites when explaining pointers over the net on forums (mostly code comments, cramster etc).

it'd be awesome if we can get a collaborative effort on making the best pointers tutorial on the net ...

if it sounds to geeky stop me right now ...
 
  • #92
Help with assignment 4

Help with assignment 4
Im trying to input a number with at least three digits:
heres what i did

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
int number;

cout << "Enter a number:";
cin >> number;
cin.ignore();


if (number == setprecision(3) )
{
cout << "Number has 3 digits." << endl;
}
else
{
cout << "It is not a 3 digit number." << endl;
}
cin.get();
return 0;
somethings wrong and i know its the number == setprecision(3) what should i do?

by the way i just finished number 2 in assignment 4
please check and is there any other shortcut method ?
#include <iostream>
using namespace std;

int main()
{
char character;

cout << "Enter any letter from A to Q: ";
cin>>character;
cin.ignore();

switch (character) {
case 'A':
case 'B':
case 'C':
case 'D':
case 'E':
case 'F':
case 'G':
case 'H':
case 'I':
case 'J':
case 'K':
case 'L':
case 'M':
case 'N':
case 'O':
case 'P':
case 'Q':
cout << character;
break;
default:
cout << "Letter not in the list. " << endl;

}
cin.get();
return 0;
}
 
Last edited:
  • #93
Pascal's triangle

dduardo's Assaignment # 5
Hey i need help with this one..
kindly explain with detail?

i also found this on another forum
#include <iostream>
using std::cout;
using std::endl;
using std::cin;

int pascal(int row, int col)
{
if (row == 0 || col == 0 || row == col + 1)
return 1;

return pascal(row - 1, col - 1) + pascal(row - 1, col);
}

int main(void)
{
int n;
cout << "Enter Row: ";
cin >> n;
cin.ignore();
for (int i = 0; i <= n; ++i) {
for (int j = 0; j < i; ++j)
cout << pascal(i, j) << " ";
cout << endl;
}
cin.get();
return 0;
}
they are using the code pascal which is not explained in dduardo's tutorial
 
  • #94
I briefly looked over the C++ tutorial, and it looked fairly good. One thing though - maybe you should mention the Code::Blocks IDE (http://www.codeblocks.org), and that if one decides to use it, they should use the latest Nightly Build. Although Dev-C++ is still pretty good, it is getting old, and Code::Blocks is becoming better and better than it.
 
  • #95
Equilibrium said:
by the way i just finished number 2 in assignment 4
please check and is there any other shortcut method ?
There is, since the requested range of letters is simply a range of ASCII codes.
 
  • #96
Equilibrium said:
dduardo's Assaignment # 5
Hey i need help with this one..
kindly explain with detail?

i also found this on another forum

they are using the code pascal which is not explained in dduardo's tutorial

"pascal" is a user-defined function.

Hmm...recursion in C/C++ is often inefficient and can lead to memory problems...
 
  • #97
hows this for the hypotenuse assignment?

Code:
#include <iostream>
#include <conio.h>
#include <iomanip>
#include <cmath>
using namespace std;

main()
{
      long double num1, num2, num3;
      int number, num4, reset = 1;
      do {
      cout << "1. Hypotenuse" << endl << "2. Other" << endl;
      cin >> number;
      switch (number) {
             case 1:
      cout << "Enter the two sides, each followed by the enter key" << endl;
      cin >> num1 >> num2;
      num2 = sqrt(num1*num1 + num2*num2);
      break;
      case 2:
           cout << "Please enter the hypotenuse" << endl;
           cin >> num1;
           cout << "Please enter the other side" << endl;
           cin >> num2;
           num3 = sqrt(num2*num2 - num1*num1);
           cout << num3 << endl;
           break;
           }
      num3 *= 1000;
      num1 = num3 - floor(num3);
      num1 *= 10;
      num1 = floor(num1);
      if (num1 >= 5) {
               num3 = ceil(num3);
      } else  {
               num3 = floor(num3);
              }
      num3 /= 1000;
      cout << "Thankyou, the desired length is: " <<  num3 << " to 3d.p." << endl;
      cout << "Would you like to reset? (1 to reset)" << endl;
      cin >> reset;
      } while ( reset == 1);
      return 0;
}

edit:
i have improved it, with menu system and other side calculation but I am having trouble getting a big enough variable to hold a number bigger than 9 as well as with 3 or more decimal places... it seems long double isn't enough...

what should i be using?

still have no idea about the 3 digit assignment...
 
Last edited:
  • #98
p.s. for the 3 digit assignment... can it just be eg "482" or should it include things like 4.82?

equilibrium.. the shorter way is to just say
Code:
if ((num2 > 'a' && num2 < 'q') || (num2 > 'A' && num2 < 'Q')) {
               cout << "yes\n";
               } else {
               cout << "no\n";
               }

and for pascal, i created my own functions and then fiddled to troubleshoot. i had the program automatically enter row 0 and then i set the first position of each row to 0...

but still i don't even know where to start on the 3 digit one...
 
  • #99
"assignment 1.cpp": W8057 Parameter 'argv' is never used in function main(int,char * *) at line 10??
 
  • #100
i didn't understand argv and argc?
 
Back
Top