10. oktober 2000 - 20:02
Der er
11 kommentarer og
1 løsning
Hjælp til opgave!!!!
Hej Jeg mangler løsningen til 3 opgaver.
Den som hjælper for alle mine points.
HJÆLP!!!!
Opgave 2.2
a) Skriv en boolsk metode, isAlpha, der som argument tager en variabel af typen char og
returnerer om denne variabel er et bogstav (stort eller lille engelsk bogstav, dvs. a-z el A-Z). Metoden skal have følgende prototype
static boolean isAlpha(char ch)
Et kald til isAlpha med et alfabetisk tegn (a-z eller A-Z) vil resulterer i at metoden
returnerer true, mens alle øvrige tegn vil resulterer i at metoden returnerer false.
b) Skriv et hovedprogram (metoden main) hvori der indlæses et tegn fra tastaturet og
udskrives om tegnet er et gyldigt bogstav i det engelske alfabet -(dette check skal ske
metodekald til isAlpha). Desuden skal tegnets Unicode-værdi udskrives
Et eksempel pa output er givet som
Type a character: A
The character \'A\' is a legal English letter
The Unicode value of \'A\' is 65
Et andet eksempel pa output er givet som
Type a character: +
The character \'+\' is not a legal English letter
The Unicode value of \'+\' is 43
Opgave 2.3
a) Skriv en metode der kan udskrive \"et halvt juletræ\" (ved hjælp af stjerner). Metoden skal have en formel
parameter, n, (af typen int) der angiver højden pa træet.(der skal anvendes nested for-loops!)
b) Skriv en metode, der kan udskrive \"et helt juletræ\" (ved hjælp af stjerner. Metoden skal have en formel
parameter, n, (aftypen int) der angiver højden på træet.
c) Metoderne skal afprøves ved funktionskald fra main.
Opgave 2.1
I matematik er der en kendt sekvens kaldet Fibonacci-sekvensen (en sekvens som nærmer sig
et tal som måske er bedre kendt som \'det gyldne snit\'). De første to tal i sekvensen er hhv. 0 og 1. Hvert af de efterfølgende tal i sekvensen fås ved at tage summen af de to foregående tal.
Fo = O
F1 = 1
F2 = 1 (Fo + F1 = 0 + 1)
F3 = 2 (F 1 + F2 = 1 + 1 )
F4 = 3 (F2 + F3 = 1 + 2)
F5 = 5 (F3 + F4 = 2+ 3)
F6 = 8 (F4 + F5 = 3 + 5)
...
Fn = Fn-2 + Fn-l
Herunder er der påbegyndt en klasse, Fibonacci, som indeholder main og en metode
fibonacci. I main indlæses et heltal, n og i tilfælde af at dette tal er ikke-negativt kaldes metoden fibonacci, som forventes at udskrive de første n numre i fibonacci-sekvensen
/*** Fibonacci.java
* Test of a method printing n numbers in the
* fibonacci sequence
* @version 1.0- 05.10.2000
* @author
*/
import tio.*;
class Fibonacci
{
public static void main(String[] args)
{
System.out.println(\"FIBONACCI SEQUENCE\") ;
System.out.print(\"Type an integer: \") ;
int n = Console.in.readInt() ;
if (n >= 0)
fibonacci(n) ;
}
static void fibonacci(int n)
{
// Opgave 2.1/ spørgsmal a
}
}
a) Skriv metoden fibonacci, som tager et argument n, af typen int og
n fibonacci-tal.
10. oktober 2000 - 22:17
#1
Her er et svar til Opgave 2.1a
Jeg ved godt at den kan laves via et rekursiv kald, men denne er også mere simpel.
Sig til hvis du skal have hjælp til en rekursiv udgave.
static void fibonacci(int n)
{
int tal1 = 0; // Fibotal 1 - starter ved 0
int tal2 = 1; // Fibotal 2 - starter ved 1
// Gennemløb antal gange som angivet ved n
for (int i = 0; i < n; i++) {
int sum = tal1 + tal2;
System.out.println(sum);
tal1 = tal2; // Gem ny fibotal 1
tal2 = sum; // Gem ny fibotal 2
}
10. oktober 2000 - 22:18
#2
Der mangler en slut } i ovenstående eks.
10. oktober 2000 - 22:20
#3
Og at udskrive 0 - nul som det første fibo tal.
Dette kan gøres med en
System.out.println(0) før løkken, og at rette for løkken til så den gennemløb 1 mindre.
for (int i = 1; i < n; i++) {
10. oktober 2000 - 23:05
#4
Tak for hjælpen med opgave 1.
Det var en stor hjælp.
10. oktober 2000 - 23:24
#5
Det var egenligt en fejl, at du allerede fik mine point nu davsclaus, men nu håber jeg du vil hjælpe mig med resten af mine opgaver.
Venlig
Hilsen Jesper
10. oktober 2000 - 23:33
#6
opgave 2.2
public class TjekTegn
{
private static boolean tjek = false;
public static boolean isAlpha (char ch)
{
if ( (int)ch <= 90 && (int)ch >= 65 )
tjek = true;
if ( (int)ch <= 122 && (int)ch >= 97 )
tjek = true;
return tjek;
}
}
--------------------------------------------------
import cs1.Keyboard;
public class mitProgram
{
public static void main (String[] args)
{
char indtastning = Keyboard.readChar();
boolean alpha = TjekTegn.isAlpha (indtastning);
System.out.print (alpha);
}
}
11. oktober 2000 - 14:36
#7
Jo jeg skal nok hjælp dig. Kan man opdele pointene når man acceptere? Jeg ved bla. at du kan godkende andres svar så der er flere der for points.
Unicode:
Jeg kan ikke huske men du kan vi
st sætte et special tegn i System.out.print() for at udskrive unikode nr. for tegnet.
11. oktober 2000 - 14:40
#8
Codemon
Ja det kan til tider være en god ide at angive unicode værdien af tegnet i if strukturen. Dette kan man evt. også gøre som kommentar.
F.eks. i gamle dos dage hvor man skulle skrive sine uppercase rutiner så de håndtere de danske tegn, så er det rart med selve værdien.
f.eks. pseudo
if tegn = 165 then tegn = 181 // æ -> Æ
11. oktober 2000 - 14:45
#9
Hov jeg opdagede lige at jeg ikke fik postet mit isAlpha eks. i går. Den minder om codemon\'s men er dog lidt mere \"rigtig\" idet, der ikke er en statisk boolean tjek = false.
public static boolean isAlpha (char ch)
{
if (ch >= \'a\' && ch <= \'z\')
return true; // Tegnet er et lille bogstav
if (ch >= \'A\' && ch <= \'Z\')
return true; // Tegnet er et stort bogstav
// Tegnet er ikke et bogstav
return false;
}
Dette eks. er nok mere simpelt, da det hellere ikke benytter casting: ch(int)
11. oktober 2000 - 15:37
#10
Ja, jeg kan godt give mere end en person point, det var det jeg ville have gjort. Men jeg kom til, at lave en fejl men skidt med det nu. Så længe der er nogen som hjælper \":-)\".
11. oktober 2000 - 15:59
#11
Her er noget omkring det der træ halløj
public static void halfTree(int treeDeep) {
String leaf = \"\"; // Træ gren
for (int i = 0; i < treeDeep; i++) {
leaf = leaf + \"*\";
System.out.println(leaf);
}
}
public static void fullTree(int treeDeep) {
String leaf = \"\"; // Træ gren
int ident = treeDeep * 2; // Indrykning
for (int i = 0; i < treeDeep; i++) {
printSpace(ident);
leaf = leaf + \"**\";
ident = ident - 1;
System.out.println(leaf);
}
}
public static void printSpace(int noSpaces) {
for (int i=0; i < noSpaces; i++)
System.out.print(\" \");
}
11. oktober 2000 - 16:58
#12
Når jeg kompilerer eksemplet skriver den, at der er en syntaks error i den sidste tuborg klamme.
hmmmm, jeg håber du har mod på en sidste opgave, det ville være en kæmpe hjælp davsklaus, det er sjældent man møder mennesker som dig.
Opgave 2.4
En måde (Måde 1) til at beregne tvæersummen af et tal, x er at læegge samtlige cifre i tallet x
sammen og gentage denne procedure sålænge dette tal er mere end et etcifret tal (så længe
tallet er større end 9). F.eks. vil tvæersummen af tallet 9785678675 blive 5, idet:
Sum af cifrene 9785678675 giver 68
Sum af cifrene 68 giver 14
Sum af cifrene 14 giver 5 dvs. tværsummen bliver 5
En anden made (Made 2) er at l(egge cifrene sarnrnen og hver gang tallet bliver stprre end 9
trækkes v(erdien 9 fra tallet. Med samme starttal som fpr gennemgas fplgende trin:
(sidste ciffer) 0 + 5 = 5 OK, idet 5 <= 9
(2. sidste ciffer) 5 + 7 = 12 idet 12 > 9, bliver tallet til12 -9 = 3
(3. sidste ciffer) 3 + 6 = 9 OK, idet 9<= 9
(4. sidste ciffer) 9 + 8 = 17 idet 17 > 9, bliver tallet til 17- 9 = 8
(5. sidste ciffer) 8 + 7 = 15 idet 15 > 9, bliver tallet til15 -9 = 6
(6. sidste ciffer) 6 + 6 = 12 idet 12 > 9, bliver tallet til12 -9 = 3
(7. sidste ciffer) 3 + 5 = 8 OK, idet 8<= 9
(8. sidste ciffer) 8 + 8 = 16 idet 16 > 9, bliver tallet til16 -9 = 72
(9. sidste ciffer) 7 + 7 = 14 idet 14 > 9, bliver tallet til14 -9 = 5
(10. sidste ciffer) 5 + 9 = 14 idet 14 > 9, bliver tallet til14 -9 = 5
Dvs. tværsummen bliver 5
a) Skriv en pseudokode som udfra et givet tal x kan beregne tallets tværsum (Det er valgfrit
om der benyttes måde 1, måde 2, eller en helt tredje måde som grundlag for udarbejdelse a
pseudokoden
b) Skriv en metode, digitSum, som tager et heltal som argument og returnerer tallets
tværsum -ogsa som heltal. (Benyt pseudokoden fra spørgsmål a som grundlag for
udarbejdelsen af metoden digitSum)
c) Skriv et hovedprogram (main), hvori der indlæses et tal fra tastaturet og udskrives det
indlæste tals tværsum -benyt kald til metoden digitSum
Kurser inden for grundlæggende programmering