Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 28
  1. #1
    Anfänger Avatar von Einstein
    Registriert seit
    22.04.2017
    Beiträge
    17

    Standard Anfänger Fragen - c++

    Servus,

    ich hatte schon sehr lange vor mich mal intensiv mit dem Programmieren zu befassen, kein copy und paste um mein Ziel mit Code schnipsel zusammen zu pfriemeln.
    Also fange ich dementsprechend von "0" an, ich verfolge ein kleines Tutorial einer App die das ganz nett gemacht hat in dem man interaktiv das gelernte gleich nach der Info anwenden kann.

    Ich mache derzeit kleinste Übungen zu Variablen und haben den Code hier :

    PHP-Code:
    #include <iostream>
    using namespace std;

    int main()
    {
        
    int a;
        
    cout << "Please enter a number \n";
        
    cin >> a;

        
    cout << a;

        return 
    0;

    Da stellt sich mir die Frage woher weiß das "Programm" jetzt das der Input eine Zahl sein muss ?

    mfg Einstein
    Geändert von Einstein (25.04.2017 um 23:46 Uhr)

  2. #2
    Wiederbelebt Avatar von Cystasy
    Registriert seit
    08.05.2015
    Beiträge
    685

    Standard AW: Anfänger Fragen - c++

    Zitat Zitat von Einstein Beitrag anzeigen
    Da stellt sich mir die Frage woher weiß das "Programm" jetzt das der Input eine Zahl sein muss ?

    Daran:

    Code:
    int a;
    Int ist die Abkürzung für "Integer", was eine Zahl darstellt.
    Mit int variablename erstellst du quasi eine Integer Variable.. und in diese Variable können dann logischerweise nur Zahlen rein
    Da gibts dann aber auch noch Variablen Arten wie char, float etc. die dann entsprechend andere Daten annehmen (Char Zeichen, Float Zahlen, Strings usw.)

    p.s: Schon ne Weile her als ich C++ gemacht hab, daher Sorry falls ichs nicht krass Detailiert beschreiben kann

    grüße
    エロ <3

  3. Folgende Benutzer haben sich für diesen Beitrag bedankt:

    Einstein (26.04.2017)

  4. #3
    Anfänger Avatar von Einstein
    Registriert seit
    22.04.2017
    Beiträge
    17

    Standard AW: Anfänger Fragen - c++

    Danke für die Info, ja das kenne ich so richtig intensiv mit dem Programmieren habe ich mich vor ~ 6 Jahren beschäftigt meiner Meinung nach verlorene Zeit also kann ich da mit fühlen

    Das interessant, dann kann ich mir die Variablen wie Bibliotheken vorstellen mit verschiedenen Eigenschaften.

    Ich hätte dazu noch 2 Fragen :
    Wie regelt man dann die Situation wenn es Zeichen, Zahlen und co haben soll bzw. mehr als nur einen Input ?
    Und wie stelle ich das an das sich das ganze erst schließt wenn auch wirklich eine Zahl eingegeben wurde bzw. dementsprechend das was durch die Variable gewollt ist, so wie es da oben steht schließt es sich nach dem ersten Input egal ob Zahl der Buchstabe.

    mfg Einstein

  5. #4
    Wiederbelebt Avatar von Cystasy
    Registriert seit
    08.05.2015
    Beiträge
    685

    Standard AW: Anfänger Fragen - c++

    Zitat Zitat von Einstein Beitrag anzeigen
    Wie regelt man dann die Situation wenn es Zeichen, Zahlen und co haben soll bzw. mehr als nur einen Input ?
    Indem du einfach mehrfach Dinge abfrägst, dann aber eben mit verschiedenen Variablen^^
    Oder du nimmst ein Variablen Typ wie z.b String.. dann ist es halt keine Zahl oder so mehr sondern ein String.. heißt wenn du dann z.b 2 Zahlen hast die jeweils als String gespeichert sind, musst die erst nach Int konvertieren damit du diese 2 Zahlen zusammenrechnen kannst.

    Zitat Zitat von Einstein Beitrag anzeigen
    Und wie stelle ich das an das sich das ganze erst schließt wenn auch wirklich eine Zahl eingegeben wurde bzw. dementsprechend das was durch die Variable gewollt ist, so wie es da oben steht schließt es sich nach dem ersten Input egal ob Zahl der Buchstabe.
    Also.. das sich dein Programm direkt nach der Eingabe schließt, liegt daran das du return 0; machst und danach dein Programm beendet wird, und du da eben keine Pause eingebaut hast^^
    Und wenn du möchtest das des Programm sich erst beendet wenn da eine Zahl vorkommt, musst du dein Programm eben so lange in einer Schleife laufen lassen und nach jeder Eingabe kontrollieren ob das eingegebene eine Zahl ist bis der User deines Programms dann auch eine Zahl eingibt.. falls nicht wird die Schleife halt weiter ausgeführt bis dies der Fall ist^^

    Schlagworte die du dir dafür mal anschaun kannst:

    - If Abfragen
    - While Schleifen

    grüße
    エロ <3

  6. Folgende Benutzer haben sich für diesen Beitrag bedankt:

    Einstein (26.04.2017)

  7. #5
    CIH-Virus Avatar von 55F
    Registriert seit
    25.09.2008
    Beiträge
    436

    Standard AW: Anfänger Fragen - c++

    Integer == Ganzzahl
    Float == Fließkommazahl
    String == Zeichenkette
    Char == einzelnes Zeichen

    Die Variable "a" wurde als Integer deklariert, genauso kannst du weitere Variablen/Konstanten (.z.B. mit weiteren Datentypen) deklarieren.
    #include <iostream>
    #include <string>
    using namespace std;

    int main (void); {
    string name; // Eine Variable vom Datentyp String
    cout << "Bitte Namen eingeben\n";
    cin >> name;
    cout << "Hallo" << name << endl;
    cin.get() // Erwartet eine Eingabe bevor das Programm geschlossen wird.
    return 0;
    }
    Ihr dürft mich gerne korrigieren/steinigen falls ich komplett daneben oder falsch liege.
    Gefunden habe ich noch ein Openbook: https://de.wikibooks.org/wiki/C%2B%2...ung_in_C%2B%2B

  8. Folgende Benutzer haben sich für diesen Beitrag bedankt:

    Einstein (26.04.2017)

  9. #6
    Sobig Wurm Avatar von Leange
    Registriert seit
    06.09.2008
    Beiträge
    220

    Standard AW: Anfänger Fragen - c++

    Code:
    #include <iostream>
    #include <string>
    using namespace std;
    
    int main() {
        string name; // Eine Variable vom Datentyp String
        cout << "Bitte Namen eingeben\n";
        cin >> name;
        cout << "Hallo" << name << endl;
        cin.get(); // Erwartet eine Eingabe bevor das Programm geschlossen wird.
        return 0;
    }
    Das Problem damit ist, dass du die Eingabe vom Namen mit Enter abschließt.
    Dein inputstream sieht dann so aus "eingegebenerName\n".
    In die Variable name kommt aber nur "eingegebenerName", das \n murkst immer noch im buffer rum.
    cin.get() findet das \n un dein Programm schließt sich.

    Also entweder so:
    Code:
    int main() {
        
        string name;
        cout << "Bitte Namen eingeben: ";
        cin >> name;
        
        cout << "Deine name: " << name << endl;    
        
        cout << "Press Enter ...";
        cin.ignore(numeric_limits<streamsize>::max(), '\n');
        cin.get();
    
        return 0;
    }
    Oder wenn der String Leerzeichen enthalten soll:
    Code:
    int main() {
        
        string name;
        cout << "Bitte Namen eingeben: ";
        getline(cin, name);
        
        cout << "Deine name: " << name << endl;    
        
        cout << "Press Enter ...";
        cin.get();
    
        return 0;
    }
    getline() nimmt das \n mit weg, deshalb kannste dir cin.ignore() sparen.

    Aber! Wenn du erst cin>>irgendwas; machst und dann getline(), bekommste auch wieder das gleiche Problem. getline() findet das Zeilenende das noch im buffer ist und liest den Rest nicht.
    Gibt dann bessere Möglichkeiten mit stringstreams ect., aber Hauptsache du hast es schonma gehört xD.

    Das interessant, dann kann ich mir die Variablen wie Bibliotheken vorstellen mit verschiedenen Eigenschaften.
    Näh es sind mehr die Operatoren die das Regeln. In dem Fall:
    http://www.cplusplus.com/reference/i...perator%3E%3E/
    Du kannst die Operatoren auch überladen für eigene Klassen ect..
    Aber das wird jetzt zu deep fürn Anfang. Hastes mal gehört.

    Leange

    Freiheit stirbt mit Sicherheit

  10. Folgende Benutzer haben sich für diesen Beitrag bedankt:

    55F (26.04.2017), Einstein (26.04.2017)

  11. #7
    Bad Times Virus
    Registriert seit
    14.03.2009
    Beiträge
    579

    Standard AW: Anfänger Fragen - c++

    Zitat Zitat von Einstein Beitrag anzeigen
    Da stellt sich mir die Frage woher weiß das "Programm" jetzt das der Input eine Zahl sein muss ?
    Das tut es eben nicht:
    Code:
    a@DESKTOP-JU125PR:/tmp$ cat einstein.cpp
    #include <iostream>
    
    
    int main() {
            int a;
    
    
            std::cin >> a;
            std::cout << a << '\n';
    }
    a@DESKTOP-JU125PR:/tmp$ g++ -o einstein einstein.cpp
    a@DESKTOP-JU125PR:/tmp$ ./einstein
    das hier ist gar keine Zahl
    0
    a@DESKTOP-JU125PR:/tmp$
    Ich geb Text ein und das wird "akzeptiert". std::cin will in eine Zahl schreiben -- wenn halt was anderes kommt haste Pech gehabt. Mir fällt gerade kein Weg (mit std::iostream) zu erkennen ob das was eingegeben wurde auch das richtige Format hatte.

    Sonst würde ich es halt so machen:
    Code:
    a@DESKTOP-JU125PR:/tmp$ cat main.cpp
    #include <iostream>
    #include <cstdio>
    #include <errno.h>
    
    
    int main() {
            int a;
    
    
            while(1) {
                    int ret = scanf("%d", &a);
                    // could an int be read?
                    if (ret == 1) {
                            break;
                    }
                    // is the stream fucked or has it ended?
                    else if (ferror(stdin) || feof(stdin)) {
                            return 0;
                    }
                    else {
                            /* remove the unparsed data from stdin, so the next call to scanf
                               doesn't read the same data again
                               todo: find out why fflush(stdin) doesn't work */
                            getchar();
                    }
            }
    
    
            std::cout << a << '\n';
    }
    a@DESKTOP-JU125PR:/tmp$ ./einstein
    aaaa
    abc
    123
    123
    a@DESKTOP-JU125PR:/tmp$
    ist aber glaube ich nicht wirklich Anfängerfreundlich
    Geändert von wacked (26.04.2017 um 15:52 Uhr) Grund: s/ein String/Text/

  12. Folgende Benutzer haben sich für diesen Beitrag bedankt:

    Einstein (26.04.2017), Leange (26.04.2017)

  13. #8
    Support-Hure Avatar von sn0w
    Registriert seit
    18.09.2007
    Beiträge
    1.919

    Standard AW: Anfänger Fragen - c++

    Wenn die 0 als eingabe akzeptiert werden soll wird es wohl komplizierter wenn nicht einfach schauen ob 0 zurückgegeben wurde. Könntest natürlich auch alles einlesen und dann schauen ob noch was anderes außer 0-9 * x eingegeben wurde.

    Boardregeln | SuFu | Blackmarket | PM

    Fragezeichen und Ausrufezeichen sind keine Rudeltiere!


  14. Folgende Benutzer haben sich für diesen Beitrag bedankt:

    Einstein (26.04.2017)

  15. #9
    Anfänger Avatar von Einstein
    Registriert seit
    22.04.2017
    Beiträge
    17

    Standard AW: Anfänger Fragen - c++

    Servus,

    hopla hätte nicht mit so viel Resonanz gerechnet erstmals danke dafür. Ich muss zu geben das ganz schön viel Info auf ein mal aber je mehr ich darüber nachdenke und mich rein Lese desto mehr komme ich der Sache näher.
    Es ist schon sehr interessant zu sehen wie eine eigentlich einfache Frage "Input = Zahl ? True Close, Not true ask again" einiges an umdenken und code mit sich bringt. Ich werde es auf jeden fall versuchen hin zu kriegen und dabei so viel mit zu nehmen wie es geht

    PHP-Code:
    #include <iostream>
    #include <cstdio>
    #include <errno.h>


    int main() {
            
    int a;


            while(
    1) {
                    
    int ret scanf("%d", &a);
                    
    // could an int be read?
                    
    if (ret == 1) {
                            break;
                    }
                    
    // is the stream fucked or has it ended?
                    
    else if (ferror(stdin) || feof(stdin)) {
                            return 
    0;
                    }
                    else {
                            
    /* remove the unparsed data from stdin, so the next call to scanf
                               doesn't read the same data again
                               todo: find out why fflush(stdin) doesn't work */
                            
    getchar();
                    }
            }


            
    std::cout << << '\n';

    Wenn ich das richtig sehe?
    Eine Schleife die überprüft ob eine Integer == Ganzzahl eingegeben wurde, wenn JA dann close, wenn NEIN dann return 0; um die abfrage zu wiederholen mit den gleichen "Parameter bzw. abfrage"
    PHP-Code:
    while(1) {
                    
    int ret scanf("%d", &a);
                    
    // could an int be read?
                    
    if (ret == 1) {
                            break;
                    } 
    Und wenn ich z.b das hier entferne schreibt er die Zahl nur 1 mal so wie es glaube ich sein sollte, aber warum das so ist kann ich nicht sagen.
    PHP-Code:
                    else {
                            
    /* remove the unparsed data from stdin, so the next call to scanf
                               doesn't read the same data again
                               todo: find out why fflush(stdin) doesn't work */
                            
    getchar();
                    }
            }


            
    std::cout << << '\n';

    Mfg Einstein
    Geändert von Einstein (26.04.2017 um 17:12 Uhr)

  16. #10
    Sobig Wurm Avatar von Leange
    Registriert seit
    06.09.2008
    Beiträge
    220

    Standard AW: Anfänger Fragen - c++

    Etwa das gleiche was wacked gemacht hat aber mit regulären ausdrücken
    Viele, viele Möglichkeiten um das gleiche Ziel zu erreichen ^^

    Leange

    Edit: Ok is dochn bissel was anderes
    Geändert von Leange (26.04.2017 um 18:23 Uhr)

    Freiheit stirbt mit Sicherheit

  17. Folgende Benutzer haben sich für diesen Beitrag bedankt:

    Einstein (26.04.2017)

Seite 1 von 3 123 LetzteLetzte

Ähnliche Themen

  1. anfänger tut
    Von KifKif im Forum Trashbox
    Antworten: 5
    Letzter Beitrag: 28.02.2010, 16:34
  2. Für PHP-Anfänger
    Von Floo im Forum PHP
    Antworten: 0
    Letzter Beitrag: 29.09.2007, 14:53
  3. bin ein anfänger
    Von baldessarini im Forum Wireless-Lan
    Antworten: 6
    Letzter Beitrag: 24.09.2007, 00:47

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •