Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Ajaessa virheilmoitus: miksi?

ByteMan [21.05.2007 09:34:14]

#

ongelma tulee tässä:
aloin koodata tekstimuotoista hirsipuupeliä(aloittelia kun olen, graffoista ei olis tullu mitään) pienten ongelmien jälkeen koodiini lisäsin namespacen funktion rungolle ja parille muuttujalle, joita linkkeri ei päästänyt läpi.
dev-c++ kyllä kääntää koodin, mutta ajaessa tulee virhe.
voisitteko auttaa ja kertoa mistä se johtuu?
koodi saattaa näyttää epäselvältä, mutta en saanut headeria funktiot.h includeattua...(#include "funktiot.h" ei toiminut...)
jos selitin asiani jotenkin huonosti, pahoittelen sitäkin...

EDIT: pahoittelen liianpitkiä koodirivejä, en vielä osaa pitää niitä kohtuullisina... toivottavasti aika korjaa asian :)
koodi tulee tässä:

#include <cstdlib>
#include <iostream>
#include <string>
#include <time.h>
namespace fn//HUOM!! tein tämän namespacen koska kääntäjä valitti virheellisistä muuttujanimen
{           //käytöstä; ennenkuin joku sanoo sen TIEDÄN että muitakin keinoja tehdä sama asia
            //tämä versio kuitenkin meni kääntäjästä läpi, ja minulle riittää se
          using namespace std;
          #include <string>
                    string valitse_sana();
          int vaaria_jalj=10;
          string arvaus=0;
          string arvatut=0;
string valitse_sana(void)
{
       srand(time(0));
       string sanat[]={"abstrakti",
                       "hirsipuu",
                       "elokuva",
                       "tietokonepeli",
                       "n\x84it\x84",
                       "sanoja",
                       "voi",
                       "olla",
                       "niin",
                       "monta",
                       "kuin",
                       "haluat"};
                       //jos lisäät tai poistat sanoja, täydennä sanojen määrä muuttujaan
                       //const int lkm
                       //toistaiseksi ohjelma ei tue ääkkösiä,joten ne on kirjoitettava
                       //koodinvaihtomerkeillä seuraavasti:
                       // ä   \x84      ö   \x94

       const int lkm=12;
       int i=0;
       i=rand()%lkm;
       return sanat[i];
       }
}

using namespace fn;

//string valitse_sana();//sananvalintafunktion prototyyppi
void vaarin();
string tarkistus(string, string);
int main()
{


          string sana=fn::valitse_sana();
          string arvaus=0;
          string arvatut=0;
          string rekvisiitta(sana.length(), '#');
          fn::vaaria_jalj=10;
          //muuttujien asetuksia... tossa yläpuolella
          cout<<"Tervetuloa pelaamaan hirsipuu-peli\x84!"<<endl;
          cout<<"Arvattava sana on valittu, ja se sis\x84lt\x84\x84 "<<sana.length()<<" merkki\x84."<<endl;
          cout<<"Voit arvata kirjaimia, tai koknaisen sanan."<<endl;
          do{
               cout<<endl<<"********************";
               cout<<endl<<rekvisiitta<<endl;
               cout<<"Arvauksia j\x84ljell\x84 "<<fn::vaaria_jalj<<endl;
               cin>>arvaus;
               if(arvaus.length()==0)
                    vaarin();
               else if(arvaus.length()==sana.length())
                    {
                         if(arvaus==sana)
                         {
                              cout<<endl<<"ARVASIT AIVAN OIKEIN!! Sanasi oli "
                              <<sana<<" ja arvauksia oli j\x84ljell\x84 "
                              <<fn::vaaria_jalj<<" kappaletta!";
                         }
                    }
               if(arvaus.length()==1)
                    cout<<endl<<tarkistus(sana, arvaus);

          }while(fn::vaaria_jalj<0);


    system("PAUSE");
    return 0;
}



void vaarin()
{
     fn::vaaria_jalj--;
     fn::arvatut+=fn::arvaus;
     return;
}

string tarkistus(string sana, string arvaus)
{
     int lkm=0;
     string juttu=0;
     for(int i=0; (i=sana.find(arvaus, i)) !=string::npos ; juttu=(i-1, arvaus),i++,lkm++)
     {
     }
     if (lkm==0)
          vaarin();

     return juttu;
}

//

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta