简体   繁体   中英

Using 2D Arrays in C

Ok so I created a program that successfully creates a 2D array and stores random numbers in the array and determines the highest, lowest, and average of the random numbers created using arrays and for loop statements. However I have a feeling that something is incorrect with my code but cannot figure it out. I believe that it is something with the for loop statements I used.

Here is the code:

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

#define ROW 3
#define COLUMN 5

int main( void )
{

    int randnum_array [ROW] [COLUMN];
    int highrn = 0 , lowrn = 9999999 , total = 0 , nextvalue = 0;
    int r = 0 , c = 0 , lr = 0 , lc = 0 , hr = 0 , hc = 0;
    float average = 0.0;
    srandom ( (unsigned) time (NULL) ); 

    printf( "\n Welcome User, this program creates an array random numbers "
    "and stores them into each \n of the 11 elements of the rand_num "
    "array. The program then displays the \n highest, lowest, "
    "and average of the numbers created.\n\n" ) ;

    printf("   Contents of randnum_array:\n\n");

    for (r = 0; r < ROW ; r++)
    {
        for (c = 0; c < COLUMN ; c++)
        {
            nextvalue = random ( ) % 10001;
            printf("     Value in randnum_array row %d column %d is: %d\n", r+1 , c+1 , nextvalue);
            randnum_array [r] [c] = nextvalue;

            if (nextvalue > highrn) 
            {
                highrn = nextvalue;
                hr = r;
                hc = c;
            }

            if (nextvalue < lowrn) 
            {
                lowrn = nextvalue;
                lr = r;
                lc = c;
            }

            total = total + nextvalue;
        }
    }

    average = (float)total / (ROW * COLUMN);

    printf("\n   The lowest value is %d in row %d column %d.", lowrn , lr+1 ,
        lc+1 ) ;

    printf("\n   The highest value is %d in row %d column %d.", highrn , hr+1 , 
        hc+1) ;

    printf("\n   The average of all of the numbers in the randnum_array"
        " is: %-7.3f", average ) ;

    printf("\n\n Thank you for using this program\n\n" ) ;

    return ( 0 ) ;

}

This is the output:

 Welcome User.

 Contents of randnum_array:

 Value in randnum_array row 1 column 1 is: 2375
 Value in randnum_array row 1 column 2 is: 102
 Value in randnum_array row 1 column 3 is: 1754
 Value in randnum_array row 1 column 4 is: 6464
 Value in randnum_array row 1 column 5 is: 3237
 Value in randnum_array row 2 column 1 is: 3495
 Value in randnum_array row 2 column 2 is: 2221
 Value in randnum_array row 2 column 3 is: 5663
 Value in randnum_array row 2 column 4 is: 885
 Value in randnum_array row 2 column 5 is: 8442
 Value in randnum_array row 3 column 1 is: 4465
 Value in randnum_array row 3 column 2 is: 4561
 Value in randnum_array row 3 column 3 is: 9182
 Value in randnum_array row 3 column 4 is: 1781
 Value in randnum_array row 3 column 5 is: 7478

 The lowest value is 102 in row 1 column 2.
 The highest value is 9182 in row 3 column 3.
 The average of all of the numbers in the randnum_array is: 4140.333

 Thank you for using this program

Can anyone give me some advice as to what might be wrong with the code, or if it is fine as is. Everything functions correctly, but since I have never worked with 2D arrays before i'm not really too sure what I am doing.

Initialize values with 0, and in first iteration set values to first one with

int highrn = 0 , lowrn = 0;
for (r = 0; r < ROW ; r++)
    {
        for (c = 0; c < COLUMN ; c++)
        {
            nextvalue = random ( ) % 10001;
            printf("     Value in randnum_array row %d column %d is: %d\n", r+1 , c+1 , nextvalue);
            randnum_array [r] [c] = nextvalue;

            if( r==0 && c==0 ) {
                 hihgrn = lowrn = nextvalue;
                 hr = hc = lr = lc = 0;
            }
            else {
              // otherwise - perform your checks
            }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM