Avatar billede anarchy Nybegynder
01. august 2002 - 21:44 Der er 16 kommentarer og
1 løsning

Vector problemer.

Huske det (dårlige) program jeg nævnte tidligere? Her er det så:
Eller det vil sige der er så mig forsøg på at bruge vector'ere i mit program, det gik ik' så godt, MSCV++ smider mig de her warnings:

C:\Ny mappe\C\enemytrac\enemytrack.cpp(68) : warning C4786: 'std::reverse_iterator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const *,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<ch
ar,std::char_traits<char>,std::allocator<char> > const &,std::basic_string<char,std::char_traits<char>,std::allocator<char> > const *,int>' : identifier was truncated to '255' characters in the debug information
C:\Ny mappe\C\enemytrac\enemytrack.cpp(68) : warning C4786: 'std::reverse_iterator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > *,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std
::char_traits<char>,std::allocator<char> > &,std::basic_string<char,std::char_traits<char>,std::allocator<char> > *,int>' : identifier was truncated to '255' characters in the debug information
c:\programmer\microsoft visual studio\vc98\include\vector(39) : warning C4786: 'std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >:
:vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >' : identifier was truncated to '255' characters in the debug information
c:\programmer\microsoft visual studio\vc98\include\vector(60) : warning C4786: 'std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >:
:~vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >' : identifier was truncated to '255' characters in the debug information

Aner ikke hvad jeg skal gøre med dem, hvor er fejlen?
Programmet kører godt nok, men jeg får ikke mulighed for at indtaste et 'tag' for 'monsteret' (Det var en lille D&D hjælper).
----Program----

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

   
const int MAX = 40; // Define 'MAX'

