Program Troubles

This is a discussion on Program Troubles within the C Programming forums, part of the General Programming Boards category; Im trying to make this program for class that compares to array that represent stock values on different days. The ...

  1. #1
    Registered User
    Join Date
    Mar 2007
    Posts
    19

    Program Troubles

    Im trying to make this program for class that compares to array that represent stock values on different days. The arrays are these two below...

    Code:
    float stock1[ ] =
    {34.25,40.50,36.50,40.00,
    30.25,30.25,35.50,36.00,
    34.25,37.00,34.00,35.00,
    36.25,34.25,40.50,41.50,
    41.50,40.00,36.50,34.50};
    
     float  stock2[ ] =
    {40.25,38.50,34.50,33.50,
    30.50,29.75,37.50,38.00,
    34.75,38.00,34.25,37.00,
    34.25,37.50,34.50,38.50,
    37.50,37.25,38.25,37.50};
    Theres four different reports that do a calculation (i.e. tally # of days stock 1 exceeds stock 2) then print out a report of the answers. The class is almost over and I have been doing very well but I am stumped on the third report.

    "Report 3: Compute the five-day moving average for all stocks and display these averages."

    So basically I have to make a loop calculating the average (stock0-4), then divide by 5, then assign it to an array value and repeat, but the 2nd loop totals stocks 1-5 and so on till its stock 16-20.

    So, onto my code at the moment. Right now I am almost positive that the code is right, but for some reason instead of printing ANY of the results, the program crashes. Ive been in the class for awhile now and I have close to a 100%, so I should be able to figure this out myself, but I am completely stumped. So heres the code, hopefully someone can help me out.

    Code:
    #include <stdio.h>
    #include <conio.h>
    #include <process.h>
    #include "util.h"
    #define MAX 20
    #define FIVEDAYAVG 5
    
    int main()
    {
    	int i=0, x=0;
    
    	int stock1Counter=0, stock2Counter=0, sameStockCounter=0; //Report1 Varibles
    
    	int stock1AvgCount=0, stock2AvgCount=0; //Report2 Varibles
    	double stock1Average=0, stock2Average=0, stock1Total=0, stock2Total=0;	//Report2 Varibles
    
    	double average=0;	//Report3 Varibles
    	int z=5, y=0;	//Report 3 Varibles
    	float fiveDayStock1[ ] = {0}, fiveDayStock2[ ] = {0}; //Report3 Varibles
    	
    	int fiveDay1Counter=0, fiveDay2Counter=0, sameFiveDayCounter=0;	//Report4 Varibles
    
    	float stock1[ ] = {34.25,40.50,36.50,40.00,30.25,30.25,35.50,36.00,34.25,37.00,34.00,35.00,36.25,34.25,40.50,41.50,41.50,40.00,36.50,34.50};
    	float stock2[ ] = {40.25,38.50,34.50,33.50,30.50,29.75,37.50,38.00,34.75,38.00,34.25,37.00,34.25,37.50,34.50,38.50,37.50,37.25,38.25,37.50};
    
    	//REPORT 1
    	for (i=0; i < MAX; i++)
    	{
    		if (stock1[i] > stock2[i])
    			stock1Counter++;
    		else if (stock2[i] > stock1[i])
    			stock2Counter++;
    		else 
    			sameStockCounter++;
    	}
    
    	//REPORT 2
    	for (i=0; i < MAX; i++)
    	{
    		stock1Total = (stock1Total + stock1[i]);
    		stock2Total = (stock2Total + stock2[i]);
    	}
    
    	stock1Average = stock1Total / MAX;
    	stock2Average = stock2Total / MAX;
    
    	for (i=0; i < MAX; i++)
    	{
    		if (stock1[i] > stock1Average)
    			stock1AvgCount++;
    		else if (stock2[i] > stock2Average)
    			stock2AvgCount++;
    	}
    
    	//REPORT 3
    	for (i=0; i<MAX; i++)
    	{
    		for (x=z-5; x<z; x++)
    			average = (average + stock1[x]);
    
    		average = (average / FIVEDAYAVG);
    		fiveDayStock1[i] = average;
                    average = 0; //clears average
    		z++;
    	}
    
    	z=5; //resets counter
    	average=0; //resets average
    
    	for (i=0; i<MAX; i++)
    	{
    		for (x=z-5; x<z; x++)
    			average = (average + stock2[x]);
    
    		average = (average / FIVEDAYAVG);
    		fiveDayStock2[i] = average;
                    average = 0; //clears average
    		z++;
    	}
    
    	//REPORT 4
    	for (i=0; i<MAX; i++)
    	{
    		if (fiveDayStock1[i] > fiveDayStock2[i])
    			fiveDay1Counter++;
    		else if (fiveDayStock2[i] > fiveDayStock1[i])
    			fiveDay2Counter++;
    		else
    			sameFiveDayCounter++;
    	}
    
    	//REPORT 1 RESULTS
    	printf("\nThe number of days on which stock 1 exceeds stock 2 is %d\n", stock1Counter);
    	printf("The number of days on which stock 2 exceeds stock 1 is %d\n", stock2Counter);
    	printf("The number of days on which both stocks are the same price is %d\n\n", sameStockCounter);
    
    	//REPORT 2 RESULTS
    	printf("\nThe average of stock 1 is %lf\n", stock1Average);
    	printf("The average of stock 2 is %lf\n", stock2Average);
    	printf("The number of times stock 1 exceeds the stock 1 average is %d\n", stock1AvgCount);
    	printf("The number of times stock 2 exceeds the stock 2 average is %d\n", stock2AvgCount);
    
    	//REPORT 3 RESULTS
    	printf("\n~~~STOCK 1 ~~~\n");
    	for (i=0; i<MAX; i++)
    		printf("Moving average #%d = %lf\n", i+1, fiveDayStock1[i]);
    	printf("\n~~~STOCK 2 ~~~\n");
    	for (i=0; i<MAX; i++)
    		printf("Moving average #%d = %lf\n", i+1, fiveDayStock2[i]);
    
    	//REPORT 4 RESULTS
    	printf("\nThe number of days stock 1's moving average exceeds stock 2's = %d\n", fiveDay1Counter);
    	printf("The number of days stock 2's moving average exceeds stock 1's = %d\n", fiveDay2Counter);
    	printf("The number of days stock 1 and stock 2's moving average was equal = %d\n", sameFiveDayCounter);
    
    	getch();
    
    	return 0;
    }
    In the report 3 calculations the outer for loop does the calculation 20 times and the inner loop does the adding of the 5 stocks, then computes the average and assigns it inside the outer for loop.

  2. #2
    ATH0 quzah's Avatar
    Join Date
    Oct 2001
    Posts
    14,826
    Code:
    for start is zero, end is four; end < total; start++, end++
        for x is start; x < end; x++
            sum them
        average them
        print average
    Something like that then?

    Quzah.
    Hope is the first step on the road to disappointment.

  3. #3
    Registered User
    Join Date
    Mar 2007
    Posts
    19
    Yeah thats what it is suppose to do, is that C code or pseudocode, or something else? I've never seen a for statement written like that.

    My main problem is though is that my program is outputting nothing when I run it, it just crashes, with that exact code I pasted.

  4. #4
    Registered User
    Join Date
    Mar 2005
    Location
    Mountaintop, Pa
    Posts
    1,059
    Change this
    Code:
    float fiveDayStock1[ ] = {0}, fiveDayStock2[ ] = {0}; //Report3 Varibles
    to this
    Code:
    float fiveDayStock1[MAX] = {0}, fiveDayStock2[MAX] = {0}; //Report3 Varibles

  5. #5
    Captain Crash brewbuck's Avatar
    Join Date
    Mar 2007
    Location
    Portland, OR
    Posts
    7,238
    Quote Originally Posted by dr0be View Post
    Code:
    #define FIVEDAYAVG 5
    This define is pointless. What are you going to do, change it to this?

    Code:
    #define FIVEDAYAVG 6
    Yeah, that sure enhances clarity... Right up there with gems like "#define TEN 14" Why not call it what it really is, which is WINDOW_SIZE or something like that? Sticking the number itself into the name completely negates the point of using the define.

  6. #6
    Registered User
    Join Date
    Mar 2007
    Posts
    19
    Quote Originally Posted by BobS0327 View Post
    Change this
    Code:
    float fiveDayStock1[ ] = {0}, fiveDayStock2[ ] = {0}; //Report3 Varibles
    to this
    Code:
    float fiveDayStock1[MAX] = {0}, fiveDayStock2[MAX] = {0}; //Report3 Varibles
    Changed just that line and the program went from not printing anything to completely working, thank you very much. My teacher said that in the reports you have to stop the program, then you hit enter (I know getch does this) and it clears the screen and prints the next report. I recall her saying something with .cls or something, can anyone suggest the easiest way to just clear the screen?

  7. #7
    Registered User
    Join Date
    Mar 2007
    Posts
    19
    Bump. Can anyone help me with cls function? Need to know how to clear screen.

  8. #8
    ATH0 quzah's Avatar
    Join Date
    Oct 2001
    Posts
    14,826
    Read the FAQ.


    Quzah.
    Hope is the first step on the road to disappointment.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. BOOKKEEPING PROGRAM, need help!
    By yabud in forum C Programming
    Replies: 3
    Last Post: 11-16-2006, 10:17 PM
  2. Can someome help me with a program please?
    By WinterInChicago in forum C++ Programming
    Replies: 3
    Last Post: 09-21-2006, 10:58 PM
  3. I need some help with my program please.
    By agentxx04 in forum C Programming
    Replies: 9
    Last Post: 09-26-2004, 07:51 AM
  4. Replies: 2
    Last Post: 05-10-2002, 04:16 PM
  5. My program, anyhelp
    By @licomb in forum C Programming
    Replies: 14
    Last Post: 08-14-2001, 10:04 PM

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21