Generování úloh na rozklad mnohočlenů na součin

Tento notebook umožňuje vygenorovat úlohy na procvičení rozkladu mnohočlenů na součin dvou nebo více mnohočlenů nižšího stupně.

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

pocetuloh=20;
pocetopakovani=3;

pocetulohnaradek=4;
pocetreseninaradek=4;

dolnimezvyberu=-10;
hornimezvyberu=10;
linkoef={-5,-4,-3,-2,-1,1,2,3,4,5};
linkoef3clenu={-1,1};

barva=Black;
velikostpisma=14;
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]]=StringJoin[ToString[Style[ToString[k],barva,1.25velikostpisma,FontFamily->Times,Bold,Underlined],StandardForm],ToString[Style[". zadani uloh",barva,1.25velikostpisma,FontFamily->Times,Bold,Underlined],StandardForm]];
reseni[[0]]=StringJoin[ToString[Style[ToString[k],barva,1.25velikostpisma,FontFamily->Times,Bold,Underlined],StandardForm],ToString[Style[". reseni uloh",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]],
bodkraceni=RandomInteger[{dolnimezvyberu,hornimezvyberu}],
akoef=RandomChoice[linkoef],
bkoef=RandomInteger[{dolnimezvyberu,hornimezvyberu}],
ckoef=RandomChoice[linkoef],
dkoef=RandomInteger[{dolnimezvyberu,hornimezvyberu}],

typulohy=RandomChoice[{0,1,2,3}],
If[typulohy==0,
vyraz[x_]:=Expand[akoef((x^2)+bkoef)(x+ckoef)],
If[typulohy==1,
vyraz[x_]:=Expand[akoef((x^3)+bkoef)(x+ckoef)],
If[typulohy==2,
vyraz[x_]:=Expand[akoef((x^3)+bkoef)((x^2)+ckoef)],
vyraz[x_]:=Expand[akoef((x^4)+bkoef)(x+ckoef)]]]],

promenna=FromCharacterCode[RandomInteger[{97,122}]],
zadani[[i]]=StringJoin[vypiscisla," ",ToString[Style[ToString[vyraz[promenna],TraditionalForm],barva,velikostpisma,FontFamily->Times],StandardForm]],
reseni[[i]]=
StringJoin[vypiscisla,ToString[Style[ToString[Factor[vyraz[promenna]],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}]]]