Cod sursa(job #1221489)

Utilizator GligaEugenConstantinGliga Eugen GligaEugenConstantin Data 20 august 2014 15:48:50
Problema Potrivirea sirurilor Scor 4
Compilator cpp Status done
Runda Arhiva educationala Marime 2.39 kb
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
using namespace std;




int main ()
{
    char *stringulet = (char *)malloc(255 * 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;
}