Aktuelle Zeit: 24. Jan 2017, 08:02

  Neue Beiträge

Ereignisse!!!
von: vovan1 8. Dez 2016, 23:03 zum letzten Beitrag 8. Dez 2016, 23:03

Was habt ihr gelesen?
von: Alex C 10. Okt 2016, 14:42 zum letzten Beitrag 10. Okt 2016, 14:42

Lesenswertes
von: Alex C 10. Mär 2015, 20:49 zum letzten Beitrag 10. Mär 2015, 20:49

  Suche



Erweiterte Suche

  Kategorien

Kategorie
alle Themen allgemein erstmal hierhin

Kategorie

Kategorie


Neues Thema erstellenAntwort erstellen Seite 1 von 3   [ 23 Beiträge ]
Gehe zu Seite  1, 2, 3  Nächste
AutorNachricht
 Betreff des Beitrags: Übungen Programmirung (Lösungen/Fragen)
BeitragVerfasst: 12. Okt 2010, 18:24 
Vielschreiber
Vielschreiber||
Benutzeravatar

Registriert: 02.2009
Beiträge: 922
Geschlecht: männlich
Highscores: 38
Übunng 00:
Tak nu tipo otveti est:
1.
Code:
defeniere FlaschenWahlMenge
defeniere FlaschenWahl
defeniere Original
defenire  GeldMenge = Original

while Flasche erhalten = false:
    if FlaschenWahlMenge = 0:press(Return),getRestgeld, break
    get Flaschenwahl
    pressButton(Flaschenwahl)
        get preis
       if preis > 0
                  while Preis > 0:
                  if Flasche kommt:get Flasche, getRestgeld ,Flasche erhalten = true
                              else:
                        if flaschenwahl != checkflaschenWahl: pressButton(Flaschenwahl),get preis
                                  if GeldMenge = 0:deleteFlaschenWahl(flaschenwahl)
                                                  else:gib Geld ein
       else deleteFlaschenWahl(flaschenwahl)
if Flasche erhalten = false:Kick it once
                if GeldMenge < Original: Beat the crap out iof it!
 

2.1 ja , aaa
V ostalnich ne uveren:Sadanie bilo postavleno nedostatochno vnimatelno,takche otveti mogli bi bit:
2.2 nein
2.3 (eventuell ja : b...bab...bab...bab...b ,nu cheto na eto pohosche ^^)

3.1
Syntax - Ordung der Zeihen
Semantik - Bedeutung der Zeihen
Die einen überprüffen die Richtige Stellung ,die anderen richtigen Sinn,der Zeihensetzung
3.2 Nein, if(a = b); - hier hat ";"kein sinn , aber syntaktisch ist es richtig.(Ne uvern no imeetsja imeno eto vvidu)
3.3
Würde diese Sogar betonnen : Ein syntaktisch korrektes Programm kann noch sehr fehlerhaft sein!
Es kann sein das die nötige Ressoursen/Methoden/Überprüfungen/... fehlen, oder die interne Threads sich im endeffekt überschneiden,und am ende kann es wegen einen kleinen Format/Anpassungsfehler ,die Ganze Programm zum Abstürz bringen.
Daher ist sogar nach der Veröffentlichung des Programms kann es sein das noch viele Fehler offen sind,die man erst später von den einzelnen Usern merkt.
Quelle

eto moja verii schdu tvoei ;)
ne spisivat :idea:


Dateianhänge:
Uebung0.pdf [109.6 KiB]
13-mal heruntergeladen

_________________
TODO List:
Analyze existence... Annihilate possible Contradictions... Create unbearable Fear...
Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Übungen Programmirung (Lösungen/Fragen)
BeitragVerfasst: 2. Nov 2010, 00:14 
Vielschreiber
Vielschreiber||
Benutzeravatar

Registriert: 02.2009
Beiträge: 922
Geschlecht: männlich
Highscores: 38
eto moja lösung no abschreiben:

Bild


Dateianhänge:
Programms.rar [2.65 KiB]
9-mal heruntergeladen

_________________
TODO List:
Analyze existence... Annihilate possible Contradictions... Create unbearable Fear...
Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Übungen Programmirung (Lösungen/Fragen)
BeitragVerfasst: 8. Nov 2010, 14:01 
Vielschreiber
Vielschreiber||
Benutzeravatar

Registriert: 02.2009
Beiträge: 922
Geschlecht: männlich
Highscores: 38
Ü3 A1 a/b/c :-l
Code:
public class Herz {
   public static boolean inRaute(double px, double py, double cx, double cy,
         double b) {
      if ((Math.abs(px - cx) + Math.abs(py - cy)) <= b)
         return true;
      return false;
   }
   public static boolean inKreis(double px, double py, double cx, double cy,
         double b) {
      if ((Math.sqrt((px-cx)*(px-cx)+(py-cy)*(py-cy))) <= b)
         return true;
      return false;
   }
   public static boolean inHerz(double px, double py, double cx, double cy,
         double b) {
      if (inRaute(px,py,cx,cy,b)||inKreis(px,py,cx-(b/2),cy-(b/2),b/Math.sqrt(2))||inKreis(px,py,cx+(b/2),cy-(b/2),b/Math.sqrt(2)))
         return true;
      return false;
   }
   
   
   
   public static void main(String [] args){
      System.out.println("Geben Sie die gewuenschte Breite ein:");
      int d = IO.readInt();
      //n - Der Ausdehnungsfaktor von dem Herz
      double n = 2;
      for(int i = 0; i<d;i++){
         for(int t = 0; t<d;t++){
            if(inHerz(t,i*n,d/2,(d/2)*n,(d*0.4)/2)){System.out.print("#");}
            else {System.out.print(" ");}
         }   System.out.println();
      }
   }
}

_________________
TODO List:
Analyze existence... Annihilate possible Contradictions... Create unbearable Fear...


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Übungen Programmirung (Lösungen/Fragen)
BeitragVerfasst: 8. Nov 2010, 15:23 
Vielschreiber
Vielschreiber||
Benutzeravatar

Registriert: 02.2009
Beiträge: 922
Geschlecht: männlich
Highscores: 38
Code:
n   res   i  10-diff
10   0   0   
10   10   0   0
10   19   1   1
10   27   2   3
10   34   3   6
10   40   4   10
10   45   5   15
10   49   6   21
10   52   7   28
10   54   8   36
10   55   9   
   


res = n(i+1) - Summe(k=0 -> i) k

_________________
TODO List:
Analyze existence... Annihilate possible Contradictions... Create unbearable Fear...


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Übungen Programmirung (Lösungen/Fragen)
BeitragVerfasst: 8. Nov 2010, 23:03 
Administrator
Administrator
Benutzeravatar

Registriert: 02.2009
Beiträge: 134
Geschlecht: nicht angegeben
Code:
package Uebung3HA14;
/**
 * Autor: Alexey Zorin Stand:8.11.2010
 */
