1

構造体employeeData(hours)の各配列の3番目のパラメーターを入力します。

以下のように「従業員xの時間を入力してください」と尋ねて、時間セクションへの手動入力を促したいと思います。しかし、それは機能していないようです。

void Get_input (long id_number[], float hours[], int num_empl)
  {
  /*Local Variable Declaration */

int i; /* Variable used in loop counter */

  /* Gets number of employee hours and stores them in an array. */

for (i = 0; i < num_empl; ++i)
  {
    printf("\nEnter the numbers of hours worked by employee # %06li: ",
            employeeData[i].id_number);
    scanf ("%f", &employeeData[i].hours);
  }

 printf("\n\n");
 }  

これが私のこれまでの完全な「プログラム」です。

/*Define and Includes */

 #include <stdio.h>
 #include <cstdlib> 

 /* Define Constants */
#define NUM_EMPL 5
#define OVERTIME_RATE 1.5f
#define STD_WORK_WEEK 40f

/* Define a global structure to pass employee data between functions  */

 struct employee
 {
 long  id_number;
 float wage;
 float hours;
 float overtime;
 float gross;
 };

 /* define prototypes here for each function except main */

 /************************************************************************/
 /*                      Function: Get_input                             */
 /*                                                                      */
 /*  Purpose:    Obtains input from user, the number of hours worked per */
 /*              employee and stores the results in an array that is     */
 /*              passed back to the calling program by reference.        */ 
 /*                                                                      */
 /*  Parameters: clockNum- Array of employee clock numbers.              */
 /*              hours- Array of number of hours worked by an employee   */
 /*              size- Number of employees to process                    */
 /*                                                                      */
 /*  Returns:    Nothing, since 'clockNum' & 'hours' arrays are passed by */
 /*              reference.                                              */
 /************************************************************************/

 void Get_input (long id_number[], float hours[], int num_empl)
 {
  /*Local Variable Declaration */

int i; /* Variable used in loop counter */

  /* Gets number of employee hours and stores them in an array. */

for (i = 0; i < num_empl; ++i)
  {
    printf("\nEnter the numbers of hours worked by employee # %06li: ",
            employeeData[i].id_number);
    scanf ("%f", &employeeData[i].hours);
  }

  printf("\n\n");
  }  

  void Output_results_screen (struct employee [ ], int num_empl);


  /*************************************************************************
  **                      Function: Output_results_screen                  
  **                                                                       
  **  Purpose:    Outputs to screen in a table format the following        
  **                       information about an employee:  Clock, Wage,    
  **                       Hours, Overtime, and Gross Pay.                
  **                                                                       
  **  Parameters:  employeeData - an array of structures containing        
  **                              employee information                     
  **               size - number of employees to process                   
  **                                                                       
  **  Returns:    Nothing (void)                                           
  **                                                                       
   *************************************************************************/

  void Output_results_screen ( struct employee employeeData[], int num_empl )
  {
    int i;    /* loop index */

         printf ("-----------------------------------------\n");   /*Print Header To Screen */
         printf ("Clock# \t Wage \t Hours \t OT \t Gross\n");
         printf ("-----------------------------------------\n");

    /* printf information about each employee */
    for (i = 0; i < num_empl ; ++i)
    {


         printf("%06li    %5.2f    %4.1f   %4.1f   %8.2f    \n", 
                    employeeData[i].id_number, employeeData[i].wage, employeeData[i].hours, 
                    employeeData[i].overtime, employeeData[i].gross);
    } /* for */

    } /* Output_results_screen */


    int main ()
     {


    /* Variable Declaration and initialization */
    struct employee employeeData[NUM_EMPL] = {
    { 98401, 10.60 },
    { 526488, 9.75 },
    { 765349, 10.50 },
    { 34645, 12.25 },
    { 127615, 8.35 }
    };  


     /* Call various functions needed to reading, calculating, and printing as needed */

        /* Function call to get input from user. */
Get_input (id_number, hours, NUM_EMPL);

   /* Function call to output results to the screen in table format. */
    Output_results_screen (employeeData, NUM_EMPL);
    system("pause");  
    return(0);  /* success */

    } /* main */
4

1 に答える 1

2

employeeDataはローカルでmainあり、内部には表示されないGetInput()ため、コンパイラエラーが発生していると思います。

その配列をすべての関数の外側に配置すると(つまり、グローバルに)、機能するはずです。または、配列へのポインタをに渡してGetInput、適切なレコードに読み込むことができるようにします。

于 2013-03-04T03:10:16.610 に答える