Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 12:27

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[C] Eingabe: Auf Enter warten

Discussion on [C] Eingabe: Auf Enter warten within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
Belur's Avatar
 
elite*gold: 0
Join Date: Jul 2009
Posts: 3,441
Received Thanks: 1,473
[C] Eingabe: Auf Enter warten

Hey E*pvpers.

Bin angefangen zu studieren und wir sollten die Caesar Verschlüsselung programmieren.
Das klappt auch soweit ganz gut.
Hab das so gemacht:

PHP Code:
char a[] = "abcdefghijklmnopqrstuvwxyz";
char c[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

void caesar(int verschiebung){
char b[32];                                      

printf("Bitte zu verschlüsselnden Text eingeben\n");
fflush(stdout);
fgets(b32stdin);


if(
verschiebung<0){
    
int zs verschiebung*-1;
    
verschiebung 26-zs;
    if(
verschiebung<0){

        
verschiebung verschiebung*-1;
    }

}

int i=0;
int j=0;
int k=1;
for(
i=0i<(strlen(b)-2); i++){


    while(
j<26 && k==1){

        if(
a[j]==b[i]){

            if((
j+verschiebung)>25){
                
int differenz=(j+verschiebung)%26;
                
b[i]=a[differenz];
                
k=0;

            }else{
                
b[i]=a[j+verschiebung];
                
k=0;
            }


        }
        if(
c[j]==b[i]){

            if((
j+verschiebung)>25){
                
int differenz=(j+verschiebung)%26;
                
b[i]=c[differenz];
                
k=0;
            }else{
                
b[i]=c[j+verschiebung];
                
k=0;
            }

        }
        
j++;
    }
    
j=0;
    
k=1;
}
printf(b);
}



int main(int argccharargv[]) {
    
char puffer[5];
    
printf("Bitte Verschiebung eingeben\n");
    
fflush(stdout);
    
fgets(puffer32stdin);
    
int zahl atoi(puffer);

    
caesar(zahl);
    return 
0;


Ich weiß, dass hätte man sicherlich noch besser machen können, aaaber für mich reicht das erstmal. Wir fangen bescheiden an.

Nun war die Aufgabe, dass man einen verschlüsselten Text hat, und den entschlüsseln soll.
Wollte also eine Methode machen, die das die Methode "caesar" aufruft. Wenn man Enter drückt, wird die Methode wieder aufgerufen, nur der Parameter um eins erhöht.

Man drückt also so lange Enter bis ein lesbarer Text zum vorschein kommt. Zmdst denke ich, dass das das Ziel sein soll

Meine Frage also:

Wie "lausche" ich auf die Eingabe von Enter. ??
Hoffe mir kann da jmd helfen

Grüße
Belur is offline  
Old 11/12/2013, 22:26   #2
 
XxharCs's Avatar
 
elite*gold: 34
Join Date: Apr 2011
Posts: 1,475
Received Thanks: 1,227
Ceaser Funktion boolean Wert zurückgeben lassen, um falls das Ende erreicht wurde(also kein Text mehr zum vorscheinen), ein true zurück zu geben. Dann sollte es so aussehen(Theorie mäßig).
Code:
bool ende;
while(true)
{
    if(getchar() == '\r' || getchar() == EOF)
    {
        ende = caesar(zahl);
        if(ende == true)
        {
            break;
        }
    }
}
Du müsstest aber sehr viel an deinem Code ändern! Wieso willst du es immer einzeln ausgeben und nicht gleich alles, wie mans auch normal macht?

Falls ich dich missverstanden hab, dann sry.
XxharCs is offline  
Old 11/13/2013, 00:44   #3


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
Afaik unterstützt C kein bool.
Dafür benötigt er stdbool.h (wenn ich den Header richtig im Kopf habe) oder halt einfach eine int Variable, die er auf 1 oder 0 setzt (anders ist BOOL sowieso nicht definiert).

Ich frage mich gerade, wozu du die Variable ende verwendest, wenn du sowieso eine Endlosschleife in Verbindung mit break nutzt. Sinnvoller wäre, die Variable im Schleifenkopf abzufragen und die break Anweisung wegzulassen.

@TE
Ich verstehe nicht ganz, wie du auf die Idee kommst, caeser mit einem um 1 erhöhten Wert erneut aufzurufen. Zum Entschlüsseln müsstest du eher um dieselbe Anzahl wie vorher in umgekehrter Richtung schieben.
MrSm!th is offline  
Old 11/13/2013, 09:32   #4
 
XxharCs's Avatar
 
elite*gold: 34
Join Date: Apr 2011
Posts: 1,475
Received Thanks: 1,227
Quote:
Originally Posted by MrSm!th View Post
Afaik unterstützt C kein bool.
Dafür benötigt er stdbool.h (wenn ich den Header richtig im Kopf habe) oder halt einfach eine int Variable, die er auf 1 oder 0 setzt (anders ist BOOL sowieso nicht definiert).
Jop. C99 unterstützt bool mit dem stdbool Header. Man kann sich auch einfach ein bool zusammen basteln, weil wie du schon sagst es eine Variable ist die man auf 1 oder 0 setzt.
Code:
typedef int bool;
#define true 1
#define false 0
Quote:
Originally Posted by MrSm!th View Post
Ich frage mich gerade, wozu du die Variable ende verwendest, wenn du sowieso eine Endlosschleife in Verbindung mit break nutzt. Sinnvoller wäre, die Variable im Schleifenkopf abzufragen und die break Anweisung wegzulassen.
Stimmt, habs anscheinend übersehen.
XxharCs is offline  
Reply


Similar Threads Similar Threads
FarCry 3 Key eingabe
01/03/2013 - General Gaming Discussion - 0 Replies
Habe mir die FarCry 3 Deluxe Edition als Key gekauft, nachdem ich das Spiel runtergeladen und Installiert habe musste ich den Key in uPlay eingeben in der Email stand dass ich im Spiel unter Zusätzlichem Inhalt den Key für die Addons eingeben muss jedoch steht dort dass dieser Key bereits verwendet wurde ist ja eig logisch da ich in ja davor schon eingeben habe aber wie komme ich jetz an die DLCs ?
PickupBot mit Value eingabe..?
01/29/2012 - Metin2 Private Server - 1 Replies
Hallo, ich wollte mal fragen, ob es ein Bot für PServer gibt, bei dem man einstellen kan, was er aufheben soll? Also nur bestimmte Items, die man eingibt, wie bei EasyMetin2.
Xbox Dashboard - Nutzer warten und warten
12/06/2011 - User Submitted News - 0 Replies
Wie auch in der Consoles Section beklagen die Xbox Live User, dass kein Dashboard zum Download steht. Eigentlich hätte es bereits um 11:00 Uhr downloadbar sein sollen, aber welcher Konzern kann schon solche Uhrzeiten einhalten? Microsoft anscheinend nicht. Es folgte eine Nachricht, dass es doch erst 5 Stunden später, also um 16:00 Uhr veröffentlicht werden kann. Naja, immerhin wäre das nicht allzu spät. Mit voller Freude wartete also jeder Xbox'ler, bis die Uhr genau 16:00 Uhr anzeigte. Aber...
Hamachi eingabe
10/18/2009 - Metin2 Private Server - 3 Replies
heay... wollt mal fragen ob mir jmd. bei meinem problem helfen kann ich habe nochnie mit hamachie gearbeitet und deshalb weiß ich nicht wie und wo ich den netzwerknamen sowie das passwort eingeben soll. ich bitte um hilfe gebe natürlich thx... wäre net das noch mit bildern zu erklären xD mfg ChaosDX
eingabe
09/28/2009 - Metin2 Private Server - 4 Replies
hi leute also wenn ich freebsd installieren will also die eine datei anklicke die 12 oder 13kb grosse da dann kommt des mit freebsd dann warte ich immer bis der countdown fertig is anschliessend sagt er was von login da geb ich root ein aber dann bei passwort kann ich nichts eingeben kann mir jemand dieses prob lösen :D mfg worker444



All times are GMT +2. The time now is 12:27.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.