I have an array of 32 characters. I want to find the 2 numbers in my array as in the output, it will write the index of the first 2 found and then add up how many 2s there are until it finds 1. how can I do this? For example:
i: 0 val: 1
i: 1 val: 1
i: 2 val: 2
i: 3 val: 2
i: 4 val: 2
i: 5 val: 2
i: 6 val: 2
i: 7 val: 1
i: 8 val: 1
i: 9 val: 1
i: 10 val: 2
i: 11 val: 2
i: 12 val: 2
i: 13 val: 2
i: 14 val: 2
i: 15 val: 1
i: 16 val: 1
i: 17 val: 1
i: 18 val: 1
i: 19 val: 1
i: 20 val: 1
i: 21 val: 1
i: 22 val: 1
i: 23 val: 1
i: 24 val: 1
i: 25 val: 1
i: 26 val: 1
i: 27 val: 1
i: 28 val: 1
i: 29 val: 2
i: 30 val: 2
i: 31 val: 2
The output I want is:
2 5
10 5
29 3
CodePudding user response:
#include <stdio.h>
#include <stdlib.h>
int
main(int argc,char* argv[])
{
char a[] = {
1, 1, 2, 2, 2, 2, 2, 1,
1, 1, 2, 2, 2, 2, 2, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 2, 2, 2
};
int count = 0;
for( unsigned i = 0; i < sizeof a / sizeof *a 1; i ){
if( i < sizeof a / sizeof *a && a[i] == 2 ){
if( count == 0 ){
printf("%d", i);
}
} else {
if( count ){
printf(" %d\n", count);
}
count = 0;
}
}
}
