[JAVA]Reiskörner berechnen

Diskutiere [JAVA]Reiskörner berechnen im Developer Network Forum im Bereich Hardware & Software Forum; Die for-Schleife verdoppelt "Reis" soviel Mal, wie Du für "Felder" angibst. Damit das Sinn macht, darf "Reis" natürlich nicht 0 sein, deshalb...
  • [JAVA]Reiskörner berechnen Beitrag #21
Lambo-Benni

Lambo-Benni

Bekanntes Mitglied
Dabei seit
23.03.2007
Beiträge
7.601
Reaktionspunkte
3
Ort
Medizinmanndiscount
Die for-Schleife verdoppelt "Reis" soviel Mal, wie Du für "Felder" angibst.

Damit das Sinn macht, darf "Reis" natürlich nicht 0 sein, deshalb setze ich den wert vorher auf 1.

Am Ende wird Reis um 1 zurückgesetzt, weil das Ergebnis sonst nicht der Aufgabenstellung entspräche.
bei 60 Feldern käme 2^60 als Ergebnis heraus. Wenn Du aber alle Reiskörner bis Feld 60 addierst, kommt 2^60-1 heraus (auf dem ersten Feld liegen 2^0 Reiskörner). Das ist etwas Mathe, aber dass es passt merkst Du aber auch leicht durch ausprobieren (einfach mal durchrechnen bei z.B. 3 (2^3-1) oder 4 Feldern (2^4-1)).


Nochmal zur for-Schleife:
for(int i=0; i<Felder; i++) // i wird auf 0 gesetzt und bei jedem Durchlauf um 1 erhöht (i++) ; die Schleife wird solange durchlaufen, bis i nicht mehr kleiner als "Felder" ist.

Wenn Felder = 3 ist, dann läuft die Schleife dreimal durch, einmal mit i=0, dann mit i=1 und mit i=2. Danach ist i=3 und nicht mehr kleiner als "Felder".


Ich hoffe, das war was Du wolltest, einigermaßen verständlich erklärt.
 
  • [JAVA]Reiskörner berechnen Beitrag #22
J

Jakob

Bekanntes Mitglied
Dabei seit
24.06.2007
Beiträge
1.200
Reaktionspunkte
0
Ort
Hessen
Jop, so hatte ich mir das vorgestellt. Danke!

Also bedeutet der Befehl Reis+=Reis also, dass ich Reis verdopple?! Also wäre das in Langform Reis=Reis+Reis.
 
  • [JAVA]Reiskörner berechnen Beitrag #24
Cheddar

Cheddar

Bekanntes Mitglied
Dabei seit
05.04.2009
Beiträge
453
Reaktionspunkte
0
Ort
Cheddar (Somerset)
Jop, so hatte ich mir das vorgestellt. Danke!

Also bedeutet der Befehl Reis+=Reis also, dass ich Reis verdopple?! Also wäre das in Langform Reis=Reis+Reis.

Um 'Reis' zu verdoppeln wäre die kürzere Schreibweise 'Reis *= 2' auch denkbar. Natürlich könnte man auch 'Reis = Reis * 2' schreiben, es wäre aber nicht unbedingt sinnvoll :)
 
  • [JAVA]Reiskörner berechnen Beitrag #25
willikufalt

willikufalt

Bekanntes Mitglied
Dabei seit
28.08.2001
Beiträge
1.481
Reaktionspunkte
0
Ich schätze mal, dass da eine Lösung genauso gut wie die andere ist, da der Compiler jeweils den gleichen optimierten Code daraus erzeugen wird.
 
  • [JAVA]Reiskörner berechnen Beitrag #26
J

Jakob

Bekanntes Mitglied
Dabei seit
24.06.2007
Beiträge
1.200
Reaktionspunkte
0
Ort
Hessen
Kann mir jemand bei dem Code für ein Programm helfen, das einen Endpreis angibt? Ab 100 € gibts 3% Rabatt und ab 300 5 € Nachlass. Mein Code rechnet aber noch nicht ganz richtig, was ist daran noch falsch?^^

Code:
import java.awt.*;
import java.awt.event.*;

/**
  *
  * Beschreibung
  *
  * @version 1.0 vom %DATUM%
  * @author %AUTOR%
  */

public class Versandhandel extends Frame {
  // Anfang Attribute
  private TextField textField1 = new TextField();
  private TextField textField2 = new TextField();
  private Button button1 = new Button();
  // Ende Attribute

