<vector>

Status
Niet open voor verdere reacties.

Coekie

Nieuwe gebruiker
Lid geworden
11 feb 2007
Berichten
4
Ik heb een vraagje over een programma dat we moeten maken voor school. Nu mijn probleem is het programma werkt niet.

Het programma moet een getal dat je ingeeft uit een hele reeks verwijderen en nadien nul van maken en op de laatste plaats van de vector zetten.

Dit heb ik al gemaakt maar als ik het laat aflopen geeft die telkens een fout.

#include <iostream>
#include <iomanip>
#include <vector>
using namespace std;

// post: zet de elementen van int-vector op het scherm
// gescheiden door komma's
void print( const vector<int>& v );

int main()
{
int iGetal;
vector<int> rij( 10 ); // vector met 10 elementen

for(int i = 0; i < 10; i++ )
{
cout << "Geef het " << i+1 << "e getal in: ";
cin >> iGetal;
rij[ i ] = iGetal;
}
cout << endl << "\t"<< setw(10)<< "Inhoud:" << endl << "\t"<< setw(10)<< "-------" << endl;
print( rij );
cout <<endl;
cin.get();


//VERWIJDEREN JA OF NEEN??
char chVerw;

do
{
cout << endl << endl << "Wilt u een getal verwijderen?? (J/N)" ;
cin >> chVerw;
if(chVerw == 'J' || chVerw == 'j')

//IN DEZE IF-STRUCTUUR ZIT DE FOUT
{
int iVerw;
cout << "Geef het getal in dat je wil verwijderen: ";
cin >> iVerw;

vector<int>::iterator pos;
for( pos = rij.begin() ; pos != rij.end() ; pos++)
{
if(*pos == iVerw)
{
rij.erase(pos);
rij.push_back(0);
}
}
}

if(chVerw == 'N' || chVerw == 'n')
{
cout << "De ingegeven waardes zijn niet geweizigd."<< endl<< endl;
}
}
while( chVerw != 'J' && chVerw != 'j' && chVerw != 'n' && chVerw != 'N' );

cout << endl << "\t"<< setw(10)<< "Inhoud:" << endl << "\t"<< setw(10)<< "-------" << endl;
print( rij );
cout <<endl;
cin.get();

}

//Afdrukken
void print( const vector<int>& v ) {
vector<int>::const_iterator pos,
einde = v.end();
for( pos = v.begin(); pos != einde-1; ++pos )
cout << "\t"<< setw(10) << *pos <<endl;
cout << "\t"<< setw(10) << *pos << endl;
}


ik hoop dat iemand me kan helpen
 
wat is de foutmelding?

en
if(chVerw == 'N' || chVerw == 'n')
moet elseif(chVerw == 'N' || chVerw == 'n') worden
 
Ik heb je code een beeeetje aangepast. Dit werkt bij mij:


#include <iostream>
#include <iomanip>
#include <vector>
using namespace std;

// post: zet de elementen van int-vector op het scherm
// gescheiden door komma's
void print( const vector<int>& v );

int main()
{
int iGetal;
vector<int> rij( 10 ); // vector met 10 elementen

for(int i = 0; i < 10; i++ )
{
cout << "Geef het " << i+1 << "e getal in: ";
cin >> iGetal;
rij[ i ] = iGetal;
}
cout << endl << "\t"<< setw(10)<< "Inhoud:" << endl << "\t"<< setw(10)<< "-------" << endl;
print( rij );
cout <<endl;
cin.get();


//VERWIJDEREN JA OF NEEN??
char chVerw;

do
{
cout << endl << endl << "Wilt u een getal verwijderen?? (J/N)" ;
cin >> chVerw;
if(chVerw == 'J' || chVerw == 'j')
{
int iVerw;
cout << "Geef het getal in dat je wil verwijderen: ";
cin >> iVerw;

vector<int>::iterator pos;
for( pos = rij.begin() ; pos != rij.end() ; pos++)
{
if(*pos == iVerw)
{
rij.erase(pos);
rij.push_back(0);
}
}
}

if(chVerw == 'N' || chVerw == 'n')
{
cout << "De ingegeven waardes zijn niet geweizigd."<< endl<< endl;
}
}
while( chVerw != 'J' && chVerw != 'j' && chVerw != 'n' && chVerw != 'N' );

cout << endl << "\t"<< setw(10)<< "Inhoud:" << endl << "\t"<< setw(10)<< "-------" << endl;
print( rij );
cout <<endl;
cin.get();

system("PAUSE");
}

//Afdrukken
void print( const vector<int>& v )
{
vector<int>::const_iterator ppkNode = v.begin();
vector<int>::const_iterator ppkEnd = v.end();
for(; ppkNode != ppkEnd; ++ppkNode)
{
cout << "\t" << (*ppkNode) <<endl;
}
}

Zodra ik 2 invoer om te verwijderen, laat ie alles weer zien - 2 is weg en er is een extra 0 achteraan. Enigste wat ik veranderd heb is de print functie.
 
Dit krijg ik als ik een getal wil verwijderen.

Microsoft visual c++ debug library

Debug assertion failed!

Progral: ...

File : c:\program files\microsoft visual studio 8\vc\include\vector
line 117

expression ("this ->_Mycont != NULL" , 0)

For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.

(Press Retry to debug the application)

Afbreken Opnieuw Negeren


ik denk dat er iets verkeerds is aan die

rij.erase( pos );
rij.push_back(0);
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan