Lösungen der Aufgaben (Tag 1)

Benutzeravatar
LinuxFan
Mausschubser
Mausschubser
Beiträge: 73
Registriert: 29. Sep 2008 15:21
Wohnort: Bensheim
Kontaktdaten:

Lösungen der Aufgaben (Tag 1)

Beitrag von LinuxFan » 30. Sep 2008 00:02

Hallo!

Hier sind meine Lösungen der Aufgaben vom Vorkurs "Programmieren" Tag 1:

EinsBisZehn.java:

Code: Alles auswählen

public class EinsBisZehn {
        public static void main(String[] args) {
                for (int i = 1; i <= 10; i++)
                        System.out.println(i);
                int x = 1;
                while (x <= 10) {
                        System.out.println(x);
                        x++;
                }
        }
}
EinMalEins.java:

Code: Alles auswählen

public class EinMalEins {
        public static void main(String[] args) {
                // Definition des max. Faktoren-Werts (x * y)
                int MAX_X = 10;
                int MAX_Y = 10;
                System.out.print("*\t"); // Den Stern ausgeben
                for (int x = 1; x <= MAX_X; x++) { // Schleife fuer die erste Zeile (* 1 2 3 ... MAX_X)
                        System.out.print(Integer.toString(x) + "\t");
                }
                System.out.println(); // Naechste Zeile
                for (int y = 1; y <= MAX_Y; y++) { // Schleife ueber alle folgenden Zeilen der Matrix (y)
                        System.out.print(Integer.toString(y) + "\t");
                        for (int x = 1; x <= MAX_X; x++) { // Schleife ueber alle Spalten (x)
                                System.out.print(Integer.toString(x * y) + "\t"); // Ausgabe von x * y
                        }
                        System.out.println(); // Naechste Zeile
                }
        }
}
Fakultaet.java:

Code: Alles auswählen

public class Fakultaet {
        public static void main(String[] args) {
                int n_fak = Integer.valueOf(args[0]).intValue();
                // 1. Methode: Schleife
                double fak_result = 1;
                for (int i=1; i <= n_fak; i++)
                        fak_result *= i;
                System.out.println("Ergebnis 1: " + (int)fak_result);
                // 2. Methode: Rekursion
                fak_result = fak(n_fak);
                System.out.println("Ergebnis 2: " + (int)fak_result);
        }
        private static double fak(int n) {
                if (n == 1)
                        return 1;
                else
                        return n * fak(n-1);
        }
}
Primzahlen.java:

Code: Alles auswählen

public class Primzahlen {
        public static void main(String[] args) {
                double zahl = Double.valueOf(args[0]).doubleValue();
                System.out.println("Primzahl? " + istPrimzahl(zahl));
                // Alle Zahlen bis zahl pruefen
                for (int i = 1; i <= zahl; i++) {
                        if (istPrimzahl(i))
                                System.out.println(i + " ist Primzahl!");
                }
        }
        private static boolean istPrimzahl(double n) {
                // Ist diese Zahl eine Primzahl?
                boolean teiler = false;
                int i = 2;
                // Alle Zahlen (i) bis (zahl-1) durchgehen und pruefen, ob zahl durch i teilbar ist
                while ( (! teiler) && (i <= n/2) ) {
                        if ((n % i) == 0) {
                                teiler = true;
                                break;
                        }
                        i++;
                }
                return !teiler;
        }
}
GiveMoreMoney_FirstTry.java:

Code: Alles auswählen

public class GiveMoreMoney_FirstTry {
        public static void main(String[] args) {
                int money = 0;
                char Ga, Ia, Va, Ea;
                char Mb, Ob, Rb, Eb;
                char Mc, Oc, Nc, Ec, Yc;
                String a, b, c;
                for (int give = 0; give <= 9999; give++) {
                        for (int more = 1000; more <= 9999; more++) {
                                money = give + more;
                                // Pruefen: Money muss innerhalb 10000 und 99999 liegen, da M > 0 und M <= 9
                                if ( (money <= 99999) && (money >= 10000) ) {
                                        // Deklarieren der Variablenwerte der Buchstaben
                                        a = Integer.toString(give);
                                        b = Integer.toString(more);
                                        c = Integer.toString(money);

                                        // Die Strings mit Nullen auffuellen
                                        for (int i = a.length() + 1; i<= 4; i++) a = "0" + a;
                                        for (int i = b.length() + 1; i<= 4; i++) a = "0" + b;
                                        for (int i = c.length() + 1; i<= 5; i++) a = "0" + c;

                                        Ga = a.charAt(0);
                                        Ia = a.charAt(1);
                                        Va = a.charAt(2);
                                        Ea = a.charAt(3);

                                        Mb = b.charAt(0);
                                        Ob = b.charAt(1);
                                        Rb = b.charAt(2);
                                        Eb = b.charAt(3);

                                        Mc = c.charAt(0);
                                        Oc = c.charAt(1);
                                        Nc = c.charAt(2);
                                        Ec = c.charAt(3);
                                        Yc = c.charAt(4);

                                        if ( ( (Ea == Eb) && (Ea == Ec) ) && (Mb == Mc) && (Ob == Oc) ) {
                                                System.out.println("   " + Ga + " " + Ia + " " + Va + " " + Ea);
                                                System.out.println(" + " + Mb + " " + Ob + " " + Rb + " " + Eb);
                                                System.out.println("---------");
                                                System.out.println(" " + Mc + " " + Oc + " " + Nc + " " + Ec + " " + Yc);
                                                System.out.println();
                                        }
                                }
                        }
                }
        }
}
GiveMoreMoney_Final.java:

