Link to home
Start Free TrialLog in
Avatar of --TripWire--
--TripWire--

asked on

Changing program execution - Algorithm Tweaks

Hello,

I developed the program below with help from another thread.

http://www.experts-exchange.com/Programming/Languages/C/Q_26855857.html

Now, I only want the program to calculate the likelihood of a team winning the first game in THREE game series...AFTER another three game series.

In other words...I want the program to scan through the results and detect all instances of two back-to-back 3-game series, and calculate results ONLY for those events.

Please let me know if any further clarification is needed.
Thanks

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

int main()
{
   char str[1024],
        prevTeam[6] = "N/A";

   char *Date, *Team, *Score, *Line, *overUnder;

   int first = 1,
     second = 0,
     test = 0,
     column = 0,
     count = 0,
     wins = 0,
     losses = 0,
     winAfterSeries = 0, 
     lossAfterSeries = 0;

   FILE *fp;

   fp = fopen("c:\\odds.txt", "r");

   if(fp != NULL)
   {
     while(fgets(str, sizeof(str), fp) != NULL)
     {
       Date = strtok(str, ",");
       Team = strtok(NULL, ",");
       Score = strtok(NULL, ",");
       Line = strtok(NULL, ",");
       overUnder = strtok(NULL, ",");

       if(strcmp(Team, prevTeam) == 0)
         count++;   //team is the same as prev line
       else
       {
         if(count)
         {
           if(*Score == 'W')
             winAfterSeries++;
           else
             lossAfterSeries++;
           count = 0;
         }
         strcpy(prevTeam, Team);
       }
     }
   }
   printf(" First game of series won %d\n", winAfterSeries);
   printf(" First game of series lost %d\n", lossAfterSeries);

   scanf("Waiting %d", second);
   fclose(fp);

   return 0;
}

Open in new window

Avatar of Kent Olsen
Kent Olsen
Flag of United States of America image

Ok.  :)

1.  We're going to add two variables.  (Actually, we'll just add one and rename one so that the program reads easier.)

  int PreviousSeriesLength = 0;
  int SeriesLength = 0;

2.  Everywhere you have the variable "count", replace it with "SeriesLength".

3.  Line 40 will test SeriesLength (you should have already changed the name in step 2.)  
     But instead of testing for non-zero, test for it being equal to 3.  (perhaps great than or equal to 3 in case of a 4-game series?)

4.  After Line 41 (the bracket), test for PreviousSeriesLength > 3 (or >= 3).

5.  After Line 48, set PreviousSeriesLength to SeriesLength.