int main()
{


    int MonsterDistance[MAX]; // Monster's distance from party.
    int NumberOfMonsters; // Number of Monsters.
    char buffer[MAX];  //Define out buffer.
    vector <string> MT;
    vector <string>::iterator Itr;
    int i = 0; //Simple counter.

    cout<<"Welcome to Keep Track Of Monsters 0.001"<<endl
        <<"Please Enter the number of monster you'll be keeping track of: ";
    cin>>NumberOfMonsters;

    if(NumberOfMonsters > MAX){  // Make a quick Check that the array doesn't have more elements than the program can handle.
        cout<<"Too many monsters, this program can only handle "<<MAX<<" monsters."<<endl;
        return 0;}

    do{ //Get monster Tags and starting distance.
        cout<<"Please enter a tag for the monster: ";

        cin.getline(buffer,MAX,'\n');
        MT.push_back(buffer);
        cout<<"Please Enter Monster"<<i+1<<"'s distance from party: ";
        cin>>MonsterDistance[i];
        cout<<"Monster"<<i+1<<" ["<<MT[i]<<"] Distance from party: "<<MonsterDistance[i]<<" feet."<<endl;
        i++;}while(i <= NumberOfMonsters-1);

   
    for(;;) // infinite loop to keep the repeditive action going.
    {
        i = 0;
        do{ //Moving the monsters.
            int MoveDistance = 0;
            cout<<"Please enter how long Monster"<<i+1<<" moves:";
            cin>>MoveDistance;
            MonsterDistance[i] -= MoveDistance;
            i++;}while(i <= NumberOfMonsters-1);

            for (Itr = MT.begin(); Itr != MT.end(); Itr++){
                cout<<"Monster"<<i+1<<"["<<*Itr<<"]"<<" Distance from party: "<<MonsterDistance[i]<<" feet."<<endl;}
           
        char choice = 'n';

        cout<<"Do you wish to move the monsters again? y/n ";
        cin>>choice;

        if((choice == 'n') || (choice == 'N'))
            break;
       

    }
Avatar billede nico26 Nybegynder
01. august 2002 - 21:46 #1
du forsøger at putte buffer i en vector - men buffer er et array af chars
Avatar billede anarchy Nybegynder
01. august 2002 - 21:48 #2
Sorry about det ulæslige warnings, bedre version her: http://planetfall.adsl.dk/msvc.txt
Avatar billede anarchy Nybegynder
01. august 2002 - 21:49 #3
Ok, så laver jeg bare vector'en som en char? eller hvad?
Avatar billede nico26 Nybegynder
01. august 2002 - 21:50 #4
eller buffer til en string - hvad der nu er nemmest
Avatar billede nico26 Nybegynder
01. august 2002 - 21:54 #5
Din kode kompilerer uden fejl hos mig...
Avatar billede anarchy Nybegynder
01. august 2002 - 22:03 #6
Kan du også indtaste et tag?
Og jeg vil helst prøve at bruge en vector.
Avatar billede anarchy Nybegynder
01. august 2002 - 22:03 #7
Og det var også kun warnings, ikke fejl.
Avatar billede nico26 Nybegynder
01. august 2002 - 22:09 #8
Der er noget galt med dit input med cin. Jeg havde det samme problem fornylig
Avatar billede anarchy Nybegynder
01. august 2002 - 22:11 #9
Jeg kan ikke se noget problem, jeg har bufferen, max antal tegn og det afsluttende tegn, hvad mere mangler?
Avatar billede nico26 Nybegynder
01. august 2002 - 22:16 #10
skift denne linie

cin>>NumberOfMonsters;

med disse

cin.getline(buffer, MAX);
NumberOfMonsters = atoi(buffer);
Avatar billede anarchy Nybegynder
01. august 2002 - 22:23 #11
Det virker fint nok, men kun for det første 'monster' (Eller object eller whatever) derefter samme problem. Hvad gør atoi()?
Avatar billede nico26 Nybegynder
01. august 2002 - 22:24 #12
set er det samme her

cin>>MonsterDistance[i];

skiftes til

cin.getline(buffer, MAX);
MonsterDistance[i] = atoi(buffer);
Avatar billede anarchy Nybegynder
01. august 2002 - 22:39 #13
Ok så, du kan jeg intaste ting, sidste problem - Her er outputtet fra programmet:

Welcome to Keep Track Of Monsters 0.001
Please Enter the number of monster you'll be keeping track of: 2
Please enter a tag for the monster: TEST1
Please Enter Monster1's distance from party: 20
Monster1 [TEST1] Distance from party: 20 feet.
Please enter a tag for the monster: TEST2
Please Enter Monster2's distance from party: 35
Monster2 [TEST2] Distance from party: 35 feet.
Please enter how long Monster1 moves:15
Please enter how long Monster2 moves:15
Monster3[TEST1] Distance from party: -858993460 feet.
Monster3[TEST2] Distance from party: -858993460 feet.
Do you wish to move the monsters again? y/n

Monster3[TEST1] Distance from party: -858993460 feet.
Monster3[TEST2] Distance from party: -858993460 feet.
Hvor kommer de to linjer fra?
Avatar billede nico26 Nybegynder
01. august 2002 - 22:45 #14
har set det. Det er et eller andet med din vector.
Avatar billede anarchy Nybegynder
01. august 2002 - 22:47 #15
'ej er der? ;) så vidt jeg kan regne ud må det være i
            for (Itr = MT.begin(); Itr != MT.end(); Itr++){
                cout<<"Monster"<<i+1<<"["<<*Itr<<"]"<<" Distance from party: "<<MonsterDistance[i]<<" feet."<<endl;}

Delen der i problem i, har jeg ret?
Avatar billede nico26 Nybegynder
01. august 2002 - 22:48 #16
sådan

for (Itr = MT.begin(), i = 0; Itr != MT.end(); Itr++, i++){
                cout<<"Monster"<<i+1<<"["<<*Itr<<"]"<<" Distance from party: "<<MonsterDistance[i]<<" feet."<<endl;}
Avatar billede anarchy Nybegynder
02. august 2002 - 07:04 #17
Ok mand tak ska' du ha, det var dumme fejl alle sammen...erf...jeg har meget at lære endnu.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester