434,985 Members | 2,877 Online + Ask a Question
Need help? Post your question and get tips & solutions from a community of 434,985 IT Pros & Developers. It's quick & easy.

Extracting arrays

 P: n/a How can I extract common elements of two number arrays into another array? // the following doesn't work for(k=0;k<10;k++) for(l=0;l<15;l++) if(p[k]==q[l]) {r[m]=p[k];++m;} Jun 15 '07 #1
7 Replies

 P: n/a In article <11**********************@i13g2000prf.googlegroups .com>, Umesh How can I extract common elements of two number arrays into anotherarray?// the following doesn't work for(k=0;k<10;k++) for(l=0;l<15;l++) if(p[k]==q[l]) {r[m]=p[k];++m;} What doesn't work about it? You need to show us a complete program. -- Richard -- "Consideration shall be given to the need for as many as 32 characters in some alphabets" - X3.4, 1963. Jun 15 '07 #2

 P: n/a "Umesh" writes: How can I extract common elements of two number arrays into another array? // the following doesn't work for(k=0;k<10;k++) for(l=0;l<15;l++) if(p[k]==q[l]) {r[m]=p[k];++m;} Congratulations Umesh! You finally figured out that the question belongs in the message. The code fragment you posted doesn't show any means of starting m at 0. Does the real code take care of that? Jun 15 '07 #3

 P: n/a On 15 Jun, 13:55, Umesh

 P: n/a gw****@aol.com writes: On 15 Jun, 13:55, Umesh How can I extract common elements of two number arrays into anotherarray?// the following doesn't work for(k=0;k<10;k++) for(l=0;l<15;l++) if(p[k]==q[l]) {r[m]=p[k];++m;} This code looks OK to me, as long as you set m to zero beforehand and r is big enough. The one snag I can see is that, if an element occurs more than once in a list, and at least once in the other, it may be selected in r more times than you want. One way round that might be to change the value in p to some sort of non-value (eg you could use 0, or -1, if this wasn't going to occur in the real data). An alternative might be to have another array to indicate whether the value in p had been "used" yet or not. It's up to you. That "other array" already exists (r). If I were forced to use this rather inefficient method, I'd write a "membership" function: int in(int x, int p[], int l) { /* Return 1 if x is equal to any element in p..p[l-1]; 0 otherwise */ int k; for (k = 0; k < l; k++) if (x == p[k]) return 1; return 0; } and then do something like: for (k = 0; k < sz1; k++) if (!in(p[k], r, m) && in(p[k], q, s2)) r[m++] = p[k]; A much better way, is to sort p and q and the do a sort of "anti-merge". That will be much faster for large arrays. -- Ben. Jun 15 '07 #5

 P: n/a Count no. of same elements in an number array and then display the result. Jun 16 '07 #6

 P: n/a On Jun 16, 7:34 pm, Umesh

 P: n/a Umesh wrote: Count no. of same elements in an number array and then display the result. I get `17`. -- Chris "DYOH" Dollin Hewlett-Packard Limited Cain Road, Bracknell, registered no: registered office: Berks RG12 1HN 690597 England Jun 18 '07 #8

This discussion thread is closed

Replies have been disabled for this discussion. 