0

I am hoping to compare two array and print two scores.

In the case below, should be 1 and 5 but I got 6488164 and 7536740. (as the first one only 7 is bigger than 4 and the next row is everything bigger)

Is it possible to compare a two-dimensional array with a single array and create an array with it? What did I do wrong or what should I do in order to do the comparison?

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

int 
main(int argc, char *argv[]) {
	int mm_avg[2][5] = {{1,2,3,7,4},{2,3,4,5,7}};
	int lt_avg[5]={1,2,3,4,5};
	int i, j, score[100];
	
	for (i=0; i<5; i++){
		for (j=0; j<2; j++){
			if(mm_avg[j][i]>lt_avg[i]){
					score[j]++;
			}
		}
	}
	
	for (j=0; j<2; j++){
		printf("%d\n", score[j]);
	}
	return 0;
}
	

2 Answers 2

1

The score array is not initialized, so all 100 values in the array are just whatever happens to be lying around in memory.

Try int i, j, score[100] = {0};. This will initialize all 100 values to 0.

Sign up to request clarification or add additional context in comments.

Comments

1

In C/C++, integers that are not initialized have an undefined value. Unlike say for instance, Java, which will assign a default value of 0 to an integer. In general it is good practice to always explicitly initialize your objects when declared.

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

main(int argc, char *argv[])
{
    int mm_avg[2][5] = {{1,2,3,7,4},{2,3,4,5,7}};
    int lt_avg[5]={1,2,3,4,5};
    int i, j, score[2];

    for(int ndx = 0; ndx < 2; ++ndx)
    {
        score[ndx] = 0;
    }

    for (i = 0; i < 5; ++i)
    {
        for (j = 0; j < 2; ++j)
        {
            if(mm_avg[j][i] > lt_avg[i])
            {
                    /*printf("%d\n", j);
                    printf("%s", "mm_avg: ");
                    printf("%d\n", mm_avg[j][i]);
                    printf("%s", "lt_avg: ");
                    printf("%d\n", lt_avg[i]);
                    */
                    score[j]++;
            }
        }
    }

    for (j=0; j<2; j++)
    {
        printf("%d\n", score[j]);
    }
    return 0;
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.