I am looking for a project or goal to reach in order to improve me programming skills. I'd say I am still a beginner as it comes to C programming and would like a project to work on but cannot seem to think one, any ideas?

Recommended Answers

All 7 Replies

Sourceforge has a lot of projects, but I like the puzzle type problems myself. Try ProjectEuler, SPOJ, etc.

Some of those problems are REAL "projects".

Write a program in C++ to play a mind-reader game sometimes called "Russian Magic Square". Your interface will be text-driven using numbers and letters of the alphabet and will not use graphics.

Running your program will look something like what is shown below, where user input is shown in bold:



 99:h   98:K   97:b   96:I   95:h   94:z   93:U   92:A   91:C   90:d
 89:G   88:h   87:W   86:t   85:C   84:v   83:K   82:h   81:h   80:d
 79:O   78:p   77:f   76:x   75:h   74:W   73:Y   72:h   71:W   70:x
 69:x   68:l   67:S   66:v   65:t   64:n   63:h   62:M   61:r   60:K
 59:b   58:f   57:W   56:n   55:b   54:h   53:h   52:x   51:z   50:x
 49:x   48:r   47:U   46:f   45:h   44:f   43:h   42:S   41:S   40:E
 39:j   38:x   37:p   36:h   35:G   34:W   33:Q   32:z   31:O   30:z
 29:t   28:j   27:h   26:M   25:A   24:A   23:t   22:j   21:n   20:v
 19:t   18:h   17:S   16:t   15:r   14:l   13:S   12:O   11:M   10:h
  9:h    8:v    7:Y    6:b    5:I    4:t    3:v    2:h    1:A    0:h

1. Choose any two-digit number in the table above (e.g. 73).
2. Subtract its two digits from itself (e.g. 73 - 7 - 3 = 63)
3. Find this new number (e.g. 63) and remember the letter next to it.
4. Now press 'r' and I'll read your mind... r

I sense you are thinking of:  h
Enter 'r' to repeat or 'x' to exit: r

 99:z   98:n   97:d   96:O   95:h   94:K   93:x   92:G   91:C   90:d
 89:E   88:p   87:f   86:W   85:Y   84:z   83:A   82:v   81:z   80:l
 79:z   78:Q   77:E   76:S   75:W   74:l   73:U   72:z   71:z   70:K
 69:K   68:x   67:I   66:W   65:r   64:G   63:z   62:l   61:d   60:I
 59:n   58:x   57:W   56:O   55:Y   54:z   53:G   52:W   51:v   50:j
 49:O   48:n   47:I   46:U   45:z   44:W   43:Q   42:I   41:S   40:Y
 39:n   38:b   37:d   36:z   35:z   34:W   33:r   32:E   31:r   30:O
 29:E   28:n   27:z   26:W   25:C   24:S   23:C   22:Q   21:f   20:z
 19:z   18:z   17:G   16:C   15:j   14:t   13:n   12:M   11:G   10:C
  9:z    8:Y    7:p    6:n    5:z    4:n    3:Q    2:d    1:K    0:z

1. Choose any two-digit number in the table above (e.g. 73).
2. Subtract its two digits from itself (e.g. 73 - 7 - 3 = 63)
3. Find this new number (e.g. 63) and remember the letter next to it.
4. Now press 'r' and I'll read your mind... r

I sense you are thinking of:  z
Enter 'r' to repeat or 'x' to exit:     

This was my first project for C++. Basically whenever you subtract any digit from itself (2 digits or more up to 81) it is a multiple of 9. For instance, if you picked 83 and then subtract 83 - 8 - 3 = 72 which is a multiple of 9. When you look at 72 in the first board, this program will 'guess' what you were thinking of.

Things you need to know: looping, inputting, outputting, creating a table, and if/else or case/switch statements whichever you prefer.

Sounds intriguing, would you mind at some point showing me either all or a portion of the source code to see how you finished it, I've just started it

Looks like you're already preoccupied, but if I may be so bold, try a podcast ripper.
What a podcast ripper teaches you:
Sockets (i.e. network connections and transfers)
XML Parsing
Binary File Writing
(In addition to whatever bells and whistles you add like a GUI interface via MFC, GTK+, Qt, wxWidgets, etc.)

That also sounds interesting, however, due to my little knowledge I seem overwhelmed by so many projects that I dont even know where to begin. I'm looking for beginner level programs which help me to an intermediate level