import java.text.*;
public class Rechentrainer {
    private static int MAX_SIZE = 100;
    private static String s;
    private static char auswahl;
    private static boolean antwort=true;
    private static int anzahl;
    private static int positiv=0;
    private static int negativ=0;
    private static double zeit=0;
    public static void main(String[] args) {

        // Ein Auswahlmenu wird angezeigt und die Eingabe überprüft:
        do {
            if (antwort == false)
                {System.out.println("-------------------------------------------------");
                System.out.println("FEHLER: Bitte geben Sie eine gültige Antwort ein!");
                System.out.println("-------------------------------------------------");}
            Menu();
            s = IO.readLine();
            if (IO.length(s) == 0)
                {antwort = false;continue;};
            auswahl = IO.charAt(s, 0);
            switch (auswahl) {
            case '+': antwort = true;Addition();break;
            case '-': antwort = true;Subtraktion(); break;
            case '*': antwort = true;Multiplikation(); break;
            case '/': antwort = true;Division(); break;
            case '%': antwort = true;Modulo(); break;
            default: antwort = false;
            }
        } while (antwort == false);
        System.out.println("Anzahl richtiger Antworten:"+positiv);
        System.out.println("Anzahl falscher Antworten:"+negativ);
        System.out.println("Gesamtzeit für die Aufgaben beträgt:"+zeit);
    }
public static void Addition()
{
//Die Anzahl der Aufgaben einlesen:

System.out.println("Bitte wählen Sie die Anzahl der Aufgaben ein:");
anzahl=IO.readInt();
for (int i=0;i<anzahl;i++)
{
// Zwei Zufallszahlen werden generiert:
    int operandA = IO.randomNumber(0, MAX_SIZE);
    int operandB = IO.randomNumber(0, MAX_SIZE);
// Die Aufgabe dem Benutzer stellen und auf die Antwort warten:
System.out.println("Was ist " + operandA + " + " + operandB + "?");
long startTime = System.currentTimeMillis();
int antwort = IO.readInt();
long endTime = System.currentTimeMillis();

String ausgabe = (operandA + operandB == antwort) ? "richtig"
        : "falsch";
long vorKomma = (endTime - startTime) / 1000;
long nachKomma = ((endTime - startTime) / 100) % 10;
if (ausgabe.equals("richtig")) {positiv++;}
    else {negativ++;};
System.out.println("Die Antwort war " + ausgabe + " und brauchte "
        + vorKomma + "." + nachKomma + " Sekunden.");
zeit = zeit + Double.parseDouble(vorKomma + "." + nachKomma);}
}
public static void Subtraktion()
{
    //Die Anzahl der Aufgaben einlesen:

    System.out.println("Bitte wählen Sie die Anzahl der Aufgaben ein:");
    anzahl=IO.readInt();
for (int i=0;i<anzahl;i++)
{
    // Zwei Zufallszahlen werden generiert:
    int operandA = IO.randomNumber(0, MAX_SIZE);
    int operandB = IO.randomNumber(0, MAX_SIZE);
    // Die Aufgabe dem Benutzer stellen und auf die Antwort warten:
    System.out.println("Was ist " + operandA + " - " + operandB + "?");
    long startTime = System.currentTimeMillis();
    int antwort = IO.readInt();
    long endTime = System.currentTimeMillis();

    String ausgabe = (operandA - operandB == antwort) ? "richtig"
            : "falsch";
    long vorKomma = (endTime - startTime) / 1000;
    long nachKomma = ((endTime - startTime) / 100) % 10;
    if (ausgabe.equals("richtig")) {positiv++;}
    else {negativ++;};
    System.out.println("Die Antwort war " + ausgabe + " und brauchte "
            + vorKomma + "." + nachKomma + " Sekunden.");
zeit = zeit + Double.parseDouble(vorKomma + "." + nachKomma);}
}
public static void Multiplikation()
{
    //Die Anzahl der Aufgaben einlesen:
    System.out.println("Bitte wählen Sie die Anzahl der Aufgaben ein:");
    anzahl=IO.readInt();
for (int i=0;i<anzahl;i++)
{
    // Zwei Zufallszahlen werden generiert:
    int operandA = IO.randomNumber(0, MAX_SIZE);
    int operandB = IO.randomNumber(0, MAX_SIZE);
    // Die Aufgabe dem Benutzer stellen und auf die Antwort warten:
    System.out.println("Was ist " + operandA + " * " + operandB + "?");
    long startTime = System.currentTimeMillis();
    int antwort = IO.readInt();
    long endTime = System.currentTimeMillis();

    String ausgabe = (operandA * operandB == antwort) ? "richtig"
            : "falsch";
    long vorKomma = (endTime - startTime) / 1000;
    long nachKomma = ((endTime - startTime) / 100) % 10;
    if (ausgabe.equals("richtig")) {positiv++;}
    else {negativ++;};
    System.out.println("Die Antwort war " + ausgabe + " und brauchte "
            + vorKomma + "." + nachKomma + " Sekunden.");
        zeit = zeit + Double.parseDouble(vorKomma + "." + nachKomma);}
        }
public static void Division()
{
    //Die Anzahl der Aufgaben einlesen:
    System.out.println("Bitte wählen Sie die Anzahl der Aufgaben ein:");
    anzahl=IO.readInt();
    DecimalFormat df = new DecimalFormat("#.00");
for (int i=0;i<anzahl;i++)
{   // Zwei Zufallszahlen werden generiert:
    double operandA = IO.randomNumber(0, MAX_SIZE);
    double operandB = IO.randomNumber(0, MAX_SIZE);
    // Die Aufgabe dem Benutzer stellen und auf die Antwort warten:
    System.out.println("Was ist " + operandA + " / " + operandB + "?");
    System.out.println("-------------------------------------------------");
    System.out.println("Runden Sie das Ergebnis auf zwei Nachkommastellen!");
    long startTime = System.currentTimeMillis();
    double antwort = IO.readDouble();
    long endTime = System.currentTimeMillis();
    String ausgabe = ((df.format(operandA /operandB)).equals(df.format(antwort))) ? "richtig"
            : "falsch";
    long vorKomma = (endTime - startTime) / 1000;
    long nachKomma = ((endTime - startTime) / 100) % 10;
    if (ausgabe.equals("richtig")) {positiv++;}
    else {negativ++;};
    System.out.println("Die Antwort war " + ausgabe + " und brauchte "
            + vorKomma + "." + nachKomma + " Sekunden.");
    zeit = zeit + Double.parseDouble(vorKomma + "." + nachKomma);}
 }
public static void Modulo()
{
    //Die Anzahl der Aufgaben einlesen:
    System.out.println("Bitte wählen Sie die Anzahl der Aufgaben ein:");
    anzahl=IO.readInt();
for (int i=0;i<anzahl;i++)
{
    // Zwei Zufallszahlen werden generiert:
    int operandA = IO.randomNumber(0, MAX_SIZE);
    int operandB = IO.randomNumber(0, MAX_SIZE);
    // Die Aufgabe dem Benutzer stellen und auf die Antwort warten:
    System.out.println("Was ist " + operandA + " % " + operandB + "?");
    long startTime = System.currentTimeMillis();
    int antwort = IO.readInt();
    long endTime = System.currentTimeMillis();

    String ausgabe = (operandA % operandB == antwort) ? "richtig"
            : "falsch";
    long vorKomma = (endTime - startTime) / 1000;
    long nachKomma = ((endTime - startTime) / 100) % 10;
    if (ausgabe.equals("richtig")) {positiv++;}
    else {negativ++;};
    System.out.println("Die Antwort war " + ausgabe + " und brauchte "
            + vorKomma + "." + nachKomma + " Sekunden.");
    zeit = zeit + Double.parseDouble(vorKomma + "." + nachKomma);}
}
    public static void Menu() {
        System.out.println("Sie haben folgende Rechenoperationen zur verfügung:");
        System.out.println();
        System.out.println("'+' für (Addition)");
        System.out.println("'-' für (Subtraktion)");
        System.out.println("'*' für (Multiplikation)");
        System.out.println("'/' für (Division)");
        System.out.println("'%' für (Modulo)");
        System.out.println();
        System.out.println("Bitte wählen Sie eine der oben genannten Optionen aus:");
    }

}


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Übungen Programmirung (Lösungen/Fragen)
BeitragVerfasst: 9. Nov 2010, 01:23 
Vielschreiber
Vielschreiber||
Benutzeravatar

