Lerne rot13 (war: Möchte 2d Spiele programmieren)

Schnelle objektorientierte, kompilierende Programmiersprache.
lolliger
Beiträge: 36
Registriert: Sa Mär 05, 2011 1:01 pm

Re: Lerne rot13 (war: Möchte 2d Spiele programmieren)

Beitrag von lolliger » Fr Mär 11, 2011 1:55 pm

Xin hat geschrieben:Ähh... definitiv nein. Sowas programmiere bitte nie wieder, nur weil etwas durch den Compiler geht, heißt das nicht, dass das eine gute Idee ist.
Niemand erwartet in einem Funktionsaufruf eine Zuweisung, schon gar nicht in einem printf. Stell Dir vor, Du musst den Code irgendwann nochmal lesen. Mach das - wenn schon - in zwei Schritten.

Code: Alles auswählen

verschluesselt[i]=asciiwert+13;
printf("%c",verschluesselt[i]);
damit man auch erkennen kann, dass hier zwei vollkommen unterschiedliche Dinge passieren.

Und wenn das erkennbar ist, dann lass das printf weg.

Code: Alles auswählen

verschluesselt[i]=asciiwert+13;
Grundsätzlich ist die Zuweisung also durchaus richtig, aber bitte nicht innerhalb eines printf()!

Die Funktion soll einen Text verschlüsseln. Je größer die Programme werden, desto weniger geben sie auf dem Bildschirm aus. Wenn Du den Compiler startest, da passieren unglaubliche Dinge drin und im Idealfall gibt er überhaupt nichts aus.

Beim Programmieren kapselst Du Probleme. Die Funktion rot13() verschlüsselt. Fertig - mehr nicht - Kapsel zu.
Du machst aus großen Problemen kleine. Wenn Du das Problem hast, einen String zu verschlüsseln und auszugeben, dann rufst Du rot13() auf und gibst dann den String aus. Wenn Du nur verschlüsseln willst, geht das mit Deiner Funktion nicht. Also weg mit dem printf und am Schluss gibst Du das aus, was rot13() Dir verschlüsselt hat.
OK, hab ich gemacht. :)
Xin hat geschrieben:Dann versuch ich die ganze Zeit, Dir zu vermitteln, dass Du Kommandozeilen-Parameter annimmst und verschlüsselst, anstatt Fragen zu stellen.
Meinst du, dass ich z.B.: eine -.txt Datei öffnen und dann diese verschlüsseln soll??? :?:

