Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

27.10.2012, 06:30

Mein erstes Programm

Hallo,
bin im Buch auf Seite 100 angekommen und habe mir diese Zahl mal als Anlass genommen, mein erstes Programm eigenständig zu schreiben.

Erstmal der code:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
// Primzahl.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
//

#include <iostream>
using namespace std;



// Hauptprogramm
int main ()
{
    // Variablen
    int Prime_number;
    int Result = 0;

    // Abfragen
    cout << "Please enter possible prime number: ";
    cin >> Prime_number;

    // Rechnen

    for (int i=2; i <= Prime_number ; i++)
    {
        // Auf Kommastelle prüfen
    
        if (Prime_number%i == 0)
        {   
            Result +=1;
        }
        

    }
    
    if(Result == 1)
    cout << "You got a prime number!" << endl;
    else
    cout << "No luck" <<endl;

    return 0;
}


Ich hatte ein ziemliches Problem mit der for Schleife und sie ist immernoch ziemlich bescheuert.
Zuerst hatte ich i=1 und dadurch gab Result für die Zahl 7

Quellcode

1
1111112

aus.
Erschien mir auch logisch, 6 Durchläufe wo 7/1 immer keinen rest gab und einmal 7/1 und 7/7. Natürlich hatte ich mir das mit Result+1 anders vorgestellt und wollte eine art Counter haben, der 2 für eine Primzahl ausgibt.

Habe dann i in 2 geändert und dadurch für die Zahl 7

Quellcode

1
000001
bekommen. An der stelle bin ich dann leicht verzweifelt und habe einfach mal versucht ob 000001 das Gleiche wie 1 ist ... und ja, scheint so zu sein :D.

Bestimmt nicht besonders elegant gelöst, aber so lange es erstmal klappt ... ;).

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

27.10.2012, 08:30

OK, ich weiß nicht so genau, was Du mit diesem Thema erreichen willst, es enthält ja keine einzige Frage.
Daher übe ich mal wild Kritik:

1) Die Kommentare sind sowas von überflüssig. "Hauptprogramm", ja, genau das sagt "main" aus. "Variablen", auch das sieht man, das muss man nicht beschreiben. Man sollte sich generell überflüssige Kommentare sparen. Damit schreibt und liest sich der Code schneller und Nutzen haben die eh keinen.

2) Eine Primzahl-Prüfung reicht bis zur Wurzel der Zahl. Warum? Weil sich die Zahl 10 auf keinen Fall mehr durch 4 teilen lassen kann. Und 10.000 auf keinen Fall mehr durch etwas, was 101 oder größer ist. Das spart massiv Rechenzeit. Selbst dann wäre es kein optimaler Algorithmus, aber deutlich besser als das da.
Cleverer wäre außerdem ein Boolean in Kombination mit einem break. Gibt man momentan 1.000.000 ein, dann prüft Dein Programm 1.000.000mal. Es könnte allerdings schon bei der Prüfung auf %2 abbrechen.

3) Dein "if" am Ende ist grauenvoll formatiert und genau genommen kannst Du Dir das komplett schenken, wenn Du den Code minimal änderst.

4) Englisch/Deutscher Mix wird von den meisten professionellen Entwicklern (sprich denen, die ihr Geld damit verdienen) und denen, die es mal werden wollen, als ganz schlechter Stil empfunden.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

3

27.10.2012, 10:11

Genau, sinnvolle(!) Kritik ist gerne Willkommenn. Allerdings sollte dir vielleicht auch klar seien, dass ich in ein paar Stunden 100 Seiten gelesen habe und das so ziemlich alles ist, was ich im moment weiß. Mir ist auch klar, dass dieses "Programm" jede größere Zahl xfach prüft und nicht sinnvoll ist.

Und nein, ich möchte mich weder einen professionellen Entwickler nennen, noch Geld damit verdienen. Ich hatte alles is Englische übersetzt da ich in einem englischen Forum etwas gefragt habe.

Oh, und solche Aussagen helfen immens weiter! Danke.

Zitat

3) Dein "if" am Ende ist grauenvoll formatiert und genau genommen kannst
Du Dir das komplett schenken, wenn Du den Code minimal änderst.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

4

27.10.2012, 11:46

Interpretier mal nicht alles als persönlichen Angriff, sondern nimm es auf und mach es besser.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

5

27.10.2012, 12:33

Was soll denn an der Kritik von BlueCobold jetzt nicht sinnvoll gewesen sein? Wenn du so schnell lernst (das nach 100 Seiten lesen ist schon gar nicht so schlecht für den Anfang) kannst du dir das doch zusätzlich noch merken?
Bei den Kommentaren ist es zwar Ansichtssache ob du nun mehr oder weniger benutzt, aber wie BlueCobold schon sagt wird es dadurch eher unleserlicher. Ich benutze fast nie Kommentare, höchstens mal wenn es kompliziert ist oder ich etwas auskommentiere, und schreibe lieber eine Doku.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

6

29.10.2012, 09:43

Gibt es jetzt ein Problem oder eine bestimme Frage oder geht es wirklich nur um allgemeines Feedback? An sich ist das wirklich schon ganz gut für den Anfang. BlueCobold hat dir schon mal ein paar Tricks genannt, wie du das ganze etwas besser machen könntest. Zum Beispiel erst bei der Wurzel anzufangen ist etwas, was sich recht schnell umsetzen lässt. Du kannst ja mal nach "Wurzel C++" oder so googlen und gucken wie man die berechnen kann. Dabei lernst du dann ja auch wieder etwas. Der Tipp mit dem Bool-Wert in der Schleife war auch wirklich nicht doof. Deine Variablezum Zählen, wie oft die Zahl restfrei geteilt werden konnte brauchst du ja so eigentlich nicht. Eigentlich reicht es dir ja aus zu wissen, ob sie restfrei geteilt werden konnte. Der Hinweis auf break ist da auch hilfreich. Damit kannst du die Schleife direkt abbrechen. Zur Formatierung am Ende. Zeilen nach If und Else etc rückt man normalerweise ein. So wie du es oben bei dem if und der Schleife auch gemacht hast. Für die Übersicht schlag ich dir vor am Anfang immer mit Klammern zu arbeiten. Auch wie oben. Klar kannst du bei einer Zeile nach if, else und so weiter die Klammern weg lassen. Da kanns dann aber schnell mal zu Problemen kommen. Du verlierst einfach schnell dadurch die Übersicht. Das wurde im Buch bestimmt auch irgendwo angesprochen. Musst du noch mal gucken.
An sich ein feines Testprogramm und für den Anfang doch was schickes:)
Weiterhin viel Erfolg.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Schorsch« (29.10.2012, 13:57)


BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

7

29.10.2012, 09:57

Mit Continue kann er nicht abbrechen, das geht nur mit Break.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

8

29.10.2012, 13:57

Meinte ich natürlich. War etwas in Gedanken. Ist im Beitrag geändert.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Werbeanzeige