Generování: základní operace s komplexními čísly

Tento notebook umožňuje vygenerovat úlohy, které slouží na procvičení základních operací s komplexními čísly zadanými v algebraickém tvaru.
Komplexní čísla v algebraickém tvaru se zadávají tak, že se náhodně vyberou čtyři jmenovatelé a čtyři čitatelé - každé toto číslo se vybírá jako celočíselné v rozmezí od dolnimez až po hornimez. Tato čísla jsou navíc náhodně vynásobena číslem -1. Získáme tak čtyři zlomky, ze kterých sestavíme čtyři části komplexních čísel - dvě reálné části a dvě imaginární části. Pak se zvolí náhodně název komplexního čísla a toto komplexní číslo se vypíše.
V další buňce notebooku lze zobrazit i výsledky vygenerovaných úloh.

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. Počet opakování právě popsaného bloku je uveden v proměnné pocetopakovani. Za tabulku s výpisem úloh se vypíše tabulka s výpisem řešení; počet řešení na jednom řádku je uložen v proměnné pocetreseninaradek.

© Jaroslav Reichl, 2012

pocetuloh=9;
pocetopakovani=4;

pocetulohnaradek=3;
pocetreseninaradek=2;

dolnimez=1;
hornimez=6;

barva=Black;
velikostpisma=17;

reseni=Table[Null,{i,1,pocetopakovani,1},{j,1,pocetuloh,1},{k,1,6,1}];
znamenko=Table[Null,{i,1,4,1}];

(*Zadání úloh*)
For[k=1,k≤pocetopakovani,k++,
zadani=Table[Null,{i,0,pocetuloh+pocetulohnaradek,1}];
Table[zadani[[i]]="",{i,0,pocetuloh+pocetulohnaradek,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],ToString[Style[" Vypoctete soucet, rozdil (obe moznosti), soucin a podil (obe moznosti) danych cisel:",barva,velikostpisma,FontFamily->Times],StandardForm]];
Table[{
vypiscisla=StringJoin[ToString[Style[ToString[i],barva,velikostpisma,FontFamily->Times,Bold],StandardForm],ToString[Style[".  ",barva,velikostpisma,FontFamily->Times,Bold],StandardForm]],
citatel=Table[RandomChoice[{-1,1}] RandomInteger[{dolnimez,hornimez}],{l,1,4,1}];
jmenovatel=Table[RandomChoice[{-1,1}] RandomInteger[{dolnimez,hornimez}],{l,1,4,1}];
asciikodnazevcisla=RandomInteger[{97,97+22-(2-1)}];
nazevcisla=Table[FromCharacterCode[asciikodnazevcisla+i],{i,0,2-1,1}];
Table[
If[((citatel[[l]])/(jmenovatel[[l]]))≥0,
znamenko[[l]]="",
znamenko[[l]]="-"],
{l,1,4,2}];
Table[
If[((citatel[[l]])/(jmenovatel[[l]]))≥0,
znamenko[[l]]=" + ",
znamenko[[l]]=" - "],
{l,2,4,2}];
zadani[[i]]=StringJoin[vypiscisla," ",ToString[Style[StringJoin[ToString[Style[nazevcisla[[1]],Italic],StandardForm]," = ",znamenko[[1]],ToString[Abs[((citatel[[1]])/(jmenovatel[[1]]))],TraditionalForm],znamenko[[2]],ToString[Abs[((citatel[[2]])/(jmenovatel[[2]]))],TraditionalForm],"I;   ",ToString[Style[nazevcisla[[2]],Italic],StandardForm]," = ",znamenko[[3]],ToString[Abs[((citatel[[3]])/(jmenovatel[[3]]))],TraditionalForm],znamenko[[4]],ToString[Abs[((citatel[[4]])/(jmenovatel[[4]]))],TraditionalForm],"I"],barva,velikostpisma,FontFamily->Times],StandardForm]],
reseni[[k,i,1]]=((citatel[[1]])/(jmenovatel[[1]]))+((citatel[[2]])/(jmenovatel[[2]]))I+((citatel[[3]])/(jmenovatel[[3]]))+((citatel[[4]])/(jmenovatel[[4]]))I,
reseni[[k,i,2]]=((citatel[[1]])/(jmenovatel[[1]]))+((citatel[[2]])/(jmenovatel[[2]]))I-(((citatel[[3]])/(jmenovatel[[3]]))+((citatel[[4]])/(jmenovatel[[4]]))I),
reseni[[k,i,3]]=-(((citatel[[1]])/(jmenovatel[[1]]))+((citatel[[2]])/(jmenovatel[[2]]))I)+((citatel[[3]])/(jmenovatel[[3]]))+((citatel[[4]])/(jmenovatel[[4]]))I,
reseni[[k,i,4]]=(((citatel[[1]])/(jmenovatel[[1]]))+((citatel[[2]])/(jmenovatel[[2]]))I)(((citatel[[3]])/(jmenovatel[[3]]))+((citatel[[4]])/(jmenovatel[[4]]))I),
reseni[[k,i,5]]=((((citatel[[1]])/(jmenovatel[[1]]))+((citatel[[2]])/(jmenovatel[[2]]))I)/(((citatel[[3]])/(jmenovatel[[3]]))+((citatel[[4]])/(jmenovatel[[4]]))I)),
reseni[[k,i,6]]=((((citatel[[3]])/(jmenovatel[[3]]))+((citatel[[4]])/(jmenovatel[[4]]))I)/(((citatel[[1]])/(jmenovatel[[1]]))+((citatel[[2]])/(jmenovatel[[2]]))I))},
{i,1,pocetuloh,1}];
If[Mod[pocetuloh,pocetulohnaradek]≠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}];
Print[zadani[[0]]];
Print[tabulkazadani];
Print[StringJoin@@Table["_",{90}]]]

(*Řešení úloh*)
For[k=1,k≤pocetopakovani,k++,
vypisreseni=Table[Null,{i,0,pocetuloh+pocetreseninaradek,1}];
Table[vypisreseni[[i]]="",{i,0,pocetuloh+pocetreseninaradek,1}];
vypisreseni[[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]],
vypisreseni[[i]]=StringJoin[vypiscisla," ",ToString[Style[StringJoin[ToString[reseni[[k,i,1]],TraditionalForm],";   ",ToString[reseni[[k,i,2]],TraditionalForm],";   ",ToString[reseni[[k,i,3]],TraditionalForm],";   ",ToString[reseni[[k,i,4]],TraditionalForm],";   ",ToString[reseni[[k,i,5]],TraditionalForm],";   ",ToString[reseni[[k,i,6]],TraditionalForm]],barva,velikostpisma,FontFamily->Times],StandardForm]]},
{i,1,pocetuloh,1}];
If[Mod[pocetuloh,pocetreseninaradek]≠0,
korekceradku=1,
korekceradku=0];
tabulkareseni=TableForm[
Table[
Table[vypisreseni[[(j-1)pocetreseninaradek+i]],{i,1,pocetreseninaradek,1}],{j,1,IntegerPart[(pocetuloh/pocetreseninaradek)]+korekceradku,1}],
TableSpacing->{1,3}];
Print[vypisreseni[[0]]];
Print[tabulkareseni];
Print[StringJoin@@Table["_",{90}]]]