Pagini recente » Cod sursa (job #2679416) | Cod sursa (job #1814965) | Cod sursa (job #3208327) | Cod sursa (job #1090221) | Cod sursa (job #1898410)
#include <stdio.h>
#include <string.h>
#define MAX_LINES 18
#define MAX_LINE_LENGTH 30001
#define MIN(a,b) a < b ? a : b
unsigned char lines[MAX_LINES][MAX_LINE_LENGTH];
unsigned char lineSize[MAX_LINES];
unsigned short numberOfLines;
unsigned short index1;
unsigned int overlaps[MAX_LINES][MAX_LINES];
void calculateOverlaps();
int main()
{
FILE *f = fopen( "adn.in", "r" );
FILE *fout = fopen( "adn.out", "w" );
fscanf(f,"%hu", &numberOfLines);
for(index1 = 0; index1 < numberOfLines; ++index1)
{
fscanf(f, "%s", lines[index1]);
lineSize[index1] = strlen(lines[index1]);
fprintf(fout, "%s", lines[index1]);
//printf("%s\n", lines[index1]);
}
calculateOverlaps();
for(index1 = 0; index1 < numberOfLines; ++index1)
{
fprintf(f, "%s", lines[index1]);
}
fclose(f);
fclose(fout);
return 0;
}
void calculateOverlaps()
{
unsigned short i=0,j=0;
for(; i < numberOfLines; ++i)
{
for(j = 0; j < numberOfLines; ++j)
{
if(i == j)
{
overlaps[i][j] = -2;
//continue;
}
else{
overlaps[i][j] = matchOverlap(lines[i], lines[j]);
}
//overlaps[j][i] = matchOverlap(lines[j], lines[i]);
//printf("%d ", overlaps[i][j]);
}
//printf("\n");
}
}
int matchOverlap(char const * const firstString, char const * const secondString)
{
int firstStringSize = strlen(firstString);
int secondStringSize = strlen(secondString);
int counter = 0;
int i=0;
for(; i< firstStringSize-1; i++)
{
if(memcmp(&firstString[i], secondString, MIN(firstStringSize-i, secondStringSize)) == 0)
{
//printf("%s %s %d\n", &firstString[i], secondString, MIN(firstStringSize-i-1, secondStringSize));
return i;
}
}
return -1;
}