meine struct-ur funktioniert nicht!



  • warum funktioniert meine struct nicht? ich bekomme bei eingabe von "/" dessen position eigentlich ermittelt werden sollte den fehler: 9586 Speicherzugriffsfehler. was muss ich tun?

    struct faktor{
        vector<int> fapos;
        vector<int> fepos;
      };
    
      mult position;
    
        for(x = 0; x < array.size(); x++) {
          if (vc[x] == '*')
            position.mpos.push_back(x);
          if (vc[x] == '/')
            position.dpos.push_back(x);cout<<position.dpos[0]; // gibt fehler aus
        }
    


  • Ich glaube dein Fehler liegt in der struktur "mult". Die hast du aber nicht mitgepostet.



  • uups

    struct mult{
        vector<int> mpos;
       int dpos; //testweise als int
      };
    
        struct faktor{
        vector<int> fapos;
        vector<int> fepos;
      };
    
      mult position;
    
        for(x = 0; x < vc.size(); x++) {
          if (vc[x] == '*')
            //position.mpos.push_back(x);
          if (vc[x] == '/')
            position.dpos=x;cout<<endl<<position.dpos<<endl;
        }
    


  • Also ich kann keinen Fehler finden. Ich hab das Ganze mal in ein kleines Programm eingesetzt.

    #include <vector>
    #include <iostream>
    
    using namespace std;
    
    struct mult {
    	vector<int> mpos;
    	int dpos; //testweise als int
    };
    
    struct faktor {
    	vector<int> fapos;
        vector<int> fepos;
    };
    
    int main( int argc, char* argv[] ) {
    	vector<char> vc;
    
    	vc.push_back( 'a' );
    	vc.push_back( 't' );
    	vc.push_back( 'f' );
    	vc.push_back( '6' );
    	vc.push_back( '/' );
    	vc.push_back( 'a' );
    
    	mult position;
    
        for( int x = 0; x < vc.size(); x++) {
          if (vc[x] == '*')
            position.mpos.push_back(x);
          if (vc[x] == '/') {
            position.dpos=x;
    		cout<<endl<<position.dpos<<endl;
    	  }
        }
    }
    

    Noch eine Bemerkung zu deiner Zeile

    if (vc[x] == '/')
            position.dpos=x;cout<<endl<<position.dpos<<endl;
    

    Das ist das selbe wie das hier

    if (vc[x] == '/')
            position.dpos=x;
    cout<<endl<<position.dpos<<endl;
    

    C++ ist es egal, ob befehle in der selben Zeile stehen. Um den code nur auszuführen, wenn die if-Bedingung erfüllt ist, musst du Klammern Setzen.

    if (vc[x] == '/') {
       position.dpos=x;
       cout<<endl<<position.dpos<<endl;
    

    Es kann natürlich sein, dass du das schon weist, aber es sah ein wenig verwirrend aus.



  • eigentlich soll mein programm mit einer schleife char-elemente einlesen und in einen vector speichern, dieser wird dann ausgelesen und die position der '/' und '*' zeichen wird ermittelt. ich habe noch nie struct'S benutzt und wollte die position der mal bzw. geteilt- zeichen in die struct-elemente speichern. hat da jemand eine idee, es geht auch eine alteeeernative. 🙄



  • wenn ich statt eines vectors im struct eine variable vom typ int nehme funktioniert jedoch der müll, bei (siehe ganz oben) vectoren allerdings nicht. mit klassen hab ich auch noch nicht gearbeitet vielleicht könnte mir jemand helfen.


Anmelden zum Antworten