Avatar billede michelle_mikkelsen Nybegynder
12. december 2002 - 10:06 Der er 3 kommentarer og
1 løsning

Hvorfor vil programmet ikke tælle resultatet?

Jeg vil gerne have programmet til at tælle opgaverne og derefter udskrive antallet af opgaverne som er rigtge og antallet af opgaver som er forkerte!


import java.util.Random;
import cs1.Keyboard;
import cs1.*;

public class Forkortbroker2
{
    public static void main (String[] args)
      {

                    Random tilfældig1 = new Random();


                    int facit;
                    int naev = 0;
                    int tael = 0;
                    int tal1 = 0;
                    int tal2 = 0;
                    int naevner = 0;
                    int taeller = 0;
                    int tæller  = 0;
                    int antalopgaver = 0;
//                    int antaloperander, indtastsvar, operander, numeriskVaerdi;

//                    char fortegn;
//                    char operator;
                    String sum;
                    String resultat;


//                    System.out.println ("hej verden");


                    System.out.println ();                // Her indtastes de oenskede antal opgaver.
                    System.out.println ("Indtast hvor mange opgaver du vil have af typen 'Forkort broek'! ");
                    System.out.println ();
                    antalopgaver = Keyboard.readInt();

                                        // I opgavetype 3, er der en begrænsning på to operander!!
                                        // Her indtastes det ønskede værdi for naevner.
                    System.out.println ();
                    System.out.println("Indtast max-vaerdien for naevneren: ");
                    naev = Keyboard.readInt();
                    System.out.println ();

                    System.out.println (); // Her indtastes det ønskede værdi for taeller.
                    System.out.println("Indtast max-vaerdien for taeller: ");
                    tael = Keyboard.readInt();
                    System.out.println ();

                    System.out.println ();
                    System.out.println ("Forkort foelgende broeker!");
                    System.out.println ();

                                        // for-løkke kører indtil de indtastede antalopgaver er udført!
                    for (int i=1; i<=antalopgaver; i++)

                    {
                    Random generator = new Random();// Random objekt oprettes

                                                                // Tilfældige tal mellem max og min
                    tal1= generator.nextInt(tael)+ naev;
                    tal2= generator.nextInt(tael)+ naev;

                    // generel formel for beregningen udregnes vha. klassen Metode3 - oprettet nederst.
                    Metode3 regn = new Metode3 (tal1, tal2);


                                            // de generede tal sammenlægges med tegn, formel skabes
                    System.out.println("Forkort :"+ tal1 + "/" + tal2);

                      resultat=Keyboard.readString();

                    System.out.println (resultat);
                                                                            // Resultatet udskrives
                    System.out.println ("\t Resultat: "+ regn );
                    System.out.println ();
                    }

/*                    recieveInput(resultat);

                    System.out.println("Du har antal rigtige" +tæller);


                    public void recieveInput (int sum)
                            {
                                    facit = Keyboard.readInt();

                                if (facit == sum)
                                {
                                        tæller++;
                                        System.out.println("                    Rigtigt!");
                                }
                                        else
                                        {
                                        System.out.println("                              Forkert!");
                                        }

                            }
*/
    }


}


class Metode3 // beregner type3 ligninger
    {
      public int tæller, nævner;

      public Metode3 (int tæl, int næv)
      {
          // tilpasser så 0 ikke forekommer som nævner og tildeler tæller et "-"
          if (næv == 0)
            næv = 1;

          // negative tæller
          if (næv < 0)
          {
            tæl = tæl * -1;
            næv = næv * -1;
          }

          tæller = tæl;
          nævner = næv;

          forkort ();

        }

      // returnerer tælleren
      public int getTæller ()
      {
          return tæller;
      }

      // returnerer nævneren
      public int getNævner ()
      {
          return nævner;
      }


      // returnerer reciprokken af en bestemt værdi
      public Metode3 reciprokke ()
      {
          return new Metode3 (nævner, tæller);
      }

      // retunerer værdien og "/" som string
      public String toString ()
      {
          String resultat;

          if (tæller == 0)
            resultat = "0";
          else
            if (nævner == 1)
                resultat = tæller + "";
            else
                resultat = tæller + "/" + nævner;

          return resultat;
      }

      // forkorter værdien ved at dividere tæller og nævner med største fællesnævner
      public void forkort ()
      {
          if (tæller != 0)
          {
            // kalder metoden størstFællesnævner som heltal
            int fællesnævner = StørstFællesnævner (Math.abs(tæller), nævner);

            tæller = tæller / fællesnævner;
            nævner = nævner / fællesnævner;
          }
      }

      // beregner og retunerer den største fællesnævner vha. Euclids algoritme
      private int StørstFællesnævner (int num1, int num2)
      {
          while (num1 != num2)
            if (num1 > num2)
                num1 = num1 - num2;
            else
                num2 = num2 - num1;

          return num1;
      }
}
Avatar billede arne_v Ekspert
12. december 2002 - 10:28 #1
Jeg kan ikke helt sammenholde din kode og din problem
stilling.

Men grundliggende vil du vel:

int rigtige = 0;
int forkerte = 0;
for(int i = 0; i < totale; i++) {
  udskriv opgave
  x = bruger indtastet svar;
  y = beregnet rigtigt svar;
  if(x==y) {
      rigtige++;
  } else {
      forkerte++;
  }
}
System.out.println("rigtige: " + rigtige + " forkerte: " + forkerte);
Avatar billede michelle_mikkelsen Nybegynder
12. december 2002 - 12:33 #2
Tak ska du ha Arne, du er en skat!!!
Avatar billede michelle_mikkelsen Nybegynder
12. december 2002 - 14:26 #3
Hej Arne!
Jeg har lige siddet ca. 2 timer med det du havde sendt til mig men, jeg ka ikke få det til at hænge sammen, programmet viser en del fejl. Jeg tænkte på om du lige hurtigt kunne kigge på det igen. Jeg kan lige uddybe min problem stilling. Jeg har lavet programmet Forkortbroker, som skal lærer små elever, at forkorte brøker. Når disse elever har regnet opgaver opgaverne, så skal der dukke en tæller op som bare lige skal fortælle børnene, at de har regnet så så man rigtige, og så så mange forkerte, det sku være meget enkelt har jeg fået at vide, men jeg kan det altså ikke! Håber at du kan!!

På forhånd mange tak!!

Michelle M.

import java.util.Random;
import cs1.Keyboard;
import cs1.*;

public class Forkortbroker2
{
    public static void main (String[] args)
      {

                    Random tilfældig1 = new Random();


                    int facit;
                    int naev = 0;
                    int tael = 0;
                    int tal1 = 0;
                    int tal2 = 0;
                    int naevner = 0;
                    int taeller = 0;
                    int tæller  = 0;
                    int antalopgaver = 0;
//                    int antaloperander, indtastsvar, operander, numeriskVaerdi;

//                    char fortegn;
//                    char operator;
                    String sum;
                    String resultat;


//                    System.out.println ("hej verden");


                    System.out.println ();                // Her indtastes de oenskede antal opgaver.
                    System.out.println ("Indtast hvor mange opgaver du vil have af typen 'Forkort broek'! ");
                    System.out.println ();
                    antalopgaver = Keyboard.readInt();

                                        // I opgavetype 3, er der en begrænsning på to operander!!
                                        // Her indtastes det ønskede værdi for naevner.
                    System.out.println ();
                    System.out.println("Indtast max-vaerdien for naevneren: ");
                    naev = Keyboard.readInt();
                    System.out.println ();

                    System.out.println (); // Her indtastes det ønskede værdi for taeller.
                    System.out.println("Indtast max-vaerdien for taeller: ");
                    tael = Keyboard.readInt();
                    System.out.println ();

                    System.out.println ();
                    System.out.println ("Forkort foelgende broeker!");
                    System.out.println ();

                                        // for-løkke kører indtil de indtastede antalopgaver er udført!
                    for (int i=1; i<=antalopgaver; i++)

                    {
                    Random generator = new Random();// Random objekt oprettes

                                                                // Tilfældige tal mellem max og min
                    tal1= generator.nextInt(tael)+ naev;
                    tal2= generator.nextInt(tael)+ naev;

                    // generel formel for beregningen udregnes vha. klassen Metode3 - oprettet nederst.
                    Metode3 regn = new Metode3 (tal1, tal2);


                                            // de generede tal sammenlægges med tegn, formel skabes
                    System.out.println("Forkort :"+ tal1 + "/" + tal2);

                      resultat=Keyboard.readString();
                                                                            // Resultatet udskrives
                    System.out.println ("\t Resultat: "+ regn );
                    System.out.println ();
                    }


                    int rigtige = 0;
                    int forkerte = 0;

                    for(int i = 0; i < totale; i++) {
                      udskriv opgave
                      x = bruger indtastet svar;
                      y = beregnet rigtigt svar;
                      if(x==y) {
                          rigtige++;
                      } else {
                          forkerte++;
                      }
                    }
                    System.out.println("rigtige: " + rigtige + " forkerte: " + forkerte);
}

}







class Metode3 // beregner type3 ligninger
    {
      public int tæller, nævner;

      public Metode3 (int tæl, int næv)
      {
          // tilpasser så 0 ikke forekommer som nævner og tildeler tæller et "-"
          if (næv == 0)
            næv = 1;

          // negative tæller
          if (næv < 0)
          {
            tæl = tæl * -1;
            næv = næv * -1;
          }

          tæller = tæl;
          nævner = næv;

          forkort ();

        }

      // returnerer tælleren
      public int getTæller ()
      {
          return tæller;
      }

      // returnerer nævneren
      public int getNævner ()
      {
          return nævner;
      }


      // returnerer reciprokken af en bestemt værdi
      public Metode3 reciprokke ()
      {
          return new Metode3 (nævner, tæller);
      }

      // retunerer værdien og "/" som string
      public String toString ()
      {
          String resultat;

          if (tæller == 0)
            resultat = "0";
          else
            if (nævner == 1)
                resultat = tæller + "";
            else
                resultat = tæller + "/" + nævner;

          return resultat;
      }

      // forkorter værdien ved at dividere tæller og nævner med største fællesnævner
      public void forkort ()
      {
          if (tæller != 0)
          {
            // kalder metoden størstFællesnævner som heltal
            int fællesnævner = StørstFællesnævner (Math.abs(tæller), nævner);

            tæller = tæller / fællesnævner;
            nævner = nævner / fællesnævner;
          }
      }

      // beregner og retunerer den største fællesnævner vha. Euclids algoritme
      private int StørstFællesnævner (int num1, int num2)
      {
          while (num1 != num2)
            if (num1 > num2)
                num1 = num1 - num2;
            else
                num2 = num2 - num1;

          return num1;
      }
}
Avatar billede arne_v Ekspert
12. december 2002 - 17:00 #4
Hej du skulle ikke bare sætte min kode ind du skal indpasse
den i dit program !

