Ciao a tutti. Da poco mi sono avvicinato al linguaggio C e vorrei avere un aiuto riguardo ad esso. Ho scritto un programma che prende in input due vettori A e B di int e verifica se la sequenza di numeri in B è contenuta in A. Ho usato i puntatori per memorizzare i vettori.
L'idea della funzione controllo() era di confrontare A[a+b] con B[a] con a e b inizialmente 0. Parto con b=0 e incremento a. Nell'incrementare, appena vedo che all' a-esimo passo A[a+0] è diverso da B[a] mi fermo e pongo b=1 e rinizio ad incrementare a partendo da a=0. (a lo incremento fino a VN2 che è la lunghezza del vettore).
Ho usato più while, però dopo aver inserito i vettori, credo mi entri in un loop perchè non stampa a schermo nulla. Per come ho capito gli while prima dovrebbe lavorare su quelli più interni e poi su quelli più esterni. Correggetemi se sbaglio. Ci sono anche degli if else. Potrbbe essere lì il problema?
Grazie.
Questo è il programma:
#include<stdio.h>
#include<stdlib.h>
#define TRUE 1
#define FALSE 0
int controllo(int *V1,int *V2,int VN1,int VN2, int *ptrfound);
int main(int *A1, int *A2, int N1, int N2)
{
int count;
int found;
printf("Inserisci lunghezza A1");
scanf("%d",&N1);
printf("Inserisci lunghezza A2");
scanf("%d",&N2);
A1=(int *)malloc(N1*sizeof(int));
A2=(int *)malloc(N2*sizeof(int));
if(N2>N1) {printf("Impossibile verificare. Lunghezza di A2 maggiore di A1");
found=FALSE;
system("PAUSE");
return found;}
else{
printf("Inserisci il vettore A1");
for(count=0;count<N1;count++)
{
scanf("%d",&A1[count]);}
printf("Inserisci il vettore A2");
for(count=0;count<N2;count++)
{
scanf("%d",&A2[count]);}
}
controllo(A1,A2,N1,N2,&found);
system("PAUSE");
return found;
}
int controllo(int *V1,int *V2,int VN1,int VN2, int *ptrfound)
{
int blocco;
int found;
int esci;
int a;
int b;
a=0;
b=0;
blocco=FALSE;
esci=FALSE;
while((b<=(VN1-VN2)) && (esci==FALSE))
{
while((a<VN2) && (blocco==FALSE))
{
while(V1[a+b]!=V2[a])
{ a=a++;
if(a=VN2-1){printf("Ok, fine");
*ptrfound=TRUE;
return *ptrfound;}
}
blocco=TRUE;
}
if(blocco==TRUE)
{
a=0;
b=b++;
}
else
esci=TRUE;
}
if(blocco==FALSE)
{
printf("Ok");
*ptrfound=TRUE;
return *ptrfound;
}
else
printf("No");
}