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

#define PrintInt(x) printf("%25s has the value %10d\n", #x, (x)) ;
#define PrintDbl(x) printf("%25s has the value %10.3f\n", #x, (x)) ;

void Problem3(void) {
    int    vi  = 6 ;
    char   uni = 'U' ;  /* ASCII code for 'U' is 85 */
    double pin = 3.1 ;
    PrintInt(uni + 2) ;
    PrintInt( (int)uni ) ;
    PrintDbl(  pin + vi ) ;
    PrintInt( ++uni ) ;
    uni = 'U' ;
    PrintInt( uni++ ) ;
    uni = 'U' ;
    PrintInt(0 * vi * vi) ;
    PrintDbl(0 * pin * pin) ;
    PrintInt(1 < 14) ;
    PrintInt(1 < 14 + 2 * 2) ;
    PrintInt(1 < 1) ;
    PrintInt(1 << 1) ;
    PrintDbl(3.0 * 0) ;
    PrintInt(3/2) ;
    PrintInt(3%2) ;
    PrintInt(0 && (1 || ~(0 && 1))) ;
    PrintInt(5 & 1) ;
    PrintInt(5 && 1) ;
    PrintInt(1 || 0) ;
    PrintInt(1 || 1000) ;
    PrintInt(5/10/2) ;
    PrintInt(5*2/10) ;
    PrintInt(5/2*10) ;
    PrintDbl(1.6 + 1.6) ;
    PrintDbl((int)1.6 + 1.6) ;
    PrintInt((int)1.6 + (int)1.6) ;
    PrintInt((int)(1.6 + 1.6)) ;
}

void Problem4(void) {
    int i, j ;

    j = 13 ;
    for (i=1; j>10; ++i) {
        printf("%d\n", i) ;
        j = j - 1 ;
    }

    for (i=0, j=1; i<10; i=i+j, j=j+2)
        printf("%d\n", i) ;


    i=12 ;
    while(i%2 == 0) {
        i =  i/2 ;
        printf("%d\n", i) ;
    }

    i = 0 ;
    while ((i=i+5)< 10)
        printf("%d\n", i) ;
}

struct Employee {
    double Salary ;
    char  *Name ;
    int Hours[7] ;
};

struct Employee Staff[30] ;

void Problem5(int k) {
    Staff[29].Hours[6] = 6 ;
    Staff[0].Salary = 3.5 ;
    Staff[k].Name = "George" ;
}

/* Problem 6 */
void PrintStar(int n) {
    int i ;
    for(i=0; i<n; ++i)
        putchar('*') ;
    putchar('\n') ;
}

int negateOdd(int *A, int N) {
    int i ;
    int numOdd ;
    for(i=0; i<N; ++i) {
        if (A[i]%2 != 0) {
            ++numOdd ;
            A[i] = -A[i] ;
        }
    }
    return numOdd ;
}

void Problem8(void) {
    if (fopen("ECE209.DAT") == NULL)
        puts("Unable to open ECE209.DAT\n") ;
}

/* Problem 9 */
struct Name {
    char LastName[25] ;
    char FirstName[15] ;
} ;

int SameName(struct Name *N1, struct Name *N2) {
    return strncmp(N1->LastName, N2->LastName, 25)
            && strncmp(N2->FirstName, N2->FirstName, 15) ;
};

void Problem10(void) {
    int numValid = 0 ;
    int numMissing = 0 ;
    int sum = 0 ;
    int done = 0 ;
    int num ;
    while (!done) {
        if (scanf("%d", &num) == 1) {
            sum = sum + num ;
            ++valid ;
        } else {
            int c = 0 ;
            int i ;
            for (i=0; i<4; ++i) {
                if (getchar() != '*')
                    done = 1 ;
            }
        }
    }

}

int main(int argc, char** argv) {
    Problem3() ;
    Problem4() ;
    return (EXIT_SUCCESS);
}

