Generování úloh na dělení dvou polynomů

Tento notebook umožňuje vygenorovat úlohy, které slouží pro procvičení dělení dvou polynomů.

Stupeň polynomu ve jmenovateli se náhodně generuje z celých čísel od minstupenjmenovatel po maxstupenjmenovatel. Stupeň polynomu v čitateli se určí jako součet vygenerovaného stupně polynomu ve jmenovali a náhodně vybraného rozdílu; tento rozdíl je přitom náhodně generován z celých čísel od 0 po maxrozdilstupnu.

Koeficienty polynomu se generují z celých čísel od dolnimezvyberu po hornimezvyberu.

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.

© Jaroslav Reichl, 2012

pocetuloh=20;
pocetopakovani=3;

pocetulohnaradek=3;
pocetreseninaradek=2;

minstupenjmenovatel=2;
maxstupenjmenovatel=5;
minstupencitatel=2;
maxrozdilstupnu=3;(*Nejvyšší rozdíl mezi stupněm polynomu v čitateli a jmenovateli. K náhodně vybranému stupni jmenovatele se nageneruje náhodně rozdíl stupňů polynomů čitatele a jmenovatele a přičte se ke stupni polynomu ve jmenovateli - tak získáme stupeň polynomu v čitateli.*)

dolnimezvyberu=-10;
hornimezvyberu=10;

barva=Black;
velikostpisma=17;
okzadani=False;

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]],

rozdilstupnu=RandomInteger[{0,maxrozdilstupnu}],
nmax2=RandomInteger[{minstupenjmenovatel,maxstupenjmenovatel}],
nmax1=nmax2+rozdilstupnu,

fcecitatel[x_]=Sum[(x^i) RandomInteger[{dolnimezvyberu,hornimezvyberu}],{i,0,nmax1,1}],
fcejmenovatel[x_]=Sum[(x^i) RandomInteger[{dolnimezvyberu,hornimezvyberu}],{i,0,nmax2,1}],

zadani[[i]]=StringJoin[vypiscisla," ",ToString[Style[ToString[DisplayForm[FractionBox[fcecitatel[x],fcejmenovatel[x]]],TraditionalForm],barva,velikostpisma,FontFamily->Times],StandardForm]],
reseni[[i]]=
StringJoin[vypiscisla,ToString[Style[ToString[PolynomialQuotient[fcecitatel[x],fcejmenovatel[x],x],TraditionalForm],barva,velikostpisma,FontFamily->Times],StandardForm]," + ",ToString[DisplayForm[FractionBox[PolynomialRemainder[fcecitatel[x],fcejmenovatel[x],x],fcejmenovatel[x]]],TraditionalForm]]},
{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}]]]