Code: Alles auswählen

public class GiveMoreMoney_Final {
        public static void main(String[] args) {
                // Variablen für die "Buchstaben" deklarieren
                int Ga, Ia, Va, Ea;
                int Mb, Ob, Rb, Eb;
                int Mc, Oc, Nc, Ec, Yc;
                for (int give = 0; give <= 9999; give++) { // Schleife über alle GIVE-Werte
                        for (int more = 1000; more <= 9999; more++) { // Schleife über alle MORE-Werte
                                int money = give + more;
                                // Pruefen: Money muss innerhalb 10000 und 99999 liegen, da M > 0 und M <= 9
                                if ( (money <= 99999) && (money >= 10000) ) {
                                        // GIVE
                                        Ga = give/1000;
                                        Ia = give/100 - Ga*10;
                                        Va = give/10  - Ga*100  - Ia*10;
                                        Ea = give     - Ga*1000 - Ia*100 - Va*10;
                                        // MORE
                                        Mb = more/1000;
                                        Ob = more/100 - Mb*10;
                                        Rb = more/10  - Mb*100  - Ob*10;
                                        Eb = more     - Mb*1000 - Ob*100 - Rb*10;
                                        // MONEY
                                        Mc = money/10000;
                                        Oc = money/1000 - Mc*10;
                                        Nc = money/100  - Mc*100   - Oc*10;
                                        Ec = money/10   - Mc*1000  - Oc*100  - Nc*10;
                                        Yc = money      - Mc*10000 - Oc*1000 - Nc*100 - Ec*10;
                                        // Die "Buchstaben" müssen jeweils die selben Werte haben, wenn Sie der gleiche Buchstabe sind
                                        if ( ( (Ea == Eb) && (Ea == Ec) ) && (Mb == Mc) && (Ob == Oc) ) {
                                                // Ausgabe eines gültigen Ergebnisses
                                                System.out.println("   " + Ga + " " + Ia + " " + Va + " " + Ea);
                                                System.out.println(" + " + Mb + " " + Ob + " " + Rb + " " + Eb);
                                                System.out.println("---------");
                                                System.out.println(" " + Mc + " " + Oc + " " + Nc + " " + Ec + " " + Yc);
                                                System.out.println();
                                        }
                                }
                        }
                }
        }
}
GiveMoreMoney2.java:

Code: Alles auswählen

