[RISOLTO]esercizio array [C]

di il
2 risposte

[RISOLTO]esercizio array [C]

Devo verificare quanti elementi in comune hanno due array ordinati (in ordine crescente) di n numeri distinti...

io ho scritto questo codice che al livello logico mi torna solo che come risultato mi da zero sempre anche quando sono due array che hanno molti elementi in comune:
#include <stdio.h>
int main() {
	int *a;
	int *b;
	int count=0;
	int x,y,i;
	int j;
	scanf ("%d",&x);
	a=(int*)malloc(x*sizeof(int));
	for (i=0;i<x;i++) {
		scanf("%d",&a[i]);
		if ((a[i]<=a[i-1]) && (i!=0)){
			i--;
		}
    }
	scanf ("%d",&y);
	b=(int*)malloc(y*sizeof(int));
	for (i=0;i<y;i++) {
		scanf("%d",&b[i]);
		if ((b[i]<=b[i-1]) && (i!=0)){
			i--;
		}
	}
	j=0;
	for (i=0;i<x;i++) {
		if (a[i]==b[j]) {
			count++;
			j++;
		}else if (a[i]>a[j]) {
			j++;
			i--;
		}
    }
	printf ("%d",count);
return 0;
}
so che avrei potuto fare un ciclo dentro un ciclo però deve impiegarci il meno possibile e deve essere di tempo lineare...
grazie in anticipo

2 Risposte

  • Re: [RISOLTO]esercizio array [C]

    Ciao, ho dato un'occhiata veloce quindi ti invito a controllare per sicurezza. A mio parere deve essere a>b[j], mentre tu hai scritto a>a[j}.
  • Re: [RISOLTO]esercizio array [C]

    Grande era quello l'errore me ne sono accorto dopo e mi sono dimenticato di cancellare il post....comunque grazie mille per la risposta
Devi accedere o registrarti per scrivere nel forum
2 risposte