PDA

Visualizza la versione completa : Dove sta l'errore?


Fight
05-02-2003, 16:23
Programma che conta il numero di volte in cui la stringa s contenuta in t. esempio stringa s = ciao; stringa t=cccciao; la stringa s contenuta 1 volta in t.
Mi urge un aiuto!! :cry: :cry: :cry:
questo il codice che ho scritto e che non funziona:cry: :cry:

#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>


int main()
{ char s[100],t[100];
int i,j,cont,again;
gets (s);
fflush(stdin);
gets (t);
i=0; j=0; cont=0;
while ((s[i]!='\0')&& (t[j]!='\0'))
{

if(s[i]==t[j])
{ again=again+1;
do{
i++;
j++;
}while ((s[i]!='\0')&&(t[j]!='\0') && (s[i]==t[j]));
if (s[i]=='\0')
{cont=cont+1;
i=0;
}
else
{j=again;
i=0;
}
}
else {
j++;
}

}
cout <<cont <<endl;




system("PAUSE");
return 0;
}

minoz
05-02-2003, 23:42
#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>

void main()
{
char s[100],t[100];
int i, j, cont, again, spostamento;

gets (s);
fflush(stdin);

gets (t);

i=0; j=0; cont=0; again=0; spostamento = 0;

//Ricavo la lunghezza di s
for( i=0; s[i]!=0; i++);

while(t[spostamento]!=0)
{
for ( j=0; (j<i)&&t[j]!=0; j++)
{
if( s[j]==t[j+spostamento]) again++;
}

if ((again)==i)
{
cont++;
}

spostamento+=i;
again = 0;
}

/*i=0; j=0; cont=0;

while ((s[i]!='\0')&& (t[j]!='\0'))
{

if(s[i]==t[j])
{
again=again+1;
do{
i++;
j++;
}while ((s[i]!='\0')&&(t[j]!='\0') && (s[i]==t[j]));
if (s[i]=='\0')
{
cont=cont+1;
i=0;
}
else
{
j=again;
i=0;
}
}
else
{
j++;
}

}*/
cout << cont << endl;


system("PAUSE");
}


In tanto che c'ero ti ho messo a posto anche questo... non prenderci l'abitudine...:nonono: :tongue:

Loading