  public Versandhandel(String title) {
    // Frame-Initialisierung
    super(title);
    addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent evt) { System.exit(0); }
    });
    int frameWidth = 300;
    int frameHeight = 300;
    setSize(frameWidth, frameHeight);
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (d.width - getSize().width) / 2;
    int y = (d.height - getSize().height) / 2;
    setLocation(x, y);
    Panel cp = new Panel(null);
    add(cp);
    // Anfang Komponenten

    textField1.setBounds(104, 16, 121, 24);
    textField1.setText("Bestellsumme");
    cp.add(textField1);
    textField2.setBounds(104, 72, 121, 24);
    textField2.setText("Endpreis");
    cp.add(textField2);
    
    button1.setBounds(128, 48, 75, 25);
    button1.setLabel("Ausgabe");
    button1.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        button1_ActionPerformed(evt);
      }
    });
    cp.add(button1);
    // Ende Komponenten

    setResizable(false);
    setVisible(true);
  }

  // Anfang Methoden

  public void button1_ActionPerformed(ActionEvent evt)
  {
      int a = Integer.parseInt(textField1.getText());
      int b;
      
      if (a>300)
      {
        b= a-5   ;
      }
      else
      {
        b=a;
      }
      if (a>100)
        {
         b = a - a*3/100 ;
        }
      else
      {
       b=a;
       }











      textField2.setText(Integer.toString(b));
  }


  // Ende Methoden

  public static void main(String[] args) {
    new Versandhandel("Versandhandel");
  }
}
 
  • [JAVA]Reiskörner berechnen Beitrag #27
FerFemNemBem

FerFemNemBem

Moderator
Teammitglied
Dabei seit
11.09.1999
Beiträge
4.494
Reaktionspunkte
0
Halloechen,

Code:
      if (a>300)
      {
        b= a-5   ;
      }
      else
      {
        b=a;
      }
      if (a>100)
        {
         b = a - a*3/100 ;
        }
      else
      {
       b=a;
       }
mal ganz von den Berechnungen abgesehen... was passiert denn da genau?
Setz doch einfach mal im Kopf a=500 - dann geht er in Deine erste Bedingung (da a ja groesser 300 ist) und zieht "5" ab (warum auch immer ;) ). Weiter unten geht der dann auch in die zweite Bedingung (da a ja auch grosser als 100 ist)...

Um sowas zu erkennen, koenntest Du ja einfach mal vor die Berechnung einen Breakpoint setzen und Dich durch den Code debuggen.

Gruss, FFNB.
 
  • [JAVA]Reiskörner berechnen Beitrag #28
J

Jakob

Bekanntes Mitglied
Dabei seit
24.06.2007
Beiträge
1.200
Reaktionspunkte
0
Ort
Hessen
Das ab 300€ 5 abgezogen werden sollen und dass es ab 100 3% geben soll, ist in der Aufgabe festgelegt.
Mir geht es darum, dass ein "falsches" Ergebnis rauskommt, mit dem Programm. Wenn ich 305 eingebe, sollen ja 5 abgezogen werden, und dann nochmal 3%, also kämen 291 raus. Das Programm errechnet mir allerdings 296! Da liegt mein Problem, ich weiß nicht, was daran falsch ist, dass da 296 rauskommt anstatt 291...
Btw: Was bedeutet dein letzter Satz? :D
 
  • [JAVA]Reiskörner berechnen Beitrag #29
Lambo-Benni

Lambo-Benni

Bekanntes Mitglied
Dabei seit
23.03.2007
Beiträge
7.601
Reaktionspunkte
3
Ort
Medizinmanndiscount
Btw: Was bedeutet dein letzter Satz? :D

Das wichtigste und zeitaufwendigste am Programmieren: das Debuggen!


Btw: geh mal Deinen Code durch und achte darauf was passiert, wenn Du a=305 setzt. ;) Dann siehst Du schnell warum 296 rauskommt.
 
  • [JAVA]Reiskörner berechnen Beitrag #30
J

Jakob

Bekanntes Mitglied
Dabei seit
24.06.2007
Beiträge
1.200
Reaktionspunkte
0
Ort
Hessen
Habs :D Wieso bin ich da nicht früher drauf gekommen? :D
Code:
 public void button1_ActionPerformed(ActionEvent evt)
  {
      int a = Integer.parseInt(textField1.getText());
      int b;
      
      if (a>300)
      {
        b= a-5   ;
        if (b>100)
        {
         b = b - b*3/100 ;
        }
        }
      else
      {
        b=a;
      }












      textField2.setText(Integer.toString(b));
  }
 
  • [JAVA]Reiskörner berechnen Beitrag #31
Lambo-Benni

Lambo-Benni

Bekanntes Mitglied
Dabei seit
23.03.2007
Beiträge
7.601
Reaktionspunkte
3
Ort
Medizinmanndiscount
Naja, setz mal a=110 ein.
Dann sollte ja eigentlich 106.7 rauskommen. Bei Dir kommt 110 raus... wo bleiben meine 3%? :shock: :D
 
  • [JAVA]Reiskörner berechnen Beitrag #32
Cheddar

Cheddar

Bekanntes Mitglied
Dabei seit
05.04.2009
Beiträge
453
Reaktionspunkte
0
Ort
Cheddar (Somerset)
Naja, setz mal a=110 ein.
Dann sollte ja eigentlich 106.7 rauskommen. Bei Dir kommt 110 raus... wo bleiben meine 3%? :shock: :D

Ich habe das jetzt in C realisiert (aufgrund mangelnder Java-Kenntnisse):
Code:
#include <stdio.h>
int main(){
	char buffer[256];
	printf("Geben Sie eine Zahl ein: ");
	scanf("%s", buffer);
	int i=atoi(buffer);
	if(i>100){
		if(i>300){
			i-=5;
		}
		i-=i*3/100;
	}
	printf("Ergebnis: %d\n", i);
	return 0;
}