Sorry for the long response... here is my source code. Also this code was supposed to be done in C not C++. Good luck.

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

int main()
{
    int RandomNumber, TableGenerator, GoingLoopy;
    char RandomLetters, RetryExit, MindReadingLetter, Continue;

    srand(time(NULL));       //Seeds a random number using the system time

    /*Choosing to do a "do-while" loop so I can have at least one
    run-through before it reaches a condition. It will exit or retry 
    depending on user input*/
    do{                                   
    //Using 'for' loop to create the table for the numbers and letters
        for(TableGenerator = 99; TableGenerator >= 0; TableGenerator--)
        {    /*RandomNumber will be getting a random number from 0-25
             I will then be adding +1 to it to generate 1-26 I'll also be doing
             a check to see if it is even or odd to choose whether to generate
             a lowercase or uppercase ASCII character*/
            RandomNumber = rand() % 26 + 1;                 
            if(RandomNumber % 2 == 0)                       
                RandomLetters = RandomNumber + 64;          
            else if (RandomNumber % 2 == 1)
                RandomLetters = RandomNumber + 96;

            /*EXTRA CREDIT: Will be randomly selecting between two 'formulas'
            to decide which will be the 'mind-reading' letter*/
            if(RandomNumber % 2 == 0){                     
                if(TableGenerator / 9 == 11)                
                    MindReadingLetter = RandomLetters;
            }
            else if(RandomNumber % 2 == 1)                  
                if(TableGenerator == 99)                    
                    MindReadingLetter = RandomLetters;
            /*This section of the code will print out the actual table and
            sexy it up if certain conditions aren't met*/
            if(TableGenerator < 10)
                printf(" ");                       
            if(TableGenerator % 9 == 0)
                printf("%d:%c  ", TableGenerator, MindReadingLetter);
            else
                printf("%d:%c  ", TableGenerator, RandomLetters);
            if(TableGenerator % 10 == 0)                 
                printf("\n");
        }

        printf("\n\n1. Choose any two-digit number in the table above (e.g. 73).\n");
        printf("2. Subtract its two digits from itself (e.g. 73 - 7 - 3 = 63).\n");
        printf("3. Find this new number (e.g. 63) and remember the letter next to it.\n");
        printf("4. Now press 'r' and I'll read your mind... ");
        scanf(" %c", &Continue);


        /*Bonus part of the code that I had already added in before I was told
        this was not necessary... If the user does not press 'r' or 'R'
        he/she will be stuck in an endless oblivion aka loop.*/

        if(Continue == 'r' || Continue == 'R')             
            GoingLoopy = 1;                                                                     
        else 
            GoingLoopy = 0;
        while(GoingLoopy == 0){                            
            printf("\nDude...... I said PRESS 'r'... "); 
            scanf(" %c", &Continue);                                                            
            if(Continue == 'r' || Continue == 'R')
                GoingLoopy = 1;
            else 
                GoingLoopy = 0;
        }
        //The "mind-reading" letter output
        printf("\n\nI sense you are thinking of: %c\n", MindReadingLetter);
        printf("Enter 'r' to repeat or 'x' to exit... ");   
        scanf(" %c", &RetryExit);

        /*Another bonus part of the code that I had already added in before I 
        was told this was not necessary... If the user does not press 'r', 'R',
        'x', or 'X' he/she will be stuck in an endless oblivion aka loop */

        if(RetryExit == 'r' || RetryExit == 'R' || RetryExit == 'X' || RetryExit == 'x')        
            GoingLoopy = 1;     
        else
            GoingLoopy = 0;
        while(GoingLoopy == 0){                           
            printf("\nDude... I said press 'r' to repeat or 'x' to exit... ");
            scanf(" %c", &RetryExit);
            if(RetryExit == 'r' || RetryExit == 'R' || RetryExit == 'X' || RetryExit == 'x')        
                GoingLoopy = 1;     
            else
                GoingLoopy = 0;
        }
        printf("\n\n");
    }while(RetryExit == 'r' || RetryExit == 'R');        
    printf("Thanks for playing!!!\n");
    return(0);
}

While it is certainl;y more an intermediate to advanced level project, you might consider going through the Scheme from Scratch process. It not only is a nicely incremental project, meaning that at no one point should you get overwhelmed by it, but it also exposes you to a radically different language which you can compare to C (which always gives some degree of enlightenment).

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.