That should just about do it.  (I suggest a couple of print statements along the way to make sure that it's doing what you want.)  :)


Good Luck,
Kent



 
Avatar of --TripWire--
--TripWire--

ASKER

Thanks Kent.  But I placed a print statement (that's not printing) shown below.

if(SeriesLength == 3)
         {
			 printf("Prev series: %d\tSeries: %d", PreviousSeriesLength, SeriesLength);
			if(PreviousSeriesLength == 3)
			{
				puts("if win");
				if(*Score == 'W')
					winAfterSeries++;
				else
					lossAfterSeries++;
           
				SeriesLength = 0;
			}
         }

Open in new window

Hi Trip,

Move the printf up above the if() statement so that you can see every line go past.  Oh, and the line probably needs a newline.

                     printf("Prev series: %d\tSeries: %d\n", PreviousSeriesLength, SeriesLength);


Kent

I had some print statements above that if condition. - Everything prints above that line.
That's a good sign that the if() statement is always false.  That is, the program never hits that if() statement when SeriesLength == 3.

Can you post the entire program?  


Kent
Sure, no problem Kent.

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

int main()
{
   char str[1024],
        prevTeam[6] = "N/A";

   char *Date, *Team, *Score, *Line, *overUnder;

   int first = 1,
     second = 0,
     test = 0,
     column = 0,
     SeriesLength = 0,
     wins = 0,
     losses = 0,
     winAfterSeries = 0, 
     lossAfterSeries = 0,
	 PreviousSeriesLength = 0;

   FILE *fp;

   fp = fopen("c:\\odds.txt", "r");

   if(fp != NULL)
   {
     while(fgets(str, sizeof(str), fp) != NULL)
     {
       Date = strtok(str, ",");
       Team = strtok(NULL, ",");
       Score = strtok(NULL, ",");
       Line = strtok(NULL, ",");
       overUnder = strtok(NULL, ",");

       if(strcmp(Team, prevTeam) == 0)
         SeriesLength++;   //team is the same as prev line
       else
       {
         if(SeriesLength == 3)
         {
			 printf("Prev series: %d\tSeries: %d", PreviousSeriesLength, SeriesLength);
			if(PreviousSeriesLength == 3)
			{
				if(*Score == 'W')
					winAfterSeries++;
				else
					lossAfterSeries++;
           
				SeriesLength = 0;
			}
         }
         strcpy(prevTeam, Team);
		 PreviousSeriesLength = SeriesLength;
       }
     }
   }
   printf(" First game of series won %d\n", winAfterSeries);
   printf(" First game of series lost %d\n", lossAfterSeries);

   scanf("Waiting %d", second);
   fclose(fp);

   return 0;
}

Open in new window

Ok.

After line 55, we need to reset the SeriesLength variable.  Since we're now on the first line of a new series, setting it to 1 is appropriate.  It's being reset at line 51, which isn't correct --  either in that spot or value.  :)

  SeriesLength = 1;

If that doesn't do it, move the print statement at line 43 after line 40.


I've made the adjustment and reposted below.


Kent

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

int main()
{
   char str[1024],
        prevTeam[6] = "N/A";

   char *Date, *Team, *Score, *Line, *overUnder;

   int first = 1,
     second = 0,
     test = 0,
     column = 0,
     SeriesLength = 0,
     wins = 0,
     losses = 0,
     winAfterSeries = 0, 
     lossAfterSeries = 0,
	 PreviousSeriesLength = 0;

   FILE *fp;

   fp = fopen("c:\\odds.txt", "r");

   if(fp != NULL)
   {
     while(fgets(str, sizeof(str), fp) != NULL)
     {
       Date = strtok(str, ",");
       Team = strtok(NULL, ",");
       Score = strtok(NULL, ",");
       Line = strtok(NULL, ",");
       overUnder = strtok(NULL, ",");

       if(strcmp(Team, prevTeam) == 0)
         SeriesLength++;   //team is the same as prev line
       else
       {
         if(SeriesLength == 3)
         {
			printf("Prev series: %d\tSeries: %d", PreviousSeriesLength, SeriesLength);
			if(PreviousSeriesLength == 3)
			{
				if(*Score == 'W')
					winAfterSeries++;
				else
					lossAfterSeries++;
			}
         }
        strcpy(prevTeam, Team);
	PreviousSeriesLength = SeriesLength;
	SeriesLength = 1;
       }
     }
   }
   printf(" First game of series won %d\n", winAfterSeries);
   printf(" First game of series lost %d\n", lossAfterSeries);

   scanf("Waiting %d", second);
   fclose(fp);

   return 0;
}

Open in new window

Ok good stuff.  I'm now getting numbers coming up.  But, I don't think it's counting my results properly.
I'll show you an example.  I got 1 game won and 1 game lost for the data below.


10/03/2010,@ BOS,L 4-8,L 112,O 9.5 111
10/02/2010,@ BOS,L 6-7,L 102,O 9.5 -101
10/02/2010,@ BOS,W 6-5,W -134,O 9.5 111
09/29/10,@ TOR,L 4-8,L 105,O 9 -116
09/28/10,@ TOR,W 6-1,W -181,U 8.5 -105
09/27/10,@ TOR,L 5-7,L -124,O 9.5 -114
09/26/10,BOS,W 4-3,W -183,U 9.5 -108
09/25/10,BOS,L 3-7,L 109,O 9 -105
09/24/10,BOS,L 8-10,L -175,O 9.5 -105
09/23/10,TB,L 3-10,L -136,O 8 106
09/22/10,TB,L 2-7,L -137,U 10.5 -121
09/21/10,TB,W 8-3,W -133,O 9.5 -105
09/20/10,TB,W 8-6,W -119,O 9.5 -120
09/19/10,@ BAL,L 3-4,L -164,U 9 -111
09/18/10,@ BAL,W 11-3,W -184,O 8 110
09/17/10,@ BAL,W 4-3,W -149,U 9.5 -116
09/15/10,@ TB,L 3-4,L 107,U 9.5 -115
09/14/10,@ TB,W 8-7,W 123,O 8.5 -107
09/13/10,@ TB,L 0-1,L 115,U 7.5 -117
09/12/2010,@ TEX,L 1-4,L 161,U 9.5 -112
09/11/2010,@ TEX,L 6-7,L -103,O 10.5 101
09/10/2010,@ TEX,L 5-6,L 129,O 9.5 -105
09/08/2010,BAL,W 3-2,W -243,U 10 106
09/07/2010,BAL,L 2-6,L -385,U 9 -109
09/06/2010,BAL,L 3-4,L -195,U 9.5 -119
After line 40, insert this line:

  printf("Prev %d - %s \tseries: %s - %d\n", prevTeam, PreviousSeriesLength, Team, SeriesLength);


That should show us what we're missing.

Also, line 61 should pass &second.



Kent
Thanks.  Almost there.  
There's a small mistake in your print line, you inverted the first two variables.

It's counting all the right results, except for the last series in the set.

Example
With this data it's saying Won: 1 / Lost: 2 - it should be Lost 3.

10/03/2010,@ BOS,L 4-8,L 112,O 9.5 111
10/02/2010,@ BOS,L 6-7,L 102,O 9.5 -101
10/02/2010,@ BOS,W 6-5,W -134,O 9.5 111
09/29/10,@ TOR,L 4-8,L 105,O 9 -116
09/28/10,@ TOR,W 6-1,W -181,U 8.5 -105
09/27/10,@ TOR,L 5-7,L -124,O 9.5 -114
09/26/10,BOS,W 4-3,W -183,U 9.5 -108
09/25/10,BOS,L 3-7,L 109,O 9 -105
09/24/10,BOS,L 8-10,L -175,O 9.5 -105
09/23/10,TB,L 3-10,L -136,O 8 106
09/22/10,TB,L 2-7,L -137,U 10.5 -121
09/21/10,TB,W 8-3,W -133,O 9.5 -105
09/20/10,TB,W 8-6,W -119,O 9.5 -120
09/19/10,@ BAL,L 3-4,L -164,U 9 -111
09/18/10,@ BAL,W 11-3,W -184,O 8 110
09/17/10,@ BAL,W 4-3,W -149,U 9.5 -116
09/15/10,@ TB,L 3-4,L 107,U 9.5 -115
09/14/10,@ TB,W 8-7,W 123,O 8.5 -107
09/13/10,@ TB,L 0-1,L 115,U 7.5 -117
09/12/2010,@ TEX,L 1-4,L 161,U 9.5 -112
09/11/2010,@ TEX,L 6-7,L -103,O 10.5 101
09/10/2010,@ TEX,L 5-6,L 129,O 9.5 -105

----

By the way.  You can ignore that print statement.  The value of second is irrelevant.  It's just there to stop the program from terminating before I get a chance to read the output.
The scanf() is fine for that purpose.  You're actually passing the value in second instead of the address of second.  Depending on this value, you might get a memory access violation.  :(


Note that the while loop exits as soon as it reaches EOF in the data file.  The program needs to perform the checks of SeriesLength and PreviousSeriesLength after reaching EOF to pick up the last series.

Three ways to do this.

  1.  Copy the test and put it after the while() loop.
  2.  Put the test in a function, then call the function from within the while loop and again after it.
  3.  Change the while loop to a do/while loop.  Depending on your compiler version/options, this may not be possible.

I've made the change for option 3 and posted it below.


Kent

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

int main()
{
  char str[1024],
       prevTeam[6] = "N/A";

  char *Date, *Team, *Score, *Line, *overUnder;

  int first = 1,
  second = 0,
  test = 0,
  column = 0,
  SeriesLength = 0,
  wins = 0,
  losses = 0,
  winAfterSeries = 0, 
  lossAfterSeries = 0,
  PreviousSeriesLength = 0;

  FILE *fp;

  fp = fopen("c:\\odds.txt", "r");

  if(fp != NULL)
  {
    do
    {
      Date = strtok(str, ",");
      Team = strtok(NULL, ",");
      Score = strtok(NULL, ",");
      Line = strtok(NULL, ",");
      overUnder = strtok(NULL, ",");

      if(strcmp(Team, prevTeam) == 0)
        SeriesLength++;   //team is the same as prev line
      else
      {
        if(SeriesLength == 3)
        {
          printf("Prev series: %d\tSeries: %d", PreviousSeriesLength, SeriesLength);
          if(PreviousSeriesLength == 3)
          {
            if(*Score == 'W')
              winAfterSeries++;
            else
              lossAfterSeries++;
          }
        }
        strcpy(prevTeam, Team);
        PreviousSeriesLength = SeriesLength;
        SeriesLength = 1;
      }
    } while(fgets(str, sizeof(str), fp) != NULL);
  }
  printf(" First game of series won %d\n", winAfterSeries);
  printf(" First game of series lost %d\n", lossAfterSeries);

  scanf("Waiting %d", &second);
  fclose(fp);

  return 0;
}

Open in new window

In fixes 1 and 2, I'm not really sure what you mean by test.  I only have test as a declared and unused variable.

With #3 I get this error:  Unhandled exception at 0x5f6fd440 (msvcr100d.dll) in OddsLaptopTest.exe: 0xC0000005: Access violation reading location 0x00000000.
SOLUTION
Avatar of sarabande
sarabande
Flag of Luxembourg image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
so you crash at

if(*Score == 'W')

Open in new window


when Score is NULL what is very likely when you enter the loop initially with not-initialised str.

you also crash at

strcpy(prevTeam, Team);

Open in new window


when Team is NULL.

Sara

 
Hi Trip,

Sarabande is essentially correct, though there is a bit more work to do....

winAfterSeries and lossAfterSeries can't be incremented until we know that both series are 3 game affairs.  The Won/Lost status of the first game of each series needs to be captured separately from these counters.  Only when the program has confirmed that both series are 3 games can the correct counter be incremented.  (After all, that's why we're making program changes.....)

And Sara's especially correct about testing for NULL.  Some of the C functions do that for you, others do not.  Any place that a pointer is dereferenced must be checked.  A blank line is also a potential issue, but we'll assume that the data file format isn't an issue for now.


Kent



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

int main()
{
  char str[1024] = "",
       prevTeam[6] = "N/A",
       *SourceLine;

  char *Date, *Team, *Score, *Line, *overUnder;

  int first = 1,
      second = 0,
      test = 0,
      column = 0,
      SeriesLength = 0,
      wins = 0,
      losses = 0,
      winAfterSeries = 0,
      lossAfterSeries = 0,
      FirstGameIsWin = 0,
      PreviousSeriesLength = 0;

  FILE *fp;

  fp = fopen("c:\\odds.txt", "r");

  if(fp != NULL)
  {
    do
    {
      SourceLine = fgets(str, sizeof(str), fp);
      if (SourceLine)
      {
        Date = strtok(str, ",");
        Team = strtok(NULL, ",");
        Score = strtok(NULL, ",");
        Line = strtok(NULL, ",");
        overUnder = strtok(NULL, ",");
      }
      else
        Team = "n/a";  // Change "new" team

      if (Team && strcmp (Team, prevTeam) == 0)
        SeriesLength++;
      else
      {
        if (SeriesLength == 3)
        {
          printf ("Prev series: %d - %s\tSeries: %d - %s\n",
            PreviousSeriesLength, prevTeam, SeriesLength, Team);
          if (PreviousSeriesLength == 3)
          {
            if (FirstGameIsWin)
              winAfterSeries++;
            else
              lossAfterSeries++;
          }
        }
        FirstGameIsWin = (Score && *Score == 'W');
        strcpy (prevTeam, Team ? Team : "n/a");
        PreviousSeriesLength = SeriesLength;
        SeriesLength = 1;
      }
    } while(SourceLine);
  }
  printf(" First game of series won %d\n", winAfterSeries);
  printf(" First game of series lost %d\n", lossAfterSeries);

  scanf("Waiting %d", &second);
  fclose(fp);

  return 0;
}

Open in new window

Thanks to both of you.  But it's not counting the last loss with the sample data below.

10/03/2010,@ BOS,L 4-8,L 112,O 9.5 111
10/02/2010,@ BOS,L 6-7,L 102,O 9.5 -101
10/02/2010,@ BOS,W 6-5,W -134,O 9.5 111
09/29/10,@ TOR,L 4-8,L 105,O 9 -116
09/28/10,@ TOR,W 6-1,W -181,U 8.5 -105
09/27/10,@ TOR,L 5-7,L -124,O 9.5 -114
09/26/10,BOS,W 4-3,W -183,U 9.5 -108
09/25/10,BOS,L 3-7,L 109,O 9 -105
09/24/10,BOS,L 8-10,L -175,O 9.5 -105
09/23/10,TB,L 3-10,L -136,O 8 106
09/22/10,TB,L 2-7,L -137,U 10.5 -121
09/21/10,TB,W 8-3,W -133,O 9.5 -105
09/20/10,TB,W 8-6,W -119,O 9.5 -120
09/19/10,@ BAL,L 3-4,L -164,U 9 -111
09/18/10,@ BAL,W 11-3,W -184,O 8 110
09/17/10,@ BAL,W 4-3,W -149,U 9.5 -116
09/15/10,@ TB,L 3-4,L 107,U 9.5 -115
09/14/10,@ TB,W 8-7,W 123,O 8.5 -107
09/13/10,@ TB,L 0-1,L 115,U 7.5 -117
09/12/2010,@ TEX,L 1-4,L 161,U 9.5 -112
09/11/2010,@ TEX,L 6-7,L -103,O 10.5 101
09/10/2010,@ TEX,L 5-6,L 129,O 9.5 -105
09/08/2010,BAL,W 3-2,W -243,U 10 106
09/07/2010,BAL,L 2-6,L -385,U 9 -109
09/06/2010,BAL,L 3-4,L -195,U 9.5 -119
09/05/2010,TOR,L 3-7,L -164,O 9.5 111
09/04/2010,TOR,W 7-5,W -191,O 10 -102
09/03/2010,TOR,W 7-3,W -135,O 9 -109
09/02/2010,OAK,W 5-0,W -208,U 8 -114
09/01/2010,OAK,W 4-3,W -133,U 9.5 -119
08/31/10,OAK,W 9-3,W -203,O 9 -105
08/30/10,OAK,W 11-5,W -125,O 9.5 104
08/29/10,@ CHW,W 2-1,W 116,U 9.5 106
08/28/10,@ CHW,W 12-9,W -134,O 8.5 -104
08/27/10,@ CHW,L 4-9,L -137,O 10 -110
08/25/10,@ TOR,L 3-6,L -133,P 9 -
08/24/10,@ TOR,W 11-5,W -104,O 10 -101
08/23/10,@ TOR,L 2-3,L 120,U 9 -118
08/22/10,SEA,W 10-0,W -315,O 8.5 -108
08/21/10,SEA,W 9-5,W -203,O 9 -118
08/20/10,SEA,L 0-6,L -145,U 8 105
08/19/10,DET,W 11-5,W -235,O 9.5 -107
08/18/10,DET,W 9-5,W -173,O 9.5 -101
08/17/10,DET,W 6-2,W -177,O 7.5 -101
08/16/10,DET,L 1-3,L -174,U 9 109
08/15/10,@ KC,L 0-1,L -210,U 10 -115
08/14/10,@ KC,W 8-3,W -236,O 9.5 -109
08/13/10,@ KC,L 3-4,L -182,U 10 107
08/12/2010,@ KC,W 4-3,W -240,U 9 -105
Also, I probably should have asked this earlier, but I'll increase my points accordingly.  ;)
If I only want to pay attention to my result IF (and only if) the first 3 game series was a sweep.

Could I just tweak this code? or would that require major reconstruction of code?
I'm thinking just an adjustment of the condition on line 55, right?
A small adjustment to handle the case of a sweep.  Actually, only a small adjustment could let you handle all of these cases simultaneously.  :)

The last loss "that counts" is 8/25 @Toronto.


Kent
I'm sorry - I mean to say that it's counting one too many losses.
Hi Trip.

I don't see it.....

I changed the code slightly so that messages could be better displayed.  It's posted below.

Note last column (wins, losses).  It changes on the first game of a series and only when both the series just checked and the previous series are 3 gamers.

It looks right to me, or am I missing something?

Kent

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

int main()
{
  char str[1024] = "",
       prevTeam[6] = "N/A",
       currTeam[6] = "N/A",
       *SourceLine;

  char *Date, *Team, *Score, *Line, *overUnder;

  int first = 1,
      second = 0,
      test = 0,
      column = 0,
      SeriesLength = 0,
      wins = 0,
      losses = 0,
      winAfterSeries = 0,
      lossAfterSeries = 0,
      FirstGameIsWin = 0,
      PreviousSeriesLength = 0;

  FILE *fp;

  fp = fopen("c:\\odds.txt", "r");

  if(fp != NULL)
  {
    do
    {
      SourceLine = fgets(str, sizeof(str), fp);
      if (SourceLine)
      {
        Date = strtok(str, ",");
        Team = strtok(NULL, ",");
        Score = strtok(NULL, ",");
        Line = strtok(NULL, ",");
        overUnder = strtok(NULL, ",");
      }
      else
        Team = "n/a";  // Change "new" team

      if (Team && strcmp (Team, currTeam) == 0)
        SeriesLength++;
      else
      {
        if (SeriesLength == 3)
        {
          if (PreviousSeriesLength == 3)
          {
            if (FirstGameIsWin)
              winAfterSeries++;
            else
              lossAfterSeries++;
          }
        }
        FirstGameIsWin = (Score && *Score == 'W');
        strcpy (prevTeam, currTeam ? currTeam : "n/a");
        PreviousSeriesLength = SeriesLength;
        SeriesLength = 1;
        if (Team)
          strcpy (currTeam, Team);
      }
      printf ("%c %s\tPrev: %d - %s\tCurr: %d - %s\t%d,%d\n",
        Score ? *Score : '-', Team,
        PreviousSeriesLength, prevTeam, SeriesLength, currTeam,
        winAfterSeries, lossAfterSeries);
    } while(SourceLine);
  }
  printf(" First game of series won %d\n", winAfterSeries);
  printf(" First game of series lost %d\n", lossAfterSeries);

  scanf("Waiting %d", &second);
  fclose(fp);

  return 0;
}

Open in new window

Hmm.  It looks like it is right.  I'm sorry about that.  Perhaps my eyes are getting impatient.  :)


Ok - Just one more issue.  Any ideas on how to make it calculate only when the first series is a sweep?
(And by first series - I mean the first series in every comparison)

i.e. - I only care about the result of the 1st game in the 2nd series....when the 1st series is a sweep.
Yeah.  Just a couple of lines of code should do.

There's enough "stuff" going on that it may be time to consider changing the program to keep all of the rows in a table and just scan the table.


Kent
An array of char pointers then?
ASKER CERTIFIED SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
I'm still getting zeros.  In lines 48 and 65 (where you're using the AND operator)
are you sure that the return value is going to be the same as their comparatives?