public class GiveMoreMoney2 {
        public static void main(String[] args) {
                // Variablen für die "Buchstaben" deklarieren
                int[] give_nums = new int[4];
                int[] more_nums = new int[4];
                int[] money_nums = new int[5];
                char[] wait = {'|', '/', '-', '\\'};
                int cnt = 0;
                System.out.print("Wait");
                for (int give = 0; give <= 9999; give++) { // Schleife über alle GIVE-Werte
                        for (int more = 1000; more <= 9999; more++) { // Schleife über alle MORE-Werte
                                //if (cnt % 333337 == 0) System.out.print("\b" + wait[cnt%4]);
                                if (cnt % 9000000 == 0) System.out.print (".");
                                cnt++;
                                int money = give + more;
                                // Pruefen: Money muss innerhalb 10000 und 99999 liegen, da M > 0 und M <= 9
                                if ( (money <= 99999) && (money >= 10000) ) {
                                        // GIVE
                                        give_nums[0] = give/1000;                                                                                     // G
                                        give_nums[1] = give/100 - give_nums[0]*10;                                                                    // I
                                        give_nums[2] = give/10  - give_nums[0]*100  - give_nums[1]*10;                                                // V
                                        give_nums[3] = give     - give_nums[0]*1000 - give_nums[1]*100 - give_nums[2]*10;                             // E
                                        // MORE
                                        more_nums[0] = more/1000;                                                                                     // M
                                        more_nums[1] = more/100 - more_nums[0]*10;                                                                    // O
                                        more_nums[2] = more/10  - more_nums[0]*100  - more_nums[1]*10;                                                // R
                                        more_nums[3] = more     - more_nums[0]*1000 - more_nums[1]*100 - more_nums[2]*10;                             // E
                                        // MONEY
                                        money_nums[0] = money/10000;                                                                                  // M
                                        money_nums[1] = money/1000 - money_nums[0]*10;                                                                // O
                                        money_nums[2] = money/100  - money_nums[0]*100   - money_nums[1]*10;                                          // N
                                        money_nums[3] = money/10   - money_nums[0]*1000  - money_nums[1]*100  - money_nums[2]*10;                     // E
                                        money_nums[4] = money      - money_nums[0]*10000 - money_nums[1]*1000 - money_nums[2]*100 - money_nums[3]*10; // Y
                                        // Die "Buchstaben" müssen jeweils die selben Werte haben, wenn Sie der gleiche Buchstabe sind
                                        if ( ( (give_nums[3] == more_nums[3]) && (give_nums[3] == money_nums[3]) ) && (more_nums[0] == money_nums[0]) && (more_nums[1] == money_nums[1]) ) {
                                                // Werte der "Buchstaben" dürfen nicht gleich sein (auÃer die Ausnahmen in der if-Abfrage)
                                                boolean ok = true;
                                                for (int a = 0; a <= 3; a++) {
                                                        for (int b = 0; b <= 3; b++) {
                                                                if ((give_nums[a] == more_nums[b]) && (a != 3) && (b != 3)) ok = false;
                                                        }
                                                }
                                                for (int a = 0; a <= 3; a++) {
                                                        for (int c = 0; c <= 4; c++) {
                                                                if ((give_nums[a] == money_nums[c]) && (a != 3) && (c != 3)) ok = false;
                                                        }
                                                }
                                                for (int b = 2; b <= 3; b++) {
                                                        for (int c = 2; c <= 4; c++) {
                                                                if (more_nums[b] == money_nums[c]) ok = false;
                                                        }
                                                }
                                                if (ok) {
                                                        // Ausgabe eines gültigen Ergebnisses
                                                        System.out.print("\b");
                                                        System.out.println("   " + give_nums[0] + " " + give_nums[1] + " " + give_nums[2] + " " + give_nums[3]);
                                                        System.out.println(" + " + more_nums[0] + " " + more_nums[1] + " " + more_nums[2] + " " + more_nums[3]);
                                                        System.out.println("_________");
                                                        System.out.println(" " + money_nums[0] + " " + money_nums[1] + " " + money_nums[2] + " " + money_nums[3] + " " + money_nums[4]);
                                                        System.out.println();
                                                }
                                        }
                                }
                        }
                }
                System.out.println("... done!");
        }
}
Viel Spaß! Falls noch Fragen auftauchen sollten, könnt ihr sie mir gerne stellen.
Dateianhänge
Tag1_Aufgaben.tar.gz
(6.12 KiB) 24-mal heruntergeladen
Victor-Philipp Negoescu
http://www.viathinksoft.de

Benutzeravatar
LinuxFan
Mausschubser
Mausschubser
Beiträge: 73
Registriert: 29. Sep 2008 15:21
Wohnort: Bensheim
Kontaktdaten:

Re: Lösungen der Aufgaben (Tag 1)

Beitrag von LinuxFan » 30. Sep 2008 08:59

Hallo,

Aufgabe MakeMoreMoney2 ist nicht richtig.
Victor-Philipp Negoescu
http://www.viathinksoft.de

Benutzeravatar
s_hess
Ehemalige Fachschaftler
Beiträge: 31
Registriert: 17. Okt 2006 11:18
Wohnort: Frankfurt
Kontaktdaten:

Re: Lösungen der Aufgaben (Tag 1)

Beitrag von s_hess » 30. Sep 2008 14:59

Die Materialien werden auch am Tag danach jeweils unter

http://www.d120.de/vorkurs-materialien/

veröffentlicht...

auch die Lösungen, damit könnt ihr dann eure Ergebnisse zuhause nochmal vergleichen...
Sämtliche Schreibfehler dienen ausschliesslich zur Belustigung
der Beteiligten.

es ist eagl wie man die Wtröer shrcbiet, es
ist nur Whtciig den eetrsn und den lzeetn
Bhsuctbaen rhticig zu sbeihcren!!!

Benutzeravatar
Robert
Ehemalige Fachschaftler
Beiträge: 511
Registriert: 6. Okt 2004 17:38
Wohnort: DA

Re: Lösungen der Aufgaben (Tag 1)

Beitrag von Robert » 1. Okt 2008 06:56

Hallo, ich weiß zwar nicht genau wie die Aufgaben gestellt waren, aber ich kann euch nur empfehlen sinnvollere Variablennamen als 1-3 Buchstaben zu nehmen. Sonst versteht ihr nach 2 Monaten euren eigenen Code selber nicht mehr. Zum Beispiel count oder countErsteZeile bei Zählvariablen in for-schleifen

Antworten

Zurück zu „Archiv“