Overclock.net - Overclocking.net
     
 
Home Gallery Reviews Blogs Register Today's Posts Mark Forums Read Members List


Go Back   Overclock.net - Overclocking.net > Software, Programming and Coding > Coding and Programming > Application Programming

Reply
 
LinkBack Thread Tools
Old 10-09-09   #1 (permalink)
Folding Fanatic
 
tofunater's Avatar
 
intel nvidia

Join Date: Sep 2006
Location: Dekalb, IL
Posts: 2,444

Rep: 200 tofunater is acknowledged by manytofunater is acknowledged by manytofunater is acknowledged by many
Unique Rep: 173
Folding Team Rank: 292
Trader Rating: 24
Default C++, help with intro to functions

I've been working at this assignment for a few days now, and I've finally got a fairly solid shell, but I'm so tired right now I'm struggling with some of my debugging especially with respect to my prototypes. Any help would be appreciated.

Code:
/***************************************************************
CSCI 240         Program 5     Fall 2009

Programmer: Chris Ebener
Section: 1
TA: ViKram Kumra
Date Due: 10/09/09

Purpose: The purpose of this program is to calculate whether it 
is cost effective for a company to round all monetary figures 
to the closest figure of 10 given the exact numbers from the user.
***************************************************************/
#include <iostream>
#include <iomanip>
#include <math.h>
#include <cmath>

double getAmount(double);
double roundAmount(double); 
double calcAverage_exact(double, int);
double calcAverage_round(int, int);
double calcStdDev_exact(double, double, int);
double calcStdDev_round(int, int, int);
double calcDiff(double, double);
using namespace std;
int main()
{
    double money;
    int round_money;
    double exact_sum = 0;
    double in_sum;
    int round_sum = 0;
    double exact_squares = 0;
    int round_squares;
    int count_money = 0;
    double sumsquares_exact = 0;
    int sumsquares_round = 0; 
    
    cout<< "\nEnter an amount (0 to quit):";
    cin>> money;
while(money > 0)
{
    count_money ++;
    exact_sum += money;
    money = getAmount(money);
    round_money = roundAmount(money);
    round_sum += round_money;
    exact_squares = money * money;
    sumsquares_exact += exact_squares;
    round_squares = round_money * round_money;
    sumsquares_round += round_squares;

cout<< "\nEnter an amount (0 to quit) :";
cin>> money;
}

cout<<setiosflags(ios::fixed|ios::showpoint)<<setprecision(2);

double average_exact;
double stddev_exact;
double prct_dif;
int average_round;
int stddev_round;

average_exact = calcAverage_exact(sumsquares_exact, count_money);
average_round = calcAverage_round(sumsquares_round, count_money);
stddev_exact = calcStdDev_exact(exact_sum, sumsquares_exact, count_money);
stddev_round = calcStdDev_round(sumsquares_round, count_money);
prct_dif = calcDiff(exact_sum, round_sum);

if(average_exact == -1 or average_round == -1)
cout<<"not enough values to calculate the average";
if(stddev_exact == -1 || stddev_round == -1)
cout<<"not enough values to calculate the standard deviation";
else

 cout<<"\nCalculation     Exact       Round";
 cout<<"\n--------------------------------------";

 cout<<"\nSum:"
               <<setw(17)
               <<average_exact
               <<setw(12)
               <<average_round;  
                      
cout<<"\nAverage:"
                  <<setw(13)
                  <<prct_dif
                  <<setw(12)
                  <<prct_dif;

cout<<"\nStd Dev:"
                  <<setw(13)
                  <<stddev_exact
                  <<setw(12)
                  <<stddev_round;

if (prct_dif <= 2)
{
   cout<<"\nIts cost effective!\n";

   system ("pause");
   return 0;
}

else
    cout<<"\nIts not cost effective!\n";
    
    system ("pause");
    return 0;
}

// Function 1
double getAmount(double money)
{
if (money > 0)
{
      return money;
}     
else
if (money < 0)
{
      cout<<"\nPlease enter a valid number";
      cin>>money;
      return money;
}

else
      return 0;
}

// Function 2

double roundAmount(double money)
{ 
       double in_sum;
       int round_money;
       in_sum = (money + 5) / 10;
       round_money = in_sum * 10;
       return round_money;
}
       
// Function 3.1

