← Back to topics
Topic

Period

t
turgond
Ne rade mi tp 4,9,10, da li bi mogao da dobijem makar jedan od njih , javlja sistemsku gresku ili memorijsko prekoracenje a ja pojma nemam zasto.

#include<stdio.h>
#include<string.h>
struct rep
{
int pocindex;
char niz[202];    
};

int br = 0;  int brrep = 0;

bool valja(char pom[], int index, char niz[])
{
int i;
for(i = index; i <= index+pom[0]-1&amp;&amp;i<=br; i++)
{

if(pom[i-index+1]!=niz[i]) return false;
}
if(i<=br) return valja(pom,index+pom[0],niz);
else
{
return true;    
}    
}

int main()
{
char C1,c2;
char niz[202];
scanf("%c%c",&amp;C1,&amp;c2);    

//scanf("%s",&amp;niz);
char ch;
br = 0;
ch = getchar();
while(ch>='0'&amp;&amp;ch<='9'&amp;&amp;br<=200) { br++; niz[br] = ch; ch = getchar();}

char pom[202];
rep ponavljanja[2];

for(int i = 1; i <= br; i++)
{//od svakog index-a pocnemo
for(int j = 1; j <= br - i + 1; j++)
{
pom[0] = j;   for(int k = 1; k <= j; k++) { pom[k] = niz[k+i-1]; }

if(valja(pom, i, niz))
{
if(brrep==0)
{
brrep++; ponavljanja[brrep].pocindex = i; for(int z = 0; z <= pom[0];z++) ponavljanja[brrep].niz[z] = pom[z];  
}
else
{
if(i+pom[0]-1<ponavljanja[1].pocindex+ponavljanja[1].niz[0]-1) { ponavljanja[brrep].pocindex = i; for(int z = 0; z <= pom[0];z++) ponavljanja[brrep].niz[z] = pom[z];  }  
else if(i+pom[0]-1==ponavljanja[1].pocindex+ponavljanja[1].niz[0]-1&amp;&amp;pom[0]<ponavljanja[1].niz[0]) { ponavljanja[brrep].pocindex = i; for(int z = 0; z <= pom[0];z++) ponavljanja[brrep].niz[z] = pom[z];  }
}
}      
}        
}

printf("%c%c",C1,',');
for(int i = 1; i < ponavljanja[1].pocindex; i++) printf("%c",niz[i]);
printf("(");
for(int i = 1; i <= ponavljanja[1].niz[0]; i++) printf("%c",ponavljanja[1].niz[i]);
printf(")");
getchar(); getchar();    
}
t
turgond
Sredio, sve ok , koristio sam niz charova kao intove :D :D