Ergebnis 1 bis 10 von 28

Baum-Darstellung

  1. #14
    Bad Times Virus
    Registriert seit
    14.03.2009
    Beiträge
    579

    Standard AW: Anfänger Fragen - c++

    Zitat Zitat von Leange Beitrag anzeigen
    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
    Eigentlich wollte ich mich darüber beschweren das du keine negativen oder Zahlen mit exponent einlesen kannst, aber dann:
    Code:
    $ wget https://pastebin.com/raw/URrEWHma
    $ mv URrEWHma leange.cpp
    $ g++ -std=c++11 -o x leange.cpp
    $ ./x
    terminate called after throwing an instance of 'std::regex_error'
      what():  regex_error
    Aborted (core dumped)
    $ g++ --version
    g++ (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
    Copyright (C) 2013 Free Software Foundation, Inc.

    Zitat Zitat von Einstein Beitrag anzeigen
    ...
    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
    Das ist halt scheiße das "input parsen", also (Eingabe)daten korrekt interpretieren eine der schwersten Sachen ist die es beim Programmieren gibt *und* gleichzeitig die erste die man braucht.


    Zitat Zitat von Einstein Beitrag anzeigen
    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
    Naja es ist eine Schleife bei der 3 Sachen passieren können:
    a) es wurde eine Zahl eingegeben --> break;
    b) das wo die Zahl von gelesen werden soll ist ("stdin" = Standard Input) funktioniert nicht mehr oder sagt das da jetzt nix mehr kommen kann -> return 0
    c) es wurde etwas eingegeben, war aber keine Zahl -> der Rest.

    Zu a) scanf() ist sowas wie die C version von std::cin. Du kannst da mehrere Parameter angeben und dann wird auf Benutzerinput gewartet. Irgendwie sowas hier:
    Code:
    float a;
    int b, c, ret;
    
    ret = scanf("%f%d%d", &a, &b, &c);
    (Diese %X geben an was für ein Variablentyp erwartet wird, was die &-Zeichen da sollen kommt viel später) Und in ret steht dann wie viele dieser Variablen mit dem erwarteten Typ besetzt werden konnten. Also in dem Beispiel soll erst eine Kommazahl, dann zwei Integer eingegeben werden. Und wenn das erste schon keine Kommazahl ist dann hört die Funktion einfach auf und gibt 0 zurück --> 0 Eingaben passten mit dem erwarteten Variablentyp zusammen bevor es zum ersten Fehler kam. Wenn man "12.345 a 1" oder so eingeben würde, wäre ret == 1, da die Kommazahl noch geklappt hat aber dann beim ersten Integer unerwarter Text war.

    Das ist der große Unterschied zu std::cin (das macht einfach fröhlich weiter) und quasi das Herzstück von dem Code.

    Aber: scanf() lässt die Daten die es nicht parsen konnte im buffer. Wenn ich also einmal einen Buchstaben eingebe wird danach jeder Versuch eine Zahl einzulesen fehlschlagen. Bis:
    * ein scanf() versucht Buchstaben zu lesen und die dann noch vorhandenen Daten akzeptiert
    * man den Buffer löscht (das wollte ich eigentlich mit fflush() machen, ging aber nicht...)
    * getchar() oder ein anderer Befehl den Buchstaben da rausnimmt.

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

    Einstein (26.04.2017)

Ähnliche Themen

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

Berechtigungen

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