Sollte so funktionieren.

/edit:
Nochmal in Java:
Code:
public void button1_ActionPerformed(ActionEvent evt){
	int a=Integer.parseInt(textField1.getText());
	if(a>100){
		if(a>300){
			a-=5;
		}
		a-=a*3/100;
	}
	textField2.setText(Integer.toString(a));
}
 
Zuletzt bearbeitet:
  • [JAVA]Reiskörner berechnen Beitrag #34
willikufalt

willikufalt

Bekanntes Mitglied
Dabei seit
28.08.2001
Beiträge
1.481
Reaktionspunkte
0
Wieso wird hier eigentlich die ganze Zeit mit Integervariablen gearbeitet, wo eigentlich Festkommavariablen angesagt wären?
 
  • [JAVA]Reiskörner berechnen Beitrag #35
J

Jakob

Bekanntes Mitglied
Dabei seit
24.06.2007
Beiträge
1.200
Reaktionspunkte
0
Ort
Hessen
Weil das Schulaufgaben sind :D
Haben bis jetzt meistens nur Integer genommen, weil es für die Typen von Aufgaben eigentlich reicht, wir brauchen keine Nachkommastellen, sondern es geht darum, die if-Bedingungen usw. richtig zu schachteln, nicht dass ein sehr genaues Ergebnis rauskommt, mit dem eh nichts gemacht wird...
Es war in der Aufgabe der Integer vorgegeben, deshalb habe ich ihn verwendet. Hätte genauso gut auch Double oder einen anderen Typ nehmen können, wäre der Quelltext ja nur gering anders...
 
  • [JAVA]Reiskörner berechnen Beitrag #36
J

Jakob

Bekanntes Mitglied
Dabei seit
24.06.2007
Beiträge
1.200
Reaktionspunkte
0
Ort
Hessen
Haben die Aufgabe bekommen, 2 verschiedene Sortierverfahren zu vergleichen. Ich habe Bubblesort und Selectionsort ausgewählt (Gibt es auch noch einfachere Verfahren als Selectionsort?). Kennt jemand eine gute Seite, wo Selectionsort erklärt wird und wo auch ein verständliches Beispiel dabei ist?
 
  • [JAVA]Reiskörner berechnen Beitrag #37
skyborla

skyborla

Bekanntes Mitglied
Dabei seit
15.03.2003
Beiträge
1.308
Reaktionspunkte
0
Ort
127.0.0.1
  • [JAVA]Reiskörner berechnen Beitrag #38
J

Jakob

Bekanntes Mitglied
Dabei seit
24.06.2007
Beiträge
1.200
Reaktionspunkte
0
Ort
Hessen
Bei Wikipedia habe ich schon geschaut, da steht das ganze allerdings nur in einem Pseudocode. Was ich gerne hätte, ist ein richtiger Java Quelltext, damit ich sehe, wie das Ganze aufgebaut ist. Ich habe jetzt schon 2 Versionen entworfen, die ich ähnlich gemacht habe, wie Code Schnipsel, die ich im Internet gefunden habe. Allerdings muss wahrscheinlich bei den for-Schleifen noch ein Fehler sein, den ich im Moment nicht erkenne (das zu sortierende Array wird nicht ausgegeben).
 
  • [JAVA]Reiskörner berechnen Beitrag #39
cmddegi

cmddegi

Bekanntes Mitglied
Dabei seit
12.07.2001
Beiträge
4.740
Reaktionspunkte
0
Ort
Austria
Dann poste doch einfach mal deinen Code; es wird sich sicher jemand finden, der dir dabei gerne weiterhilft. :)
 
  • [JAVA]Reiskörner berechnen Beitrag #40
J

Jakob

Bekanntes Mitglied
Dabei seit
24.06.2007
Beiträge
1.200
Reaktionspunkte
0
Ort
Hessen
Also: Selectionsort kann ich nicht mehr nehmen. Ich muss also ein anderes Sortierverfahren benutzen. Aufgabe ist es, einfache Sortierverfahren zu nutzen. Allerdings ist es für mich schwer einzuschätzen, welches Verfahren nun einfach oder schwer ist. Deswegen die Frage: Welche Sortierverfahren sind nicht so komplex und einfach zu programmieren?
Von Quicksort hat der Lehrer ausdrücklich abgeraten, weil das zu schwer sei....

Edit: Bubblesort, Selectionsort und Insertionsort fallen raus. Davon muss ich eines auswählen und dazu haben wir den Code schon, also das zweite Suchverfahren, das ich suche darf keines von denen sein...
Aufgabe ist es dann, diese zu programmieren und zu vergleichen (Laufzeit, Schleifendurchläufe etc...)
 
Zuletzt bearbeitet:
Thema:

[JAVA]Reiskörner berechnen

ANGEBOTE & SPONSOREN

https://www.mofapower.de/

Statistik des Forums

Themen
213.180
Beiträge
1.579.174
Mitglieder
55.879
Neuestes Mitglied
stonetreck
Oben