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

/* Problem 1 */

void Problem1(void) {
    int i, j ;
    int m[3] ;
    int *p, *q ;
    i = 1 ;
    j = 2 ;
    m[0] = 3 ;
    m[1] = 4 ;
    m[2] = 5 ;
    p = &m[1] ;
    q = &i ;
    *p = *q ;
    printf("%d %d %d\n", m[0], m[1], m[2]) ;
    q = p ;
    ++p ;
    *q = j ;
    printf("%d %d %d\n", m[0], m[1], m[2]) ;
    ++*q ;
    m[0] = *p ;
    printf("%d %d %d\n", m[0], m[1], m[2]) ;
}

/* Problem 2 prototypes */
double Problem2Series(double R1, double R2) ;
double PRoblem2Parallel(double R1, double R2) ;

/* Problem 2 functions */
double Problem2Series(double R1, double R2) {
    return R1 + R2 ;
}
double Problem2Parallel(double R1, double R2) {
    return 1 / ( 1/R1 + 1/R2 ) ;
}

/* Problem 3 */
int Problem3(int argc, char** argv) {
    double R1, R2 ;
    puts("Enter two resistor values in ohms:") ;
    scanf("%lg%lg", &R1, &R2) ;
    if (R1 > R2) {
        double t ;
        t = R1 ;
        R1 = R2 ;
        R2 = t ;
    }
    puts("The possible resistances are") ;
    printf("	In parallel:       %5.0f\n", Problem2Parallel(R1,R2)) ;
    printf("	Smaller resistor:  %5.0f\n", R1) ;
    printf("	Larger resistor:   %5.0f\n", R2) ;
    printf("	In series:         %5.0f\n", Problem2Series(R1,R2)) ;
    return(EXIT_SUCCESS) ;
}

/* Problem 4 declarations */

double Problem4Decl[10] ;

double Problem4Init[5] = {109, 209, 1060, 1776, 2009} ;

/* Problem 5 */
double Problem5Package[1000] ;

void Problem5Filler(void) {
    int i ;
    for (i=0; i<1000; ++i)
        Problem5Package[i] = (i+1)*500 ;
}

/* Problem6 */
double Series(double *R, int N) {
    int i ;
    double retR = 0.0 ;
    for (i=0; i<N; ++i)
        retR = retR + R[i] ;
    return retR ;
}

/* Problem7 */
double Parallel(double *R, int N) {
    int i ;
    double retR = 0.0 ;
    for (i=0; i<N; ++i)
        retR = retR + 1/R[i] ;
    return 1/retR ;
}

/* Problem8 */
void Problem8(void) {
    int i ;
    for (i=1; i<= 10; i=i*i+1)
        printf("%d\n", i) ;

    for (i=1; i<10; i=i+3)
        if (i%2 && i%3==1)
            printf("%d\n", i) ;
}

int main(int argc, char** argv) {
    puts("Running problem 1") ;
    Problem1() ;
    puts("Running problem 3") ;
    Problem3(argc, argv) ;
    Problem5Filler() ;
    puts("Testing problems 4, 5, 6, 7") ;
    printf("Series   resistance for Problem 4 = %7.0f\n",
            Series(Problem4Init, 5)) ;
    printf("Parallel resistance for Problem 4 = %7.0f\n",
            Parallel(Problem4Init, 5)) ;
    printf("Series   resistance for Problem 5 = %7.0f\n",
            Series(Problem5Package, 1000)) ;
    printf("Parallel resistance for Problem 5 = %7.0f\n",
            Parallel(Problem5Package, 1000)) ;
    puts("Testing Problem 8") ;
    Problem8() ;
    return (EXIT_SUCCESS);
}