double calcAverage_exact(double exact_sum, int count_money)
{
       double average_exact;
       if (count_money > 1)       
       {
       average_exact = exact_sum / count_money ;
       return average_exact;;
       }
       else
       return -1;
}

// Function 3.2

double calcAverage_round(int round_sum, int count_money)
{
       double average_round;
       if (count_money > 1)       
       {
       average_round = round_sum / count_money;
       return average_round;
       }
       else
       return -1;
}

// Function 4.1

double calcStdDev_exact(double exact_sum, double sumsquares_exact, int count_money)
{
       double stddev_exact;
       if (count_money > 1)
       {
        stddev_exact = sqrt((sumsquares_exact - (exact_sum * exact_sum / count_money))/(count_money - 1));
        return stddev_exact;
       }           
       else
       return -1;
}

//Function 4.2

double calcStdDev_round(int round_sum, int sumsquares_round, int count_money)
{
       int stddev_round;
       if (count_money > 1)
       {
        stddev_round = sqrt((sumsquares_round - (round_sum * round_sum / count_money))/(count_money - 1));
        return stddev_round;
       }           
       else
       return -1;
}

//Function 5

double calcDiff(double exact_sum, double round_sum)
{
       double prct_dif;
       prct_dif = ((fabs(exact_sum - round_sum))/exact_sum) * 100;
       return prct_dif;
}
I apologize for the terrible formatting.
__________________

Quote:
Originally Posted by iandh View Post
People like this know deep down inside that they are absolutely worthless, so they must constantly come up with new ways to give themselves worth, otherwise they may be tempted to end it all one day by OD'ing on Care-Bears marathons.

System: Hedonism, Stanford Style
CPU
i7 920 D0
Motherboard
Asus P6T6 WS revolution
Memory
6 gigs G-skill
Graphics Card
Tri-sli 260's
Hard Drive
620aaks
Sound Card
on board
Power Supply
Zalman 850
Case
hardwood techstation(soon)
CPU cooling
GTZ/bix 360/355 (soon)
GPU cooling
water (soon)
OS
Vista 64
Monitor
22" Samsung 225BW
Overclock.net - 2009 Chimp Challenge Champions

Last edited by tofunater : 10-11-09 at 07:50 PM
tofunater is offline I fold for Overclock.net   Reply With Quote
Old 10-10-09   #2 (permalink)
Linux Lobbyist
 
amd ati

Join Date: Oct 2008
Location: Melbourne, Teh land of Oz
Posts: 1,675

Rep: 98 bomfunk is acknowledged by some
Unique Rep: 85
Trader Rating: 0
Default

Well, you need to actually tell us what's the problem... what kinda error messages are you getting, or what is the program actually doing wrong?

Also, strictly speaking, your formatting is far from terrible, though you could use more empty lines to "break the code up" at certain places, the formatting is quite good for someone who's just learning.
__________________
Statistix show that 92% of teenagers have moved to real music . If you are one of the sane 8% that still listen to funk, hip-hop or jazz, copy and past this into your sig, for thou art now offically awesome!
Quote:
Originally Posted by un4rmed View Post
With windows, everything is already set up and working.
DISCLAIMER:
By reading the above post, you accept that the poster ("bomfunk") is now the rightful owner of all your present possessions.

System: Titan Mauler (Advanced Micro Destroyer)
CPU
Phenom X3 8450 @ 2.1GHz
Motherboard
ASRock AOD790GX/128M (790GX+SB750)
Memory
2x2GB Amicroe DDR2-800
Graphics Card
Radeon HD3300 IGP 32MB shared memory
Hard Drive
500GB Samsung & 320GB Seagate Barracuda
Sound Card
Realtek onboard
Power Supply
CoolerMaster 380W
Case
Generic MIDI tower
CPU cooling
Stock
GPU cooling
Stock
OS
Ubuntu 9.04 "Jaunty Jackalope" 64-bit
Monitor
Acer 17" 8ms LCD (AL1715)
bomfunk is offline   Reply With Quote
Old 10-10-09   #3 (permalink)
Case Modder
 
Spotswood's Avatar
 
Join Date: Jul 2008
Location: New Hampshire, USA
Posts: 235

Rep: 46 Spotswood is acknowledged by some
Unique Rep: 39
Trader Rating: 0
Default

