Friday, September 23, 2011

WAP to find first n numbers of the fibonacci series


/*
  Name: WAP to find first n numbers of the fibonacci series
  Copyright: Paul Griffiths 2000
  Author: Parveen Malik
  Date: 23/09/11 01:56
  Description: Finds the first 'n' numbers in the Fibonacci sequence.
  'n' must be supplied as the sole command line argument,
  and must be between 3 and 47.
*/


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


int ParseCmdLine(int argc, char *argv[]);


int main(int argc, char * argv[]) {
    unsigned long f1 = 1, f2 = 1;
    int temp, i = 3;
    int n = ParseCmdLine(argc, argv);


    printf("First %d numbers in the Fibonacci sequence:\n\n", n);


    printf("%11lu%11lu", f1, f2);


    for ( i = 3; i <= n; ++i ) {
        temp = f2;
        f2 += f1;
        f1 = temp;


        printf("%11lu", f2);


        if ( i % 5 == 0 )
            putchar('\n');
    }
    putchar('\n');
    return EXIT_SUCCESS;
}




/*  Returns the integer specified on the command line  */


int ParseCmdLine(int argc, char *argv[]) {
    int n;
    char * endptr;


    if ( argc < 2 ) {
        fprintf(stderr, "You must supply an argument\n");
        exit(EXIT_FAILURE);
    }
    else if ( argc > 2 ) {
        fprintf(stderr, "You must only supply one argument\n");
        exit(EXIT_FAILURE);
    }


    n = strtol(argv[1], &endptr, 0);
    if ( *endptr ) {
        fprintf(stderr, "You must supply a whole number as an argument\n");
        exit(EXIT_FAILURE);
    }


    if ( n < 3 ) {
        fprintf(stderr, "You must supply a number greater than 2\n");
        exit(EXIT_FAILURE);
    }
    else if ( n > 47 ) {
        fprintf(stderr, "You must supply a number less than 48\n");
        exit(EXIT_FAILURE);
    }


    return n;


}

0 comments:

Post a Comment