Datensatz von einem Bereich in einen anderen einfügen



  • Ist Deine Frage: "Datensatz von einem Bereich in einen anderen einfügen" damit erledigt?
    Ich bezweifle das...
    Bisher versteht nämlich niemand, was die Frage ist.



  • Bisher versteht nämlich niemand, was die Frage ist.

    hmlich schreibt man mit h, meine Güte bist du dähmlich.



  • Im Grunde ist es ja egal ob man printf oder cout<< benutzt oder?
    Das ganze ist ein Projekt für die Uni. Als Entwicklungstool benutzen wir Visual Studio 2012.
    Ich wüsste nicht wie ich den Beitrag sonst nennen sollte.
    Mein Problem ist einfach nur dass sobald ">10 Volt" gewählt wird, automatisch ein Eintrag im Fehlerspeicher-Menü entsteht.



  • also von 'void Menu5()' nach 'void Menu6()' sozusagen.



  • ...



  • Aha Universität.

    Wie ich Dich verstehe ist Dein Problem, dass Du nicht weisst, wie Du einen einzigen "Fehlerspeicher" an verschiedenen Stellen im Programm nutzen kannst.
    Am einfachsten reichst Du den Fehlerspeicher dazu im Programm als Funktionsargument herum.

    Ich habe hier noch mal eine leicht abgewandelte Form meines Codes:

    #include <iostream>
    #include <string>
    #include <vector>
    
    using failure = std::string;
    using failure_memory = std::vector<failure>;
    
    void add_blocking_failure(failure_memory& mem){
      mem.push_back("Schiebemechanismus blockiert");
    }
    
    void add_current_failure(failure_memory& mem){
      mem.push_back("Spannung < 10V");
    }
    
    void print(const failure_memory& mem){
      if(mem.empty())
        std::cout << "Keine Fehler.\n";
      else{
        std::cout << "Fehler:\n";
        for(const auto& f : mem)
          std::cout << f << '\n';
      }
    }
    
    void menu(){
      std::cout <<
        "0: Fehlerspeicher ausgeben\n"
        "1: Batteriespannung absenken\n"
        "2: Schiebemechanismus blockieren\n";
    }
    
    int main(){
      failure_memory failures;
      int c=0;
      menu();
      while(c!=-1 && std::cin>>c){
        switch(c){
        default:
          c=-1;
          break;
        case 0:
          print(failures);
          break;
        case 1:
          add_current_failure(failures);
          break;
        case 2:
          add_blocking_failure(failures);
          break;
        }
      }
    }
    

    Oben bestimme ich erstmal, was mein Fehlerspeicher ist (Z. 5 und 6): ein vector von failures , wobei failures einfache string s sind.
    Im Hauptprogramm erstelle ich in Z. 34 einen Fehlerspeicher.
    Es gibt dann drei Funktionen, die mit einem Fehlerspeicher arbeiten zwei add_*_failure() und eine print() Funktion.
    Alle drei werden im Hauptprogramm aufgerufen und als Funktionsargument gebe ich immer den einen Fehlerspeicher mit, den ich in Z. 34 erstellt habe, d.h. alle drei Funktionen arbeiten mit ein und demselben Speicher.

    Funktionen solltest Du eigentlich schon kennen, eine Referenz für std::vector und std::string findest Du hier: http://en.cppreference.com/w/

    Klar?

    Eins noch: hampel nicht soviel mit der Ausgabe rum. Umlaute und Gedoens sind nice to have, lenken aber vom Wesentlichen ab.



  • zuerst mal dankeschön 🙂
    aber ich bekomme beim debuggen die fehlernachricht

    Fehler	20	error C2065: 'failure': nichtdeklarierter Bezeichner
    


  • Dein Compiler nutzt offenbar kein C++11.
    Schreib typedef std::string failure oder aktiviere C++11 Support.


  • Mod

    radddyo schrieb:

    Im Grunde ist es ja egal ob man printf oder cout<< benutzt oder?

    Nein!



  • Durch das typedef bekomme ich jetzt nur noch 7 Fehler:

    Fehler	1	error C2143: Syntaxfehler: Es fehlt ';' vor '='	
    Fehler	5	error C2143: Syntaxfehler: Es fehlt ';' vor '='	
    Fehler	4	error C2226: Syntaxfehler: Typ 'std::string' nicht erwartet	c:\users\radyabo\documents\visual studio 
    Fehler	3	error C2513: 'int': Keine Variable vor '=' deklariert	
    Fehler	7	error C2513: 'int': Keine Variable vor '=' deklariert	
    Fehler	2	error C2868: 'failure': Unzulässige Syntax für using-Deklaration; vollständiger Name erwartet	Fehler	6	error C2868: 'failure_memory': Unzulässige Syntax für using-Deklaration; vollständiger Name erwartet
    


  • Das using brauchste dann mit typedef nicht mehr!


Anmelden zum Antworten