In order to compile your code I had to change the declaration of calcAverage_round to:
Code:
double calcAverage_round(int, int);
But then when I ran it, it fell into an infinite loop:

Code:
    while(money != 0)
    {
        money = getAmount(money);
        count_money ++;
        exact_sum += money;
        round_money = roundAmount(money);
        round_sum += round_money;
        exact_squares = money * money;
        sumsquares_exact += exact_squares;
        round_squares = round_money * round_money;
        sumsquares_round += round_squares;

        cout<< "\nEnter an amount (0 to quit) :";
    }


Hmmmm...this is obviously wrong:
Code:
double getAmount(double money)
{
    while (money < 0)
    {
        cout<<"\nPlease enter a valid number";
        cin>>money;
        return money;
    }

    if (money > 0)
        return money;

    else
        return 0;
}
What happens if money isn't less than 0?

Good luck!
__________________
Rich
Custom Wooden Case Builder
Overclock.net Mod of the Month
Spotswood is offline   Reply With Quote
Old 10-11-09   #4 (permalink)
Folding Fanatic
 
tofunater's Avatar
 
intel nvidia

Join Date: Sep 2006
Location: Dekalb, IL
Posts: 2,444

Rep: 200 tofunater is acknowledged by manytofunater is acknowledged by manytofunater is acknowledged by many
Unique Rep: 173
Folding Team Rank: 292
Trader Rating: 24
Default

Thank you for the hints spotswood, I really just needed to take a step back from it for awhile and attack it again later
Now I've eliminated the infinite loop, and the program works, but the final calculation seems off, would someone mind running it and seeing if they can figure out if I'm just crazy?
__________________

Quote:
Originally Posted by iandh View Post
People like this know deep down inside that they are absolutely worthless, so they must constantly come up with new ways to give themselves worth, otherwise they may be tempted to end it all one day by OD'ing on Care-Bears marathons.

System: Hedonism, Stanford Style
CPU
i7 920 D0
Motherboard
Asus P6T6 WS revolution
Memory
6 gigs G-skill
Graphics Card
Tri-sli 260's
Hard Drive
620aaks
Sound Card
on board
Power Supply
Zalman 850
Case
hardwood techstation(soon)
CPU cooling
GTZ/bix 360/355 (soon)
GPU cooling
water (soon)
OS
Vista 64
Monitor
22" Samsung 225BW
Overclock.net - 2009 Chimp Challenge Champions
tofunater is offline I fold for Overclock.net   Reply With Quote
Old 10-11-09   #5 (permalink)
PC Gamer
 
TheGrayNobleman's Avatar
 
intel ati

Join Date: Jun 2007
Location: Cali
Posts: 859

Rep: 70 TheGrayNobleman is acknowledged by some
Unique Rep: 65
Trader Rating: 0
Default

Hey Chris,

I was trying to go through your code but I noticed a LOT of commands were missing the beginning and closing brackets like
Code:
if (blah blah blah){...}
I fixed some of em but I'll have to go through the rest of the program to get those working. Just for next time if you could remember to format those in I would really appreciate it =3
__________________
(。◕‿‿◕。) (◕‿◕✿)
Basic GUIDE to keeping your computer/data protected.

System: snowRAZR
CPU
Q6600 Core 2 Quad 2.4 Ghz
Motherboard
Gigabyte EP45-UD3P
Memory
4 GB
Graphics Card
Sapphire ATI 4830
Hard Drive
320GB WD 7200 rpm
Power Supply
550W Corsair CMPSU-550VX
Case
XCLIO Windtunnel
OS
Windows 7 Professional/Windows XP 64 bit
Monitor
Samsung 19" Widescreen LCD
TheGrayNobleman is offline   Reply With Quote
Old 10-11-09   #6 (permalink)
Overclocker
 
intel ati

Join Date: May 2007
Location: Houston, Texas
Posts: 5,873

Rep: 226 mth91 is acknowledged by manymth91 is acknowledged by manymth91 is acknowledged by many
Unique Rep: 166
Trader Rating: 14
Default

Two words, GLOBAL VARIABLES. Gotta love C++
__________________
Quote:
Originally Posted by newbile View Post
i like dmc4, it runs pretty well too,but games are we talking about?
im not planning to play crysis because
its just gonna make me feel unsatisfied with my rig.

System: Rig
CPU
Q6600 3.6 GHz
Motherboard
MSI P6N SLI-FI
Memory
4GB (4x1GB) Crucial Ballistix DDR2-800
Graphics Card
Sapphire HD4850x2 2GB
Hard Drive
250 GB WD SATA 3.0Gb/s + 320GB Maxtor SATA 3.0Gb/s
Sound Card
Integrated
Power Supply
OCZ GameXStream 850W
Case
HAF 932
CPU cooling
Xigmatek HDT-S1283 w/ 120mm Ultra Kaze
GPU cooling
Dual MCW60's
OS
Windows 7 Ultimate
Monitor
Hanns-G HG-216DPO
mth91 is offline   Reply With Quote
Old 10-11-09   #7 (permalink)
PC Gamer
 
TheGrayNobleman's Avatar
 
intel ati

Join Date: Jun 2007
Location: Cali
Posts: 859

Rep: 70 TheGrayNobleman is acknowledged by some
Unique Rep: 65
Trader Rating: 0
Default

Here is what I was able to fix so far.

I also noticed that you forget to close a lot of functions (with the }) so if you could go through and make sure that everything is in brackets. Also, if you add some comments into the program so I can get a faint idea of what is going on that would really help. It is also somewhat helpful to add comments to the end of each of the brackets.

For example
Code:
} //end else
}//end function1
}//end main()
Also, just a suggestion, I would recommend using && or || rather than and or or because visual studio does not accept those commands.

Lastly, indenting the code so one can see the hierarchy of the if else statements would be awesome. If the program you are copying and pasting from does not work out so well you could try just uploading the cpp file or using a site like pastebin(.us?) to show us the code.

Once this stuff gets corrected I'll be more than happy to have another look at the code to see if I can get it working.

Code:
/***************************************************************
CSCI 240         Program 5     Fall 2009

Programmer: Chris Ebener
Section: 1
TA: ViKram Kumra
Date Due: 10/09/09

Purpose: The purpose of this program is to calculate whether it 
is cost effective for a company to round all monetary figures 
to the closest figure of 10 given the exact numbers from the user.
***************************************************************/
#include <iostream>
#include <iomanip>
#include <math.h>
#include <cmath>

double getAmount(double);
double roundAmount(double); 
double calcAverage_exact(double, int);
double calcAverage_round(int, int);
double calcStdDev_exact(double, double, int);
double calcStdDev_round(int, int, int);
double calcDiff(double, double);
using namespace std;
int main()
{
    double money;
    int round_money;
    double exact_sum = 0;
    double in_sum;
    int round_sum = 0;
    double exact_squares = 0;
    int round_squares;
    int count_money = 0;
    double sumsquares_exact = 0;
    int sumsquares_round = 0; 
    
    cout<< "\nEnter an amount (0 to quit):";
    cin>> money;
while(money > 0)
{
    count_money ++;
    exact_sum += money;
    money = getAmount(money);
    round_money = roundAmount(money);
    round_sum += round_money;
    exact_squares = money * money;
    sumsquares_exact += exact_squares;
    round_squares = round_money * round_money;
    sumsquares_round += round_squares;

cout<< "\nEnter an amount (0 to quit) :";
cin>> money;
}

cout<<setiosflags(ios::fixed|ios::showpoint)<<setprecision(2);

double average_exact;
double stddev_exact;
double prct_dif;
int average_round;
int stddev_round;

average_exact = calcAverage_exact(sumsquares_exact, count_money);
average_round = calcAverage_round(sumsquares_round, count_money);
stddev_exact = calcStdDev_exact(exact_sum, sumsquares_exact, count_money);
stddev_round = calcStdDev_round(sumsquares_round, count_money);
prct_dif = calcDiff(exact_sum, round_sum);

if(average_exact == -1 or average_round == -1)
{
cout<<"not enough values to calculate the average";
}
if(stddev_exact == -1 || stddev_round == -1)
{
cout<<"not enough values to calculate the standard deviation";
}
else
{
 cout<<"\nCalculation     Exact       Round";
 cout<<"\n--------------------------------------";

 cout<<"\nSum:"
               <<setw(17)
               <<average_exact
               <<setw(12)
               <<average_round;  
                      
cout<<"\nAverage:"
                  <<setw(13)
                  <<prct_dif
                  <<setw(12)
                  <<prct_dif;

cout<<"\nStd Dev:"
                  <<setw(13)
                  <<stddev_exact
                  <<setw(12)
                  <<stddev_round;
}

if (prct_dif <= 2)
{
   cout<<"\nIts cost effective!\n";

   system ("pause");
   return 0;
}

else
{
    cout<<"\nIts not cost effective!\n";
    
    system ("pause");
    return 0;
}

// Function 1
double getAmount(double money)
{
if (money > 0)
{
      return money;
}     
else
if (money < 0)
{
      cout<<"\nPlease enter a valid number";
      cin>>money;
      return money;
}

else
{
      return 0;
}
}

// Function 2

double roundAmount(double money)
{ 
       double in_sum;
       int round_money;
       in_sum = (money + 5) / 10;
       round_money = in_sum * 10;
       return round_money;
}
       
// Function 3.1

double calcAverage_exact(double exact_sum, int count_money)
{
       double average_exact;
       if (count_money > 1)       
       {
       average_exact = exact_sum / count_money ;
       return average_exact;;
       }
       else
	   {
       return -1;
	   }
}

// Function 3.2

double calcAverage_round(int round_sum, int count_money)
{
       double average_round;
       if (count_money > 1)       
       {
       average_round = round_sum / count_money;
       return average_round;
       }
       else
	   {
       return -1;
	   }
}

// Function 4.1

double calcStdDev_exact(double exact_sum, double sumsquares_exact, int count_money)
{
       double stddev_exact;
       if (count_money > 1)
       {
        stddev_exact = sqrt((sumsquares_exact - (exact_sum * exact_sum / count_money))/(count_money - 1));
        return stddev_exact;
       }           
       else
       return -1;
}

//Function 4.2

double calcStdDev_round(int round_sum, int sumsquares_round, int count_money)
{
       int stddev_round;
       if (count_money > 1)
       {
        stddev_round = sqrt((sumsquares_round - (round_sum * round_sum / count_money))/(count_money - 1));
        return stddev_round;
       }           
       else
	   {
       return -1;
	   }
}

//Function 5

double calcDiff(double exact_sum, double round_sum)
{
       double prct_dif;
       prct_dif = ((fabs(exact_sum - round_sum))/exact_sum) * 100;
       return prct_dif;
}
return 0;
}
__________________
(。◕‿‿◕。) (◕‿◕✿)
Basic GUIDE to keeping your computer/data protected.

System: snowRAZR
CPU
Q6600 Core 2 Quad 2.4 Ghz
Motherboard
Gigabyte EP45-UD3P
Memory
4 GB
Graphics Card
Sapphire ATI 4830
Hard Drive
320GB WD 7200 rpm
Power Supply
550W Corsair CMPSU-550VX
Case
XCLIO Windtunnel
OS
Windows 7 Professional/Windows XP 64 bit
Monitor
Samsung 19" Widescreen LCD
TheGrayNobleman is offline   Reply With Quote
Old 10-11-09   #8 (permalink)
PC Gamer
 
TheGrayNobleman's Avatar
 
intel ati

Join Date: Jun 2007
Location: Cali
Posts: 859

Rep: 70 TheGrayNobleman is acknowledged by some
Unique Rep: 65
Trader Rating: 0
Default

Quote:
Originally Posted by mth91 View Post
Two words, GLOBAL VARIABLES. Gotta love C++
Easy now but I would not recommend using them. Look at my "We lost our programming virginity" thread (I started it) to see a lot of reasons why you shouldn't use them.
__________________
(。◕‿‿◕。) (◕‿◕✿)
Basic GUIDE to keeping your computer/data protected.

System: snowRAZR
CPU
Q6600 Core 2 Quad 2.4 Ghz
Motherboard
Gigabyte EP45-UD3P
Memory
4 GB
Graphics Card
Sapphire ATI 4830
Hard Drive
320GB WD 7200 rpm
Power Supply
550W Corsair CMPSU-550VX
Case
XCLIO Windtunnel
OS
Windows 7 Professional/Windows XP 64 bit
Monitor
Samsung 19" Widescreen LCD
TheGrayNobleman is offline   Reply With Quote
Old 10-11-09   #9 (permalink)
Folding Fanatic
 
tofunater's Avatar
 
intel nvidia

Join Date: Sep 2006
Location: Dekalb, IL
Posts: 2,444

