Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 188
  • Last Modified:

array loop w/ testing

how do I loop and test to get the schedule?
I need to test for weekday & print user time or --- ---
 array filled with:
her  0    730    530
her  1    730    530
her  5    730    530
him  2    800    600
him  3    800    600
him  6    730    530

sched[user][weekday][start][end]
 
output like:
her 730 530 730 530 ----- ----- ----- ----- ----- ----- 800 600 ----- -----
him ----- ----- ----- ----- 800 600 800 600 ----- ----- ----- ----- 730 530
my first guess  -
while (user)
if(weekday==1){mon=sched[][][start++];mon_end=sched[end];
else cout<< ' --- --- ';}
if(weekday==2){tue=sched[][][start++];tue_end=sched[end];
else cout<< ' --- --- '';}
cout << mon << mon_end << tue << tue_end;
0
jarmstro12
Asked:
jarmstro12
1 Solution
 
DanRollinsCommented:
THe trick is to cycle throught eh schedule and collect the start/end for each day.  This does that and will make your boss happy.

Note:  You did not provide enough details for me to work out how you are currently storing the data.  So I created a structure (SchedDataRec) that appears to match your array layout.

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

typedef struct {
     char szUser[10];
     int  nWeekday;
     int  nStart;
     int  nEnd;
} SchedDataRec;

//------------- prefill test data.  Your array will be variable length,
//------------- This is just to satisfy the criteria of the question.

SchedDataRec arSched[6] =
{
     { "her", 0, 730, 530 },
     { "her", 1, 730, 530 },
     { "her", 5, 730, 530 },
     { "him", 2, 800, 600 },
     { "him", 3, 800, 600 },
     { "him", 6, 730, 530 }
};
int gnRecCnt= 6;  // hard-coded for test purposes

void OutputForUser( char* szUser );

void main()
{
     printf("        ---Sun--- ---Mon--- ---Tue--- ---Wed--- ---Thu--- ---Fri--- ---Sat--- \n");
     printf("Name    From   To From   To From   To From   To From   To From   To From   To \n");
     printf("------- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- \n");

     OutputForUser( "him" );    
     OutputForUser( "her" );    
}

void OutputForUser( char* szUser )
{
     int nFrom[7];
     int nTo  [7];
     int j;

     for (j=0; j<7; j++ ) {
          nFrom[j]= nTo[j]= -1;
     }
     for ( j=0; j< gnRecCnt; j++ ) {
          if ( strcmp( szUser, arSched[j].szUser ) == 0 ) {
               nFrom[ arSched[j].nWeekday ] = arSched[j].nStart;
               nTo  [ arSched[j].nWeekday ] = arSched[j].nEnd;
          }
     }
     printf("%-7s ", szUser );

     for ( j=0; j< 7; j++ ) {
          if ( nFrom[j] == -1 ) printf( "---- " );
          else                  printf( "%04d ", nFrom[j] );

          if ( nTo[j]   == -1 ) printf( "---- " );
          else                  printf( "%04d ", nTo[j] );
     }
     printf("\n" );

}

-- Dan
0
 
jarmstro12Author Commented:
it works and its what I asked for
0

Featured Post

New feature and membership benefit!

New feature! Upgrade and increase expert visibility of your issues with Priority Questions.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now