Hilfe, wieso geht der Code nicht???



  • kann mir mal jemand sagen wo da der Fehler ist, ich weis ist nicht schön programmiert, der code soll mit zwei funktionen laufen

    #include <conio.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <iostream.h>
    
    char decoder();
    char coder();
    
    main()
    {
    system("cls");
    char option, pfad;
    
            printf ("Das Dokument wird in folgenden Pfad gespeichert\n\Code.txt");
             getch ();
    
    system("cls");       //bildschirm löschen
    
                        //ausgabe am monitor
            printf ("\t\t\t\tCODIRER/DECODIERER\n\n");
            printf ("\t\tWaehlen sie der folgenden Optionen aus\n\n\t\t(D)ecodieren\t(C)odiren\t(E)xit\n");
    
                    //eingabe für die auswahl der optionen
             scanf ("%c", &option);
    
            switch (option) // options auswahl mit sprüngen
                   {
                   case 'D' : char decoder(); break;
                   case 'd' : char decoder(); break;
                   case 'C' : char coder();  break;
                   case 'c' : char coder();  break;
                   case 'E' : exit(0); break;
                   case 'e' : exit(0); break;
    
                   default:  // bei fehleingabe wir ausgegeben
                   printf ("Falsche eingabe!!!"); getch(); break;
                   }
    }
    //______________________________________________________________________________
    char coder()
    {
    char wort[1000], cod[1000];
    system("cls");
    
            printf ("\t\t\nGeben sie ein wort ein das Codiert werden soll:\n");
              gets (wort); //eingabe des textes
             strlen(wort); //wörter länge wird berechnet
    
            for (int i=0; i<=strlen(wort); i++)         //codieren des textes
                {
                 cod[i]=wort[i]+14;
                }
    
            printf ("Zeichen: %i ", strlen(wort));     // ausgabe der zeichen länge
            printf ("Codierter text:\n%s",   cod);     // ausgabe des codierten textes
            getch();
    
    //Ausgabe in einer Text verzeichnis speichern  muss noch bearbeitet werden
    }
    
    //______________________________________________________________________________
    char decoder()
    {
    char cod [1000];
    char decod[1000];
    int i;
    system("cls");
    
            printf ("\t\t\tDer Codierte Text wir nun Decodiert\n");
            printf ("\n\t\t\tGeben Sie den Codierten Text ein:\n");
              gets (cod);
            strlen (cod);
            for (int i=0; i<=strlen(cod); i++)                             //decodiert den verschlüsselten text
                {
                 decod[i]=cod[i]-14;
                }
            printf ("Der Orignal Text Lautet: \n%s", decod);                //ausgabe des orignal textes
    
    getch();
    }
    


  • was macht's denn? compiliert's nicht?



  • ... und falls es compiliert: Was macht es und was soll es machen.

    Einen Fehler zu finden ist schon mühsam genug, also erwarte nicht,
    das wir auch noch rumraten, was für ein Fehler vorliegt.



  • Soweit ich das jetzt erkenne willst du einen Text codieren und decodieren (Verschiebung um 14 Zeichen im Zeichensatz), nur was übergigst du den Funktionen? Und was sollen sie mit "char" zurückliefern???
    char liefert nur ein zeichen.



  • der code soll ja auch die codieren und decodieren
    nur das soll in einer funktion rein, aber wie das genau die schritte in einer funktion rein schreibt das weis ich nicht, eigendlich sollen ja nur die for schleifen in den funktionen stehen, jede schleife in einer anderen funktion, ich hab das schon mal mit goto geschreiben aber mein lehrer wollte das ich das mit funktionen schreiben soll und nun bin ich erst so weit und schon verzweifelt ...



  • Das ist ei Verschlüsselungsprogramm das ich mal geschrieben habe, vielleicht hilfts dir, mußt es halt nur für deine zwecke verändern.

    #include <iostream.h>
    
    void schluessel(char *string, char *zcopy, int methode, int anzahl){
            strcpy(zcopy,string);
            switch(methode){
                    case 1: strrev(string);
                    break;
                    case 2: for(unsigned int i=0;i<strlen(string);i++){
                                    string[i]=string[i]+anzahl;
                            }
                    break;
                    case 3: for(int a=1;a<=255;a++){
                                    for(unsigned int i=0;i<strlen(string);i++){
                                            zcopy[i]=string[i]+a;
                                    }
                                    cout << a << ": ";
                                    cout << zcopy << endl;
                            }
                    break;
            }
    }
    
    void main(){
            char zeichen[81];
            char zcopy[81];
            int auswahl;
            int anzahl=0;
            cout << "Geben Sie die Zeichenkette ein:\n";
            cin.getline(zeichen,80);
            cout << "Waehlen Sie die Methode:\n";
            cout << "<1> Umkehrung\n";
            cout << "<2> Verschiebung\n";
            cout << "<3> Etschluesseln\n";
            cin >> auswahl;
            if(auswahl==2){
                    cout << "Um wieviel Zeichen?: ";
                    cin >> anzahl;
            }
            schluessel(zeichen,zcopy,auswahl,anzahl);
            cout << "Das Ergebnis:\n";
            cout << zeichen;
            char p[50];
            cin.getline(p,50);
            cin.getline(p,50);
    }
    


  • und so schreibst du das in die Dateien jetzt kannst ja ein bißchen mit beiden experimentieren.

    #include <iostream.h>
    #include <fstream.h>
    #include <string.h>
    
    void schluessel(char *kette, int methode, int anzahl);
    
    void schluessel(char *kette, int methode, int anzahl){
            switch(methode){
                    case 1: for(unsigned int i=0;i<strlen(kette);i++){
                                    kette[i]=kette[i]+anzahl;
                            }
                    break;
                    case 2: for(unsigned int i=0;i<strlen(kette);i++){
                                    kette[i]=kette[i]-anzahl;
                            }
                    break;
            }
    }
    
    void main(){
            char Filename[16];
            char Eingabe[81];
            char ausvers[81];
            char ausunvers[81];
            char lese;
    
            cout << "Dateiname ohne .txt: ";
            cin.getline(Filename,15);
    
            strcat(Filename,".txt");
            ofstream fout(Filename);
            cout << "Bitte die Zeichenkette eingeben:\n";
            cin.getline(Eingabe,80);
            schluessel(Eingabe,1,56);
            fout << Eingabe << endl;
            fout.close();
    
            ifstream fin(Filename);
            int i=0;
            while(fin.get(lese)){
                    ausvers[i]=lese;
                    lese=lese-56;
                    ausunvers[i]=lese;
                    i++;
            }
            fin.close();
    
            cout << "Verschluesselt:\n";
            cout << ausvers << endl << endl;
            cout << "Unverschluesselt:\n";
            cout << ausunvers << endl << endl;
    
            char p[50];
            cin.getline(p,50);
    }
    

    sorry wenn der Code nicht standard ist, aber das grundprinzip sollte klar werden.



  • Vampir87 schrieb:

    ...wieso geht der Code nicht???

    Ganz klar: Weil er keine Beine hat !

    Nochmal: Du bekommst hier im Forum gut Hilfe, aber die wenigsten haben Lust, stundenlang rumzuraten
    a) Was Du von dem Code erwartest und
    b) was davon nicht erfüllt wird.

    DU könntest das in 2 Sätzen schreiben und dann stürzen sich die Leute gerne darauf, WARUM er Deine Erwartungen nicht erfüllt.

    Mal ein Vergleich: Wenn die Frage "Warum bekomme ich das Ding nicht ?" nicht zufriedenstellend beantwortet wird, ist das nicht unbedingt ein Zeichen mangelnder Hilfsbereitschaft.

    Gruß,

    Simon2.



  • Vampir87 schrieb:

    switch (option) // options auswahl mit sprüngen
    {
    case 'D' : char decoder(); break;
    //...               }
    }
    

    Das da ist KEIN Funktionsaufruf, sondern eine Funktions-Dekalation. Such dir am besten mal ein gutes Tutorial oder C-Handbuch und lass dir erklären, WIE man Funktionen aufruft.

    (PS: Und die case-Fälle kannst du übrigens auch zusammenfassen ;))



  • okey ja dann danke euch allen, ich werd mal dann die sachen versuchen...


Anmelden zum Antworten