Wenn nicht, weis ich nicht so recht, wie ich Komandozeilen-Parameter auf mein Programm übertragen soll. :(

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Lerne rot13 (war: Möchte 2d Spiele programmieren)

Beitrag von Xin » Fr Mär 11, 2011 2:08 pm

lolliger hat geschrieben:
Xin hat geschrieben:Dann versuch ich die ganze Zeit, Dir zu vermitteln, dass Du Kommandozeilen-Parameter annimmst und verschlüsselst, anstatt Fragen zu stellen.
Meinst du, dass ich z.B.: eine -.txt Datei öffnen und dann diese verschlüsseln soll??? :?:

Wenn nicht, weis ich nicht so recht, wie ich Komandozeilen-Parameter auf mein Programm übertragen soll. :(
Darum habe ich dir zum zweiten Mal den Link mitgeschickt.

Wenn das Programm so aufzurufen ist, passt es:

Code: Alles auswählen

$ rot13 proggen.org
cebttra.bet
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

lolliger
Beiträge: 36
Registriert: Sa Mär 05, 2011 1:01 pm

Re: Lerne rot13 (war: Möchte 2d Spiele programmieren)

Beitrag von lolliger » Fr Mär 11, 2011 4:04 pm

Das ist es aber nicht!!!
Was soll ich tun???
:cry: :cry: :cry:

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Lerne rot13 (war: Möchte 2d Spiele programmieren)

Beitrag von Xin » Fr Mär 11, 2011 4:23 pm

lolliger hat geschrieben:Das ist es aber nicht!!!
Was soll ich tun???
:cry: :cry: :cry:
Xin hat geschrieben:Dann versuch ich die ganze Zeit, Dir zu vermitteln, dass Du Kommandozeilen-Parameter annimmst und verschlüsselst, anstatt Fragen zu stellen.
Ich gehe davon aus, dass Du Dir den Link nicht angesehen hast, sonst würdest Du vermutlich eine konkretere Frage stellen.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

lolliger
Beiträge: 36
Registriert: Sa Mär 05, 2011 1:01 pm

Re: Lerne rot13 (war: Möchte 2d Spiele programmieren)

Beitrag von lolliger » Fr Mär 11, 2011 5:28 pm

Xin hat geschrieben:Ich gehe davon aus, dass Du Dir den Link nicht angesehen hast, sonst würdest Du vermutlich eine konkretere Frage stellen.
Doch, ich habe mir den Link angesehen, aber bei der Eingabe immer einen Fehler gemacht. :oops:
Jetzt lässt sich das Programm so öffnen, wie du geschrieben hast!!! :D

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Lerne rot13 (war: Möchte 2d Spiele programmieren)

Beitrag von Xin » Fr Mär 11, 2011 5:50 pm

lolliger hat geschrieben:
Xin hat geschrieben:Ich gehe davon aus, dass Du Dir den Link nicht angesehen hast, sonst würdest Du vermutlich eine konkretere Frage stellen.
Doch, ich habe mir den Link angesehen, aber bei der Eingabe immer einen Fehler gemacht. :oops:
Jetzt lässt sich das Programm so öffnen, wie du geschrieben hast!!! :D
Und wo isses? ^^
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

lolliger
Beiträge: 36
Registriert: Sa Mär 05, 2011 1:01 pm

Re: Lerne rot13 (war: Möchte 2d Spiele programmieren)

Beitrag von lolliger » Fr Mär 11, 2011 7:25 pm

Wie wo isses???
In meinem Verzeichniss!?!

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: Lerne rot13 (war: Möchte 2d Spiele programmieren)

Beitrag von Kerli » Fr Mär 11, 2011 7:41 pm

lolliger hat geschrieben:Wie wo isses???
Wohl der Code mit dem Auswerten der Kommdozeilenparameter ;)
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

lolliger
Beiträge: 36
Registriert: Sa Mär 05, 2011 1:01 pm

Re: Lerne rot13 (war: Möchte 2d Spiele programmieren)

Beitrag von lolliger » Sa Mär 12, 2011 10:19 am

Entschuldigt bitte, aber irgendwie komme ich gerade nicht mit! :(

Alsoooo...
Wenn ich dieses Programm("erstesprogramm")

Code: Alles auswählen

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


int i;
char asciiwert[1];
char verschluesselt[500];

void rot13 ( char const * text, unsigned int l, char * asciiwert )
{
    for (i=0;i<l-1;i++)
    {
        char asciiwert = text[i];

        if ( (asciiwert >='a' && asciiwert <='m') || (asciiwert >='A' && asciiwert <='M') )
        verschluesselt[i]=asciiwert+13;

        else if ( (asciiwert >='n' && asciiwert <='z') || (asciiwert >='N' && asciiwert <='Z') )
        verschluesselt[i]=asciiwert-13;

        else
        verschluesselt[i]=asciiwert;
    }

}


int main ( int argc, char* argv[] )
{

    int i, l;
    char text[500];


    printf("Bitte einen Text eingeben, der (de)kodiert werden soll:\n");
    fgets(text,500,stdin);

    l=strlen(text);

    rot13(text,l,asciiwert);

    printf("\n\nVerschl\x81sselter Text:\n%s\n",verschluesselt,argc);



    return 0;
}
im Konsolenfenster so öffne:

Code: Alles auswählen

erstesprogramm.exe $ rot13 proggen.org cebttra.bet
startet das Programm und verlangt, dass ich einen Text zum Verschlüsseln eingeben soll.
Wenn ich das dann mache zeigt er mir den kodierten Text an und das wars!!!
Erklärt mir doch bitte mal genau, was ich wirklich machen soll!

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Lerne rot13 (war: Möchte 2d Spiele programmieren)

Beitrag von cloidnerux » Sa Mär 12, 2011 10:38 am

Du verstehst glaube ich nicht richtig das mit der Konsole.
Du sollst ein Programm schreiben, das MIT dem Aufruf, schon alle benötigten Werte und Einstellungen hat, also mit den Parametern.
Das hat den Sinn, das man einem Programm schon vor dem Start sagen kann, was es tuen soll, bzw welche Werte es verwenden soll.
Das bedeutet aber für dich als Programmierer, das du eben NICHT während der Ausführung nach den Werten fragen sollst, sondern diese nur noch aus den übergebenen Parametern(wir erinnern uns:rot13 proggen.org <- Parameter) auslesen sollst und dann NUR noch das Ergebnis ausgeben musst.
Daher, das fgets weg und das auslesen der Parameter rein: http://proggen.org/doku.php?id=c:func:main:parameter(Den link hat man dir schon einmal gegeben).

Also zusammengefasst soll folgendes Passieren:
Du rufst dein Programm mit einem Parameter "proggen.org" auf, dein Programm liest diesen PARAMETER und gibt dann "cebttra.bet" aus.

Ganz wichtig beim Programmieren ist es, zu wissen was man erreichen will/muss. Wenn man ohne konkreten plan drauflos programmiert, endet das meistens im Chaos. Das bedeutet auch für dich, das du immer wissen solltest, warum der Computer deinen Ausdruck wie Interpretieren sollte, sprich: du solltest dich immer Fragen was der Computer mit deinem Code WIRKLICH macht.

Ich hoffe ich konnte Helfen.
MfG cloidnerux,
Redundanz macht wiederholen unnötig.
quod erat expectandum

Antworten