Pagini recente » Istoria paginii runda/stargold/clasament | Istoria paginii runda/temaichc/clasament | Cod sursa (job #2282524) | Istoria paginii runda/6657 | Cod sursa (job #1221488)
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
using namespace std;
int main ()
{
char *stringulet = (char *)malloc(100 * sizeof(char));
int stringuletIndex = 0;
int stringuletLength;
char littleChar;
char lastChar;
int index = -2;
int auxIndex;
int indexArray[1001];
int i = 0;
int j = 0;
int ok = 1;
int ok2 = 0;
FILE *infile;
FILE *outfile;
infile = fopen ("strmatch.in","r");
if (infile != NULL)
{
fscanf(infile, "%s", stringulet);
stringuletLength = strlen(stringulet);
while(fscanf(infile, "%c", &littleChar)!=EOF)
{
++index; //pozitia elementului
stringuletIndex = 0;
/*if(ok2 == 1)
{
littleChar = lastChar;
index--;
}
ok2 = 0;*/
if(littleChar == stringulet[stringuletIndex])
{
auxIndex = index;
ok = 1;
while(ok && stringuletIndex < stringuletLength - 1 )
{
fscanf(infile, "%c", &littleChar);
index++;
stringuletIndex++;
if(littleChar != stringulet[stringuletIndex])
{
ok = 0;
}
if(ok && (stringuletIndex == stringuletLength - 1))
{
if(i < 1000)
{
indexArray[i] = auxIndex;
}
i++;// numarul de pozitii
}
if( ok && ( littleChar == stringulet[0] ) )
{
stringuletIndex = 0;
auxIndex = index;
}
}
/*lastChar = littleChar;
ok2 = 1;*/
}
}
fclose(infile);
}
outfile = fopen ("strmatch.out","w");
if (outfile != NULL)
{
fprintf(outfile, "%d\n", i);
for(j = 0; j < i; j++ )
{
fprintf(outfile, "%d ", indexArray[j]);
}
fclose(outfile);
}
free(stringulet);
return 0;
}