Zdravím, jsem začínající "programátor" a potřeboval bych pomoc s vyřešením jedné úlohy, konkrétně této.
Můj program vypadá takto
#include <stdio.h>
int zjisti_pocet_kroku(int j){
int marker=0;
do
{
marker++;
if(j%2==0) j=j/2;
else j=j*3+1;
}
while(j!=1);
return marker;
}
int main(void)
{
FILE*input;
FILE*output;
input=fopen("vstup.txt","r");
output=fopen("vystup.txt","a");
int pocet,i,j;
fscanf(input,"%d",&pocet);
char dolni[pocet];
char horni[pocet];
char maximalni_pocet_kroku[pocet];
char nejvyssi_cislo[pocet];
for(i=1;i<=pocet;i++)
{
fscanf(input,"%d",&dolni[i]);
fscanf(input,"%d",&horni[i]);
for(j=dolni[i];j<=horni[i];j++)
{
if(zjisti_pocet_kroku(j) > maximalni_pocet_kroku[i])
{
maximalni_pocet_kroku[i]=zjisti_pocet_kroku(j);
nejvyssi_cislo[i]=j;
}
}
fprintf(output,"%d %d\n",maximalni_pocet_kroku[i],nejvyssi_cislo[i]);
}
}
Pokud je v souboru 10 intervalů, program funguje bez problémů a můj výstup se označí jako správné řešení.
Druhý vstup obsahuje 100 intervalů a když spustím program, přestane reagovat a do souboru vystup.txt se zapíší pouze čísla -3 -3. Kde je chyba ? Jsem začátečník, tudíž o samotném jazyku C moc nevím a pokouším se programovat metodou pokus-omyl.
Děkuji