Ask Me Help Desk

Ask Me Help Desk (https://www.askmehelpdesk.com/forum.php)
-   C (https://www.askmehelpdesk.com/forumdisplay.php?f=438)
-   -   Meaning of these C programs (https://www.askmehelpdesk.com/showthread.php?t=110732)

  • Jul 17, 2007, 07:36 AM
    babykat
    Meaning of these C programs
    could someone please explain this program to me? I'm a beginner in C.

    Program #1:
    main ()
    {
    int I;
    int a[5] = {39,23,34,12,4};
    int b[5];

    I = 0;
    while (I < 5) {
    b[i] = a[4-i];
    I=i + 1;
    }

    I = 0;
    while (I<5) {
    a[i] = b[i];
    I = I + 1;
    }
    }


    Program #2:
    main()
    {
    int a[] = {10,20,30,5,15,25};
    int n = 6;
    int I, t;

    for (I = 0; I < n/2; I+=) {
    t = a[i];
    a[i] = a[n-i-1];
    a[n-i-1] = t;
    }
    }


    Could you please help me understand them, especially what each expression or command line means? Thanks.
  • Jul 17, 2007, 08:11 AM
    benn11
    main () // start of a new program
    {
    int i; // declaration of an integer "i"
    int a[5] = {39,23,34,12,4}; // declaration and initialization of an integer "a", which is an array
    int b[5]; // declaration of an integer "b", which is an array
  • Jul 17, 2007, 08:16 AM
    asterisk_man
    I will add many comments (way more than you would ever write in your own code)

    Program #1:
    Code:

    //define the function main which is the entry point into the program
    main ()
    {
    //define a variable i which is an integer
    int i;
    //define a variable a which is an array of 5 integers {39...4}
    int a[5] = {39,23,34,12,4};
    //define a variable b which is an array of 5 integers which have yet to be defined
    int b[5];

    //set i equal to 0
    i = 0;

    //continue to execute the statements inside the { } as long as the value of i is less than 5
    while (i < 5) {
    // set the ith element of the array b to the (4-i)th element of the array a
    b[i] = a[4-i];
    //set i equal to i + 1
    i=i + 1;
    }

    //set i equal to zero
    i = 0;
    //continue to execute the statements inside the { } as long as the value of i is less than 5
    while (i<5) {
    //set the ith element of the array a to the ith element of the array b
    a[i] = b[i];
    //set i equal to i + 1
    i = i + 1;
    }
    }

    in english:
    you start with a = {39,23,34,12,4}, this is a[0]==39, a[1]==23... a[4]==4
    you then set the ith element of b to the (4-i)th element of a
    so b[0]==a[4], b[1]=a[3],. b[4]=a[0]
    basically b is set to be the reverse order of a
    finally you put the values of b back into a so now a contains the same values it originally did but in the opposite order.

    This time I'll just comment what is less obvious.
    you have written "for (i = 0; i < n/2; i+=) {"
    but I assume you mean "for (i = 0; i < n/2; i+=2) {"
    Program #2:
    Code:

    main()
    {
    int a[] = {10,20,30,5,15,25};
    int n = 6;
    int i, t;

    //execute the contents of { } starting with i==0 and continuing while i < 3. each time through the loop increment by 2
    //i+=2 means i = i + 2
    for (i = 0; i < n/2; i+=2) {
    //t holds the ith element of a
    t = a[i];
    //a gets set to the (n-i-1)th element of a
    a[i] = a[n-i-1];
    //the (n-i-1)th element of a gets set to t
    a[n-i-1] = t;
    }
    }

    this code is doing the same as the first program. It is reversing the order of the elements of a. however, in this case the program uses a single integer t as a buffer instead of a buffer array.


    If you have any additional questions please ask!
  • Sep 3, 2007, 06:56 AM
    babykat
    Can you please add more details to the second program?
  • Nov 16, 2007, 12:47 AM
    Suddashil
    Your questions are too basic. Pl go through any C book available and you will get the answer

  • All times are GMT -7. The time now is 10:03 PM.