Testing any variable (without a condition or comparator) tests the value for zero/non-zero.

  if (intvar)
    // value is non-zero
  else
    // value is zero


  if (pointervar)
    //  value is non-NULL
  else
    //  value is NULL


I got all zero on the last data that you posted, but the trace suggested that it should work fine when there is a sweep in a 3 game series.


Kent
Yeah, I know about non-conditional evaluations, I was just checking whether those particular lines were working properly.

I changed some of the series to sweeps, but still nothing.

10/03/2010,@ BOS,W 4-8,L 112,O 9.5 111
10/02/2010,@ BOS,W 6-7,L 102,O 9.5 -101
10/02/2010,@ BOS,W 6-5,W -134,O 9.5 111
09/29/10,@ TOR,W 4-8,L 105,O 9 -116
09/28/10,@ TOR,W 6-1,W -181,U 8.5 -105
09/27/10,@ TOR,W 5-7,L -124,O 9.5 -114
09/26/10,BOS,W 4-3,W -183,U 9.5 -108
09/25/10,BOS,L 3-7,L 109,O 9 -105
09/24/10,BOS,L 8-10,L -175,O 9.5 -105
09/23/10,TB,L 3-10,L -136,O 8 106
09/22/10,TB,L 2-7,L -137,U 10.5 -121
09/21/10,TB,W 8-3,W -133,O 9.5 -105
09/20/10,TB,W 8-6,W -119,O 9.5 -120
09/19/10,@ BAL,W 3-4,L -164,U 9 -111
09/18/10,@ BAL,W 11-3,W -184,O 8 110
09/17/10,@ BAL,W 4-3,W -149,U 9.5 -116
09/15/10,@ TB,L 3-4,L 107,U 9.5 -115
09/14/10,@ TB,W 8-7,W 123,O 8.5 -107
09/13/10,@ TB,L 0-1,L 115,U 7.5 -117
09/12/2010,@ TEX,W 1-4,L 161,U 9.5 -112
09/11/2010,@ TEX,L 6-7,L -103,O 10.5 101
09/10/2010,@ TEX,L 5-6,L 129,O 9.5 -105
09/08/2010,BAL,W 3-2,W -243,U 10 106
09/07/2010,BAL,L 2-6,L -385,U 9 -109
09/06/2010,BAL,L 3-4,L -195,U 9.5 -119
09/05/2010,TOR,L 3-7,L -164,O 9.5 111
09/04/2010,TOR,W 7-5,W -191,O 10 -102
09/03/2010,TOR,W 7-3,W -135,O 9 -109
09/02/2010,OAK,W 5-0,W -208,U 8 -114
09/01/2010,OAK,W 4-3,W -133,U 9.5 -119
08/31/10,OAK,W 9-3,W -203,O 9 -105
08/30/10,OAK,W 11-5,W -125,O 9.5 104
08/29/10,@ CHW,W 2-1,W 116,U 9.5 106
08/28/10,@ CHW,W 12-9,W -134,O 8.5 -104
08/27/10,@ CHW,L 4-9,L -137,O 10 -110
08/25/10,@ TOR,L 3-6,L -133,P 9 -
08/24/10,@ TOR,W 11-5,W -104,O 10 -101
08/23/10,@ TOR,L 2-3,L 120,U 9 -118
08/22/10,SEA,W 10-0,W -315,O 8.5 -108
08/21/10,SEA,W 9-5,W -203,O 9 -118
08/20/10,SEA,W 0-6,L -145,U 8 105
08/19/10,DET,W 11-5,W -235,O 9.5 -107
08/18/10,DET,W 9-5,W -173,O 9.5 -101
08/17/10,DET,W 6-2,W -177,O 7.5 -101
08/16/10,DET,L 1-3,L -174,U 9 109
08/15/10,@ KC,L 0-1,L -210,U 10 -115
08/14/10,@ KC,W 8-3,W -236,O 9.5 -109
08/13/10,@ KC,L 3-4,L -182,U 10 107
08/12/2010,@ KC,W 4-3,W -240,U 9 -105
Hi Trip,

I saved your data file and ran the program against it.  It shows 2 wins and 1 loss after sweeps.

I haven't change the program since last posting it.  Are you sure that you saved the data file to the correct place?


Kent
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Thanks so much Kent!  You were right about your previous code.
The newer version however, still gives me zeroes.
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Oh duh!  How could I miss that??? lol
I was so concerned with checking the changes, I forgot about functionality!

Anyways, I don't think SeriesList[..] is a modifiable value.  Wasn't it defined as const?

MAX_SERIES is a constant.  That's that maximum number of series that the program will track.  That could always be made dynamic, but that adds complexity to the program that I'll leave to you.  :)

SeriesList is just a list of pointers to series_t structures.


Kent
Thanks for all your help Kent, you're a life saver!