Registriert: 02.2009
Beiträge: 922
Geschlecht: männlich
Highscores: 38
aufgabe 6


Dateianhänge:
ProgHA3.pdf [89.08 KiB]
9-mal heruntergeladen

_________________
TODO List:
Analyze existence... Annihilate possible Contradictions... Create unbearable Fear...
Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Übungen Programmirung (Lösungen/Fragen)
BeitragVerfasst: 15. Nov 2010, 21:31 
Vielschreiber
Vielschreiber||
Benutzeravatar

Registriert: 02.2009
Beiträge: 922
Geschlecht: männlich
Highscores: 38
Hoare Kalkul: :cool:


Dateianhänge:
ProgHA4.pdf [64.19 KiB]
9-mal heruntergeladen

_________________
TODO List:
Analyze existence... Annihilate possible Contradictions... Create unbearable Fear...
Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Übungen Programmirung (Lösungen/Fragen)
BeitragVerfasst: 16. Nov 2010, 01:14 
Vielschreiber
Vielschreiber||
Benutzeravatar

Registriert: 02.2009
Beiträge: 922
Geschlecht: männlich
Highscores: 38
A4
Code:
public class VierGewinnt{
    public static void main(String[] args) {
        // c)
        System.out.println("Willkomen bei Spiel 'Vier Gewinnt'");
        System.out.println();
        System.out.println("Das Feld wuerde Automatisch auf 7x6 erstellt,");
        System.out.println("falls sie eine andere Feldgroesse haben wollen,");
        System.out.println("muessen Sie das Programm mit entsprechenden Parameter starten.");
        int[][] sfVierGewinnt;
        if(args.length == 2){
            sfVierGewinnt = new int [Integer.parseInt(args[0])][Integer.parseInt(args[1])];
        }else {
            sfVierGewinnt = new int [7][6];
        }
        for(int x = 0; x < sfVierGewinnt.length; x++){
            for(int y = 0; y < sfVierGewinnt[x].length; y++){
                sfVierGewinnt[x][y] = 0;
            }
        }
        int spieler = 1;
        int gewonnen = 0;
        while(gewonnen == 0){
            macheZug(sfVierGewinnt, spieler);
            if(spieler == 1){
                spieler = 2;
            } else {
                spieler = 1;
            }
            gewonnen = werGewinnt(sfVierGewinnt);
        }
        ausgabe(sfVierGewinnt);
        System.out.println("Spieler " + gewonnen + " hat gewonnen!");
        System.exit(0);
    }