Rep: 200 tofunater is acknowledged by manytofunater is acknowledged by manytofunater is acknowledged by many
Unique Rep: 173
Folding Team Rank: 292
Trader Rating: 24
Default

I apologize for the formatting, I'll get to work on line documentation. As for end brackets, I'm not sure what you mean, the program compiles and runs just fine. Mostly I was hoping that you would look over the math portion to see if the results seemed normal.
edit: oh you mean after single line code statements. Technically I'm allowed to run single command lines without brackets, but it is probably a good idea to get into the habit of including them after every decision statement.
__________________

Quote:
Originally Posted by iandh View Post
People like this know deep down inside that they are absolutely worthless, so they must constantly come up with new ways to give themselves worth, otherwise they may be tempted to end it all one day by OD'ing on Care-Bears marathons.

System: Hedonism, Stanford Style
CPU
i7 920 D0
Motherboard
Asus P6T6 WS revolution
Memory
6 gigs G-skill
Graphics Card
Tri-sli 260's
Hard Drive
620aaks
Sound Card
on board
Power Supply
Zalman 850
Case
hardwood techstation(soon)
CPU cooling
GTZ/bix 360/355 (soon)
GPU cooling
water (soon)
OS
Vista 64
Monitor
22" Samsung 225BW
Overclock.net - 2009 Chimp Challenge Champions

Last edited by tofunater : 10-11-09 at 10:31 PM
tofunater is offline I fold for Overclock.net   Reply With Quote
Old 10-11-09   #10 (permalink)
The Dapper Swindler
 
nathris's Avatar
 
intel ati

Join Date: Sep 2007
Location: Canada
Posts: 7,126

Rep: 494 nathris is a proven membernathris is a proven membernathris is a proven membernathris is a proven membernathris is a proven member
Unique Rep: 381
Folding Team Rank: 1016
Hardware Reviews: 1
Trader Rating: 0
Default

Quote:
Originally Posted by TheGrayNobleman View Post
Hey Chris,

I was trying to go through your code but I noticed a LOT of commands were missing the beginning and closing brackets like
Code:
if (blah blah blah){...}
I fixed some of em but I'll have to go through the rest of the program to get those working. Just for next time if you could remember to format those in I would really appreciate it =3
If its just one statement you don't need brackets.

@OP how did you even get that to compile? You certainly weren't using g++.

Code:
average_exact = calcAverage_exact(sumsquares_exact, count_money);
average_round = calcAverage_round(sumsquares_round, count_money);
stddev_exact = calcStdDev_exact(exact_sum, sumsquares_exact, count_money);
stddev_round = calcStdDev_round(exact_sum, sumsquares_round, count_money);
prct_dif = calcDiff(exact_sum, round_sum);

Add the term in red and as far as I can tell it runs.

Also, you're using a lot of double to int conversions, which is throwing a bunch of warning flags. Every time you want to convert a double to an int you have to put (int) in front of the variable. Its not that big of a deal, but it might screw with your data, and you'll probably lose marks for the warning flags.


Also either the code was copied wrong or your math is bad, because according to your program when you enter 1,2,3 the sum is 4.67, and the average is 250.00. The standard deviation seems right though.

System: The Possum
CPU
e8400 @ 4GHz (500x8)
Motherboard
P5Q Deluxe
Memory
4GB G.SKILL DDR2-1000
Graphics Card
XFX Radeon HD 4870 XXX (840/1078)
Hard Drive
WD6401AALS
Sound Card
X-Fi Platinum Fatal1ty Championship Gamer Edition
Power Supply
Corsair HX750W
Case
CM690
CPU cooling
Xigmatek HDT-S1283 w/XLF-F1253
GPU cooling
Accelero Twin Turbo
OS
Windows 7 Professional
Monitor
Samsung 2443BW 24"

Last edited by nathris : 10-11-09 at 10:37 PM
nathris is offline I fold for Overclock.net Overclocked Account   Reply With Quote
Reply


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools



All times are GMT -5. The time now is 08:25 AM.


Overclock.net is a Carbon Neutral Site Creative Commons License

Terms of Service / Forum Rules | Privacy Policy | DMCA Info | Advertising | Become an Official Vendor
Copyright © 2009 Shogun Interactive Development. Most rights reserved.
Page generated in 0.17398 seconds with 8 queries