[man kan ikke skrive almindeligt dank i Java sætninger - det var
for at illustrere havd du skule sætte ind]

Noget i stil med:

package test;

import java.util.Random;
//import cs1.*;

public class Forkortbroker {
    public static void main(String[] args) {

        Random tilfældig1 = new Random();

        int facit;
        int naev = 0;
        int tael = 0;
        int tal1 = 0;
        int tal2 = 0;
        int naevner = 0;
        int taeller = 0;
        int tæller = 0;
        int antalopgaver = 0;
        //                    int antaloperander, indtastsvar, operander, numeriskVaerdi;

        //                    char fortegn;
        //                    char operator;
        String sum;
        String resultat;

        //                    System.out.println ("hej verden");

        System.out.println(); // Her indtastes de oenskede antal opgaver.
        System.out.println(
            "Indtast hvor mange opgaver du vil have af typen 'Forkort broek'! ");
        System.out.println();
        antalopgaver = Keyboard.readInt();

        // I opgavetype 3, er der en begrænsning på to operander!!
        // Her indtastes det ønskede værdi for naevner.
        System.out.println();
        System.out.println("Indtast max-vaerdien for naevneren: ");
        naev = Keyboard.readInt();
        System.out.println();

        System.out.println(); // Her indtastes det ønskede værdi for taeller.
        System.out.println("Indtast max-vaerdien for taeller: ");
        tael = Keyboard.readInt();
        System.out.println();

        System.out.println();
        System.out.println("Forkort foelgende broeker!");
        System.out.println();

        int rigtige = 0;
        int forkerte = 0;
        // for-løkke kører indtil de indtastede antalopgaver er udført!
        for (int i = 1; i <= antalopgaver; i++) {
            Random generator = new Random(); // Random objekt oprettes

            // Tilfældige tal mellem max og min
            tal1 = generator.nextInt(tael) + naev;
            tal2 = generator.nextInt(tael) + naev;

            // generel formel for beregningen udregnes vha. klassen Metode3 - oprettet nederst.
            Metode3 regn = new Metode3(tal1, tal2);

            // de generede tal sammenlægges med tegn, formel skabes
            System.out.println("Forkort :" + tal1 + "/" + tal2);

            resultat = Keyboard.readString();
            // Resultatet udskrives
            System.out.println("\t Resultat: " + regn);
            System.out.println();
            if (regn.toString().equals(resultat)) {
                rigtige++;
            } else {
                forkerte++;
            }
        }

        System.out.println("rigtige: " + rigtige + " forkerte: " + forkerte);
    }

}

class Metode3 // beregner type3 ligninger
{
    public int tæller, nævner;

    public Metode3(int tæl, int næv) {
        // tilpasser så 0 ikke forekommer som nævner og tildeler tæller et "-"
        if (næv == 0)
            næv = 1;

        // negative tæller
        if (næv < 0) {
            tæl = tæl * -1;
            næv = næv * -1;
        }

        tæller = tæl;
        nævner = næv;

        forkort();

    }

    // returnerer tælleren
    public int getTæller() {
        return tæller;
    }

    // returnerer nævneren
    public int getNævner() {
        return nævner;
    }

    // returnerer reciprokken af en bestemt værdi
    public Metode3 reciprokke() {
        return new Metode3(nævner, tæller);
    }

    // retunerer værdien og "/" som string
    public String toString() {
        String resultat;

        if (tæller == 0)
            resultat = "0";
        else if (nævner == 1)
            resultat = tæller + "";
        else
            resultat = tæller + "/" + nævner;

        return resultat;
    }

    // forkorter værdien ved at dividere tæller og nævner med største fællesnævner
    public void forkort() {
        if (tæller != 0) {
            // kalder metoden størstFællesnævner som heltal
            int fællesnævner = StørstFællesnævner(Math.abs(tæller), nævner);

            tæller = tæller / fællesnævner;
            nævner = nævner / fællesnævner;
        }
    }

    // beregner og retunerer den største fællesnævner vha. Euclids algoritme
    private int StørstFællesnævner(int num1, int num2) {
        while (num1 != num2)
            if (num1 > num2)
                num1 = num1 - num2;
            else
                num2 = num2 - num1;

        return num1;
    }
}
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