    public static void macheZug(int[][] spielfeld, int spieler) {
        // a)
        String errormsg = "";
        boolean error = false;
        int inRow;

        ausgabe(spielfeld);

        do{
            System.out.println("Spieler " +spieler+" ist am Zug.");
            System.out.println("Geben Sie eine Spalte 1-"+spielfeld.length+" ein in die Sie einen Coin einwerfen!");
            inRow = IO.readInt()-1;
            if(!spalteKorrekt(spielfeld, inRow)){
                System.out.print("Ungultige Spalte, bitte korrekte Spalte angeben:");
                error = true;
            }else{
                error=false;
            }

        }while(error);

        insertCoin(spielfeld, inRow, spieler);
    }

    public static void insertCoin(int[][] spielfeld, int zeile, int spieler){
        for(int y =  spielfeld[zeile].length -1;y > -1; y--){
            if(spielfeld[zeile][y] == 0){
                spielfeld[zeile][y] = spieler;
                return;
            }
        }
    }

    /*
     * Eine Spalte ist inkorrekt wenn sie nicht auf dem Feld liegt
     * oder bereits voll ist.
     */
    public static boolean spalteKorrekt(int[][] spielfeld, int spalte) {
        // a)
        if(spielfeld.length-1 < spalte||spalte <0){
            return false;
        } else {
            if(spielfeld[spalte][0] != 0){
                return false;
            } else {
                return true;
            }
        }
    }

