Problem Set: C Structs

 

  1.    struct fraction
       {
          int numerator;
          int denominator;
       };
    
  2.    struct fraction third = {1, 3};
    
  3.    typedef struct fraction
       {
          int numerator;
          int denominator;
       } FRACTION;
    
  4.    FRACTION twothird;
       twothird.numerator = 2;
       twothird.denominator = 3;
    
  5.    printf("%d/%d", twothird.numerator, twothird.denominator);
    
  6.    void printfrac(FRACTION thefrac)
       {
          printf("%d/%d", thefrac.numerator, thefrac.denominator);
       }
    
  7.    FRACTION addfracs(FRACTION first, FRACTION second)
       {
          FRACTION sum;
          sum.denom = first.denominator * second.denominator;
          sum.numerator = first.numerator * second.denominator +
                          second.numerator * first.denominator;
          return sum;
       }
    
  8.    int main()
       {
          FRACTION one, two, sum;
          printf("Enter numerator and denominator");
          scanf("%d %d", &one.numerator, &one.denominator);
          printf("Enter numerator and denominator");
          scanf("%d %d", &two.numerator, &two.denominator);
    
          sum = addfracs(one, two);
          printf("The fractions are: ");
          printfrac(one);
          printf(" and ");
          printfrac(two);
          printf("\nThe sum is ");
          printfrac(sum);
       }
    
  9.    typedef struct hitter
       {
            char name[41];
            char team[41];
            int appearances;
            int walks;
            int hits;
       } HITTER;
    
  10.    void printHitter(HITTER hitter)
       {
          printf("\nName: %s\n", hitter.name);
          printf("Team: %s\n", hitter.team);
          printf("   appearances: %d\n", hitter.appearances);
          printf("   walks:       %d\n", hitter.walks);
          printf("   hits:        %d\n", hitter.hits);
       }
    
  11.    int battingAvg(HITTER hitter)
       {
         int avg = (float) hitter.hits / (hitter.appearances - hitter.walks) * 1000;
         return avg;
       }
    
  12.    void printTeam(HITTER hitter[], int size, char team[])
       {
          int i;
          for (i = 0 ; i < size ; i++)
             if (strcmp(hitter[i].team, team) == 0)
                printHitter(hitter[i]);
       }
    
  13.    int main(int argc, char *argv[])
       {
    
          HITTER players[5];
          char teamname[41];
          int i;
    
          // players+i or &players[i]
          // *(players+i) or players[i]
    
    
    
          for (i = 0 ; i < 5 ; i++) {
             printf("Name: ");
             gets(hitter.name);
             printf("Team: ");
             gets(hitter.team);
             printf("Plate Appearances: ");
             scanf("%d",&hitter.appearances);
             printf("Walks: ");
             scanf("%d",&hitter.walks);
             printf("Hits: ");
             scanf("%d",&hitter.hits);
             // read the newline left after reading the number of hits
             ch = getchar();
    
    
          for (i = 0 ; i < 5 ; i++)
          {
             printHitter(*(players+i));
             printf("Average: %d\n", battingAvg(*(players+i)));
          }
    
          printf("enter a team name: ");
          fgets(teamname, 41, stdin);
          printTeam(players, 5, teamname);
    
          return 0;
       }
    

Email Me | Office Hours | My Home Page | Department Home | MCC Home Page

© Copyright Emmi Schatz 2015