Generování úloh typu (Underscript[lim , x->±∞]) ((P(x))/(Q(x))), kde P(x) a Q(x) jsou polynomy

Tento notebook umožňuje vygenorovat úlohy typu uvedeného v nadpisu. Počet úloh, které se mají generovat, je uložen v proměnné pocetuloh. Úlohy se vypíší do tabulky, v jejímž řádku bude pocetulohnaradek úloh. Pod tabulku se zadáním se vygeneruje také tabulka s výsledky: na řádku bude pocetreseninaradek výsledků. Počet opakování právě popsaného bloku je uveden v proměnné pocetopakovani.

Maximální stupeň polynomů je uložen v proměnné maxstupenpolynomu.

Postup při tisku vygenerovaných úloh:
	nastavit proměnnou velikostpisma na hodnotu 5 (na obrazovce bude výpis malý, na papíru bude ale dobře čitelný);
	označit výstupní buňku, která obsahuje dílčí buňky s jednotlivými částmi výstupu (nadpis, zadání úloh, nadpis, řešení úloh, oddělovací čára);
	pravým tlačítkem myši vyvolat lokální nabídku a zvolit MergeCells - buňky se spojí do jedné;
	nechat označenou právě vytvořenou buňku a v hlavním menu zvolit File - Print Selection ... a vygenerované úlohy vytisknout.

© Jaroslav Reichl, 2010

pocetuloh=50;
pocetopakovani=3;

pocetulohnaradek=5(*6*);
pocetreseninaradek=10;

dolnimezvyberu=-10;
hornimezvyberu=10;
maxstupenpolynomu=5;

barva=Black;
velikostpisma=10;
okzadani=False;

(*While[okzadani==False,
pocetuloh=Input["Zadejte počet úloh, které chcete vygenerovat: "];
If[IntegerQ[pocetuloh]∧pocetuloh>0,
okzadani=True]]*)
koefpolynomu1=Table[Null,{i,0,maxstupenpolynomu,1}];
koefpolynomu2=Table[Null,{i,0,maxstupenpolynomu,1}];
For[k=1,k≤pocetopakovani,k++,
zadani=Table[Null,{i,0,pocetuloh+pocetulohnaradek,1}];
reseni=Table[Null,{i,0,pocetuloh+pocetreseninaradek,1}];
Table[zadani[[i]]="",{i,0,pocetuloh+pocetulohnaradek,1}];
Table[reseni[[i]]="",{i,0,pocetuloh+pocetreseninaradek,1}];

zadani[[0]]=ToString[Style["Zadání úloh",barva,1.25velikostpisma,FontFamily->Times,Bold,Underlined],StandardForm];
reseni[[0]]=ToString[Style["Řešení úloh",barva,1.25velikostpisma,FontFamily->Times,Bold,Underlined],StandardForm];
Table[{
vypiscisla=StringJoin[ToString[Style[ToString[i],barva,velikostpisma,FontFamily->Times,Bold],StandardForm],ToString[Style[".  ",barva,velikostpisma,FontFamily->Times,Bold],StandardForm]],
bodlimity=RandomChoice[{-1,1}] ∞,
stupen1=maxstupenpolynomu-RandomInteger[{0,3}],
stupen2=maxstupenpolynomu-RandomInteger[{0,3}],
Table[koefpolynomu1[[j]]=RandomInteger[{dolnimezvyberu,hornimezvyberu}],{j,0,stupen1,1}],
Table[koefpolynomu2[[j]]=RandomInteger[{dolnimezvyberu,hornimezvyberu}],{j,0,stupen2,1}],
fcecitatel[x_]:=(∑_(j=0)^stupen1)koefpolynomu1[[j]](x^j),
fcejmenovatel[x_]:=(∑_(j=0)^stupen2)koefpolynomu2[[j]](x^j),
zadani[[i]]=StringJoin[vypiscisla,ToString[Underscript[Style["lim",barva,velikostpisma,FontFamily->Times],Style[StringJoin["x->",ToString[bodlimity,StandardForm]],barva,0.6velikostpisma,FontFamily->Times]],StandardForm]," ",ToString[Style[ToString[DisplayForm[FractionBox[fcecitatel[x],fcejmenovatel[x]]],TraditionalForm],barva,velikostpisma,FontFamily->Times],StandardForm]],
reseni[[i]]=
StringJoin[vypiscisla,ToString[Style[ToString[Limit[((fcecitatel[x])/(fcejmenovatel[x])),x->bodlimity],StandardForm],barva,velikostpisma,FontFamily->Times],StandardForm]]},
{i,1,pocetuloh,1}];
If[Mod[pocetuloh,pocetulohnaradek]≠0,
korekceradku=1,
korekceradku=0];
If[Mod[pocetuloh,pocetreseninaradek]≠0,
korekceradku=1,
korekceradku=0];
tabulkazadani=TableForm[
Table[
Table[zadani[[(j-1)pocetulohnaradek+i]],{i,1,pocetulohnaradek,1}],{j,1,IntegerPart[(pocetuloh/pocetulohnaradek)]+korekceradku,1}],
TableSpacing->{1,3}];
tabulkavysledky=TableForm[
Table[
Table[reseni[[(j-1)pocetreseninaradek+i]],{i,1,pocetreseninaradek,1}],{j,1,IntegerPart[(pocetuloh/pocetreseninaradek)]+korekceradku,1}],
TableSpacing->{1,3}];
Print[zadani[[0]]];
Print[tabulkazadani];
Print[reseni[[0]]];
Print[tabulkavysledky];
Print[StringJoin@@Table["_",{90}]]]