    public static int werGewinnt(int[][] spielfeld) {
        // b)
        for(int y = 0; y < spielfeld[0].length; y++){
            for(int x = 0; x < spielfeld.length; x++){
                if(spielfeld[x][y] != 0) {
                    int player = spielfeld[x][y];
                    //waagerechte ьberprьfung
                    if(existiertUndGehoert(spielfeld, x+1, y, player)){
                        if(existiertUndGehoert(spielfeld, x+2, y, player)){
                            if(existiertUndGehoert(spielfeld, x+3, y, player)){
                                return player;
                            }
                        }
                    }
                    //senkrechte ьberprьfung
                    if(existiertUndGehoert(spielfeld, x, y+1, player)){
                        if(existiertUndGehoert(spielfeld, x, y+2, player)){
                            if(existiertUndGehoert(spielfeld, x, y+3, player)){
                                return player;
                            }
                        }
                    }
                    //diagonal-rechte ьberprьfung
                    if(existiertUndGehoert(spielfeld, x+1, y+1, player)){
                        if(existiertUndGehoert(spielfeld, x+2, y+2, player)){
                            if(existiertUndGehoert(spielfeld, x+3, y+3, player)){
                                return player;
                            }
                        }
                    }
                    //diagonal-linke ьberprьfung
                    if(existiertUndGehoert(spielfeld, x+1, y-1, player)){
                        if(existiertUndGehoert(spielfeld, x+2, y-2, player)){
                            if(existiertUndGehoert(spielfeld, x+3, y-3, player)){
                                return player;
                            }
                        }
                    }
                }
            }
        }
        int finished = 0;
        for(int i = 0; i < spielfeld.length; i++){
            if(spielfeld[i][0] != 0){
                finished++;

            }
        }
        if(finished == spielfeld.length){
            return -1;
        } else {
            return 0;
        }
    }

    /*
     * Gibt true zurueck, wenn die Position (spalte,zeile) in spielfeld
     * existiert und zum Spieler spieler gehoert. In allen anderen
     * Faellen gibt Sie false zurueck.
     */
    public static boolean existiertUndGehoert(int[][] spielfeld, int spalte,
    int zeile, int spieler) {
        return  spalte >= 0 && spalte < spielfeld.length
        && zeile  >= 0 && zeile < spielfeld[0].length
        && spielfeld[spalte][zeile] == spieler;
    }

    /**
     * Gibt das Spielfeld aus.
     * Eine 0 wird als Leerzeichen, eine 1 als X und eine 2 als O ausgegeben
     *
     * @param spielfeld Spielfeld
     */
    public static void ausgabe(int[][] spielfeld) {
        System.out.println();
        System.out.println();
        for (int y = 0; y < spielfeld[0].length; y++) {
            for (int x = 0; x < spielfeld.length; x++) {
                switch (spielfeld[x][y]) {
                    case 0:
                    System.out.print("|   ");
                    break;
                    case 1:
                    System.out.print("| X ");
                    break;
                    case 2:
                    System.out.print("| O ");
                    break;
                }
            }
            System.out.println("|");
            System.out.println(str_repeat("+---", spielfeld.length) + "+");
        }
        // Spaltennummern ausgeben
        for (int x = 1; x <= spielfeld.length; x++) {
            System.out.print(str_repeat(" ", 2 - (int)(Math.log(x)/Math.log(10))) );
            System.out.print(x + " ");
        }
        System.out.println();
    }

    /**
     * Wiederholt einen String anzahl mal.
     *
     * @param str Zu wiederholender String
     * @param anzahl So oft wird der String wiederholt
     * @return neuer String, der str anzahl mal enthaelt
     */
    public static String str_repeat(String str, int anzahl) {
        String s = "";
        for (int i = 0; i < anzahl; i++)
            s += str;

        return s;
    }
}


A6c)


Code:
/**
 * In diesem Programm werden NUM_CARS Kraftfahrzeuge (KFZ) in einem
 * Verleih verwaltet. Der Benutzer kann entweder ein Auto ausleihen
 * oder zurueckgeben. Bei der Ausleihe kann das gewuenschte Auto
 * angegeben werden oder man kann irgendeins ausleihen.
 *
 * Autor: Johannes Willkomm, Marc Brockschmidt
 * Erstellt: 08.11.2010
 * Letzte Aenderung: 14.11.2010
 * Aenderung: Thi Mui Pham
 */

public class KFZVerleih {
    int NUM_CARS = 3;
    KFZ[] verfuegbar;
    KFZ[] verliehen;

    public void init() {
        final String[] farben = new String[2];
        farben[0] = "rot";
        farben[1] = "blau";
        final String[] typen = new String[3];
        typen[0] = "LKW";
        typen[1] = "PKW";
        typen[2] = "Motorrad";

        verfuegbar = new KFZ[NUM_CARS];
        verliehen = new KFZ[NUM_CARS];

        for (int i = 0; i < NUM_CARS; ++i) {
            KFZ kfz = new KFZ();
            kfz.id = i + 1;
            kfz.farbe = farben[i % farben.length];
            kfz.typ = typen[i % typen.length];
            //Speicherzustand fuer i == 1
            verfuegbar[i] = kfz;
        }
    }

    public static void showArray(KFZ []array) {
        for (int i = 0; i < array.length; ++i) {
            KFZ kfz = array[i];
            if (kfz != null) {
                System.out.print(" ");
                System.out.println(kfz.toString());
            }
        }
    }

    public void show() {
        System.out.println("Verfuegbare KFZ:");
        showArray(verfuegbar);
        System.out.println("Verliehene KFZ:");
        showArray(verliehen);
    }

    public static int readIntInRange(int min, int max) {
        int auswahl = 0;
        do {
            System.out.print("Geben Sie eine Zahl zwischen " + min
                + " und " + max + " ein: ");
            auswahl = IO.readInt();
        } while(auswahl < min || auswahl > max);
        return auswahl;
    }

    public static int findeNrInArray(KFZ []array, int nr) {
        int res = -1;
        for (int i = 0; i < array.length; ++i) {
            KFZ kfz = array[i];
            if (kfz != null && kfz.id == nr) {
                res = i;
                break;
            }
        }
        return res;
    }

    public static int findeLeeresElement(KFZ []array) {
        int res = -1;
        for (int i = 0; i < array.length; ++i) {
            if (array[i] == null) {
                res = i;
                break;
            }
        }
        return res;
    }

    public static int findeNichtLeeresElement(KFZ []array) {
        int res = -1;
        for (int i = 0; i < array.length; ++i) {
            if (array[i] != null) {
                res = i;
                break;
            }
        }
        return res;
    }

    public void ausleihen() {
        //Eingabe:
        System.out.println("Welches KFZ moechten Sie ausleihen"
            + " (Nummer, oder 0 fuer irgendeins)?");
        int nr = readIntInRange(0, NUM_CARS);
        //Eingabe ueberpruefen:
        if (nr == 0) {
            int index = findeNichtLeeresElement(verfuegbar);
            if (index == -1) {
                System.out.println("Fehler: Alle KFZ sind verliehen");
                return;
            } else {
                nr = verfuegbar[index].id;
            }
        }
        int indexFuerNr = findeNrInArray(verfuegbar, nr);
        if (indexFuerNr == -1) {
            System.out.println("Fehler: KFZ Nr. " + nr + " nicht verfuegbar.");
            return;
        }

        //KFZ von verfuegbar nach verliehen verschieben:
        KFZ kfz = verfuegbar[indexFuerNr];
        int leererIndex = findeLeeresElement(verliehen);
        verliehen[leererIndex] = kfz;
        //Behebung des Fehlers: verfuegbar[indexFuerNr]=null;
        //Speicherzustand nach einem ausleih-Vorgang
    }

    public void zurueckgeben() {
        //Eingabe:
        System.out.println("Welches KFZ moechten Sie zurueckgeben (Nummer)?");
        int nr = readIntInRange(1, NUM_CARS);
        //Eingabe ueberpruefen:
        int indexFuerNr = findeNrInArray(verliehen, nr);
        if (indexFuerNr == -1) {
            System.out.println("Fehler: KFZ Nr. " + nr + " nicht verliehen");
            return;
        }

        //KFZ von verliehen nach verfuegbar verschieben
        KFZ kfz = verliehen[indexFuerNr];
        verliehen[indexFuerNr] = null;
        int leererIndex = findeLeeresElement(verfuegbar);
        verfuegbar[leererIndex] = kfz;
    }

    public static void main(String[] args) {
        KFZVerleih unserVerleih = new KFZVerleih();
        unserVerleih.menue();
    }

    public boolean selbstTest(){
        //Bemerkung: es werden nur interne Useraktionen betrachtet die auch mit den beiden Arrays zu tun haben

        //Kein KFZ - Objekt darf sowohl in "verfuegbar" als auch in "verliehen" eingetragen sein
        for (int i=0; i<verliehen.length; ++i){
            if (verliehen[i]!=null){
                for(int j=0; j< verfuegbar.length; ++j){
                    if (verfuegbar[j]!=null){
                        if (((KFZ)verliehen[i]).toString()==((KFZ)verfuegbar[i]).toString()){
                            return false;
                        }
                    }
                }
            }
        }

        //"verliehen" und "verfuegbar" duerfen jedes KFZ - Objekt jeweils hoechstens einmal enthalten
        int gesamtKFZ = 0;
        for(int i=0; i< verliehen.length;++i){
            if (verliehen[i]!=null){
                gesamtKFZ++;
                for (int j=i+1; j< verliehen.length; ++j){
                    if (verliehen[j]!=null){
                        if (((KFZ)verliehen[i]).toString()==((KFZ)verliehen[j]).toString()){
                            return false;
                        }
                    }
                }
            }
        }

        for(int i=0; i< verfuegbar.length;++i){
            if (verfuegbar[i]!=null){
                gesamtKFZ++;
                for (int j=i+1; j< verfuegbar.length; ++j){
                    if (verfuegbar[j]!=null){
                        if (((KFZ)verfuegbar[i]).toString()==((KFZ)verfuegbar[j]).toString()){
                            return false;
                        }
                    }
                }
            }
        }
        //Anzahl der KFZ ?bereinstimmt mit NUM_CARS

        if(!(gesamtKFZ == NUM_CARS)){
            return false;
        }
        return true;
    }

    public void menue() {
        init();

        boolean beenden = false;
        while (!beenden) {
            show();
            // macht den test an dieser Stelle damit das Fehler noch angezeigt wird
            if(!selbstTest()){
                System.out.println("Es ist ein Fehler aufgetreten. Das Programm wird nun beendet.");
                System.exit(0);
            }
            System.out.println("Was moechten Sie tun: ");
            System.out.println(" 1) Ausleihen");
            System.out.println(" 2) Zurueckgeben");
            System.out.println(" 3) Beenden");

            int auswahl = readIntInRange(1, 3);
            switch (auswahl) {
                case 1:
                ausleihen();
                break;
                case 2:
                zurueckgeben();
                break;
                case 3:
                beenden = true;
                break;
            }
        }
        System.out.println("Auf Wiedersehen");
    }
}

_________________
TODO List:
Analyze existence... Annihilate possible Contradictions... Create unbearable Fear...


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Übungen Programmirung (Lösungen/Fragen)
BeitragVerfasst: 22. Nov 2010, 15:31 
Vielschreiber
Vielschreiber||
Benutzeravatar

Registriert: 02.2009
Beiträge: 922
Geschlecht: männlich
Highscores: 38
Ü5 A6


Dateianhänge:
Desktop.7z [2.31 KiB]
10-mal heruntergeladen

_________________
TODO List:
Analyze existence... Annihilate possible Contradictions... Create unbearable Fear...
Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Übungen Programmirung (Lösungen/Fragen)
BeitragVerfasst: 29. Nov 2010, 15:48 
Vielschreiber
Vielschreiber||
Benutzeravatar

Registriert: 02.2009
Beiträge: 922
Geschlecht: männlich
Highscores: 38
bye bye


Dateianhänge:
Übung 6.rar [17.95 KiB]
8-mal heruntergeladen
GeburtstagsDB.zip [1.72 KiB]
10-mal heruntergeladen

_________________
TODO List:
Analyze existence... Annihilate possible Contradictions... Create unbearable Fear...
Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Neues Thema erstellenAntwort erstellen Seite 1 von 3  [ 23 Beiträge ]
Gehe zu Seite  1, 2, 3  Nächste


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron


© phpBB® Forum Software » Style by Daniel St. Jules Gamexe.net | phpBB3 Forum von phpBB8.de