Skillnad mellan versioner av "Övningar 19 (Progr 3)"
Från Mathonline
Taifun (Diskussion | bidrag) m |
Taifun (Diskussion | bidrag) m |
||
| (4 mellanliggande versioner av samma användare visas inte) | |||
| Rad 17: | Rad 17: | ||
* Läs om <b><span style="color:red">Kryptering av strängar</span></b> i [http://www.mathonline.se/Progr_3/2%20Boken%20Progr_3_Cs.pdf <b><span style="color:blue">kursboken</span></b>], sid 84-86. | * Läs om <b><span style="color:red">Kryptering av strängar</span></b> i [http://www.mathonline.se/Progr_3/2%20Boken%20Progr_3_Cs.pdf <b><span style="color:blue">kursboken</span></b>], sid 84-86. | ||
* Läs om <b><span style="color:red">Referens som parameter och returvärde</span></b> i [http://www.mathonline.se/Progr_3/2%20Boken%20Progr_3_Cs.pdf <b><span style="color:blue">kursboken</span></b>], sid 84. | * Läs om <b><span style="color:red">Referens som parameter och returvärde</span></b> i [http://www.mathonline.se/Progr_3/2%20Boken%20Progr_3_Cs.pdf <b><span style="color:blue">kursboken</span></b>], sid 84. | ||
| − | + | * I metoden Encrypt(), klassen EncryptStr, finns satsen: ch = (char)(ch + n); Undersök följande fråga: | |
| + | Varför måste (ch + n) explicit konverteras till char, när variabeln ch redan är deklarerad till char? | ||
* Lös uppgiften nedan: | * Lös uppgiften nedan: | ||
</big> | </big> | ||
| Rad 27: | Rad 28: | ||
Vidareutveckla krypteringsalgoritmen i [[3.4_Kryptering_av_strängar#Klassen EncryptStr|<b><span style="color:blue">Klassen EncryptStr</span></b>]]. | Vidareutveckla krypteringsalgoritmen i [[3.4_Kryptering_av_strängar#Klassen EncryptStr|<b><span style="color:blue">Klassen EncryptStr</span></b>]]. | ||
* Modifiera klassen <b>EncryptStr</b> till en ny klass <b>EncryptStr_Fkt</b> så här: | * Modifiera klassen <b>EncryptStr</b> till en ny klass <b>EncryptStr_Fkt</b> så här: | ||
| − | * | + | * Modifiera metoden <b>Encrypt(String t, int n)</b> till <b>Encrypt(String t, int k, int m)</b>. |
* Definiera krypteringen av tecknen med en linjär funktion y = k x + m, dvs: | * Definiera krypteringen av tecknen med en linjär funktion y = k x + m, dvs: | ||
* Ersätt satsen <b>ch = (char)(ch + n);</b> med <b>ch = (char)(k*ch + m);</b> | * Ersätt satsen <b>ch = (char)(ch + n);</b> med <b>ch = (char)(k*ch + m);</b> | ||
| − | * Lägg till en ny metod <b>Decrypt(String t, int k, int m)</b> som dekrypterar tecknen med | + | * Lägg till en ny metod <b>Decrypt(String t, int k, int m)</b> som dekrypterar tecknen med |
| − | inversa funktionen y = (x - m) / k dvs: <b>ch = (char)((ch - m)/k);</b> | + | den inversa funktionen y = (x - m) / k dvs: <b>ch = (char)((ch - m)/k);</b> |
* Anropa båda metoderna från Main() genom att skicka värdena 2 till k och -5 till m. | * Anropa båda metoderna från Main() genom att skicka värdena 2 till k och -5 till m. | ||
| + | Dvs krypteringsfunktionen blir y = 2 x - 5 och dekrypteringsfunktionen y = (x + 5) / 2 | ||
</big> | </big> | ||
</div> | </div> | ||
Nuvarande version från 26 oktober 2021 kl. 13.34
| << Lektion 19 | Genomgång | Dagens övningar | Nästa lektion >> |
Dagens övningar
- Mata in Klassen EncryptStr. Kompilera.
- Mata in Programmet EncryptStrTest. Kompilera och kör.
- Läs om Kryptering av strängar i kursboken, sid 84-86.
- Läs om Referens som parameter och returvärde i kursboken, sid 84.
- I metoden Encrypt(), klassen EncryptStr, finns satsen: ch = (char)(ch + n); Undersök följande fråga:
Varför måste (ch + n) explicit konverteras till char, när variabeln ch redan är deklarerad till char?
- Lös uppgiften nedan:
Vidareutveckla krypteringsalgoritmen i Klassen EncryptStr.
- Modifiera klassen EncryptStr till en ny klass EncryptStr_Fkt så här:
- Modifiera metoden Encrypt(String t, int n) till Encrypt(String t, int k, int m).
- Definiera krypteringen av tecknen med en linjär funktion y = k x + m, dvs:
- Ersätt satsen ch = (char)(ch + n); med ch = (char)(k*ch + m);
- Lägg till en ny metod Decrypt(String t, int k, int m) som dekrypterar tecknen med
den inversa funktionen y = (x - m) / k dvs: ch = (char)((ch - m)/k);
- Anropa båda metoderna från Main() genom att skicka värdena 2 till k och -5 till m.
Dvs krypteringsfunktionen blir y = 2 x - 5 och dekrypteringsfunktionen y = (x + 5) / 2
Copyright © 2021 TechPages AB. All Rights Reserved.