Avatar billede dioclau Nybegynder
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.


Avatar billede davsclaus Nybegynder
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
    }     
Avatar billede davsclaus Nybegynder
10. oktober 2000 - 22:18 #2
Der mangler en slut } i ovenstående eks.
Avatar billede davsclaus Nybegynder
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++) {
Avatar billede dioclau Nybegynder
10. oktober 2000 - 23:05 #4
Tak for hjælpen med opgave 1.
Det var en stor hjælp.
Avatar billede dioclau Nybegynder
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
Avatar billede codemon Nybegynder
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);
    }
}
Avatar billede davsclaus Nybegynder
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.
Avatar billede davsclaus Nybegynder
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  // æ -> Æ
Avatar billede davsclaus Nybegynder
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)
Avatar billede dioclau Nybegynder
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  \":-)\".


Avatar billede davsclaus Nybegynder
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(\" \");
  }
Avatar billede dioclau Nybegynder
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
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester