codice:
//Esercizio 23
#include <stdio.h>
#include<stdlib.h>
#define max 100
#include<string.h>
int confronto(int pos,char*p,char *q,int lenp,int lenq);
void stampa(char*p,int len);
int inserisci(char*p );
void trova(int pos,char*p,char *q,int &lenp,int lenq);
void elimina(int pos,char*p,char *q,int &lenp,int lenq);
int main ( void )
{
char str[max];
char pas[max];
int lenstr,lenpas,i,ind,pos=0;
lenstr=inserisci(str);
lenpas=inserisci(pas);
stampa(str,lenstr);
trova(pos,str,pas,lenstr,lenpas);
//for(i=ind;i<(ind+lenpas);i++)
//printf("%c",str[i]);
stampa(str,lenstr);
system("PAUSE");
return 0 ;
}
int inserisci (char *p){
int i=0;
printf("Inserire la striga\n");
gets(p);
i=strlen(p);
return i;
}
void stampa(char*p,int len){
int i;
printf("%s\n",p);
}
int confronto(int pos,char*p,char *q,int lenp,int lenq){
int j=0,h=0,k=0;
printf("\n%d\n",lenq);
while(pos<lenp){
if(p[pos]==q[j])
{
j++;
h++;
printf("%d",h);
}
else{
if(h==lenq){
printf("trovato in posizione %d\n",pos-h);
h=0;
return pos+1;}
else
{
h=0;
j=0;
}
}
pos++;
}
return 200;
}
void trova(int pos,char *p,char*q,int &lenp,int lenq){
int i;
i=0;
int posizioni[100];
while(pos<lenp-lenq){
pos=confronto(pos,p,q,lenp,lenq);
if(pos<100)elimina(pos,p,q,lenp,lenq);
posizioni[i]=pos;
}
}
void elimina(int pos, char *p, char *q, int &lenp, int lenq)
{
int i;
for(i=pos-lenq-1;i< lenp ; i++)
{
p[i]=p[i+lenq];
}
lenp=lenp-lenq;
}
grassie