[ARHIIV] mängumeistrid
Pole sisse logitud. [Logi sisse ]
Mine lehekülje algusesse
Prinditav versioon | Telli teema e-mailile | Lisa lemmikutesse  
(C)Paluks abi stringide õigesti liitmisega!
normann
Level 15
Avatar

Liitunud: 28.4.2006
Postitusi: 1528
[EEMAL]




postitati 8.6.2010 17:48 Tsiteeri
(C)Paluks abi stringide õigesti liitmisega!



Põhimõtteliselt, proovin teha random name generatorit ja kasutan sellist koodi:
Mul on 3 - 35 kohalist character arrayt(string) ja 3 random numbrit (vahemikus 1-35).
Funktsioonis "MakeOrcName()", liidetakse igast arrayst 1 suvaline tükk kokku üheks kolmeosaliseks sõnaks, mis omakorda returnitakse funktsiooni lõpus.

Selle koha peal ei paista probleeme olevat, küll aga on probleeme selle sõna vastu võtmisega funktsioonist või selle sõna konsooli kirjutamisega.
Nimelt annab programm vastuseks ainult funktsioonist saadud sõna esimese tähe, mitte terve sõna.

Tahaks siis teada, milline on õige viis stringi väärtuseks funktsioonist saadud stringi määramisega?ehk siis:
Kood:
char NIMI = {SaaFunktsioonistV22rtus()};

Mis selles valesti on, kas kuskile vahesse käivad jutumärgid?

Kood:

#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <conio.h>

/*1. Silbid(nimede algused) /2. Silbid(keskmised, "sidujad") /3. Silbid(lõpud)
|Ba |rw |ork
|Be |t |ug
|Bu |ng |og
|Bra |rn |ot
|Bre |rg |or
|Bru |r |ort
|Go |nr |art
|Goo |n |uf
|Ga |dg |iz
|Gro |kg |akh
|Gra |rd |ekh
|Gru |ks |od
|Gri |gs |olk
|De |tb |ulk
|Du |rs |ab
|Do |g |ak
|Dre |dn |uz
|Dru |br |ul
|Dro |mg |al
|Mo |mr |ol
|Ma |gg |ik
|Wa |mt |op
|Wo |rm |otk
|Waa |b |itk
|Na |tg |ang
|Naa |ds |atk
|Ugo |sd |urt
|Uge |zk |urc
|Ugi |rz |urk
|Uga |ks |erk
|Uzo |sr |ad
|Sku |gn |at
|Ska |ng |olk
|Sni |gk |ot
|Sna |tg |ut
/______________35_______________/__________________________________*/

using namespace std;



char MakeOrcName(){


char *Silp_one[ 35 ] = {"Ba","Be","Bu","Bra","Bre","Bru","Go","Goo","Ga","Gro","Gra","Gru","Gri","De","Du","Do","Dre","Dru","Dro","Mo ","Ma","Wa","Wo","Waa","Na","Naa","Ugo","Uge","Ugi","Uga","Uzo","Sku","Ska","Sni","Sna"};
char *Silp_two[ 35 ] = {"rw","t","ng","rn","rg","r","nr","n","dg","rd","kg","rd","ks","gs","tb","rs","g","dn","br","mg","gg","mt" ,"rm","b","tg","ds","sd","zk","rz","ks","sr","gn","ng","gk","tg"};
char *Silp_three[ 35 ] = {"ork","ug","og","ot","or","or","art","uf","iz","akh","ekh","od","olk","ulk","ab","ak","uz","ul","al","ol","i k","op","otk","itk","ang","atk","urt","urc","urk","ert","ad","at","olk","ot","ut"};
//generate random numbers and name below
int random1 = 1+ rand( ) % 34 ; // generate random from 1 to 35;
int random2 = 1+ rand( ) % 34 ; // -||-
int random3 = 1+ rand( ) % 34 ; // -||-
char name[9];
strcat ( name, Silp_one[random1] );
strcat ( name, Silp_two[random2] ); //add chars 1-by-1
strcat ( name, Silp_three[random3] );
return *name;//return the name generated
}


int main(){


while(!kbhit()){

char nimii[9] = {MakeOrcName()};
cout<<"Name: "<< *nimii <<"n";
}
return 0;
}


Ainuke teine võimalus, mis korralikult compiles, oli selline main()
Kood:
int main(){


while(!kbhit()){

char nimii = {MakeOrcName()};
cout<<"Name: "<< nimii <<"n";
}
return 0;
}


//IDE-na kasutan Code::Blocks´i ja compiler on MinGW, mis on sellel default compiler.

http://media.kickstatic.com/kickapps/images/40602/photos/PHOTO_7961920_40602_4826691_ap.jpg

Vaata kasutaja profiili Saada kasutajale e-mail Otsi kasutaja postitusi Saada privaatsõnum
jorss
Level 12


Liitunud: 25.1.2005
Postitusi: 951
[EEMAL]




postitati 8.6.2010 20:07 Tsiteeri


tegin koodi ümber ja lisasin selgitavad kommentaarid

õpi oma koodi korralikult vormistama, täiega võimatu on sellest pudrust seal midagi aru saada.

Kood:

#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <conio.h>

using namespace std;


//MakeOrcName võtab nüüd argumendiks pointeri stringile, kuhu ta kirjutab tehtud nime.
//kui argumendiks anda string, mille max pikkus pole piisav, lendab programm ilmselgelt õhku.
void MakeOrcName(char* out)
{


char *Silp_one[ 35 ] = {"Ba","Be","Bu","Bra","Bre","Bru","Go","Goo","Ga","Gro","Gra","Gru","Gri","De","Du","Do","Dre","Dru","Dro","Mo ","Ma","Wa","Wo","Waa","Na","Naa","Ugo","Uge","Ugi","Uga","Uzo","Sku","Ska","Sni","Sna"};
char *Silp_two[ 35 ] = {"rw","t","ng","rn","rg","r","nr","n","dg","rd","kg","rd","ks","gs","tb","rs","g","dn","br","mg","gg","mt" ,"rm","b","tg","ds","sd","zk","rz","ks","sr","gn","ng","gk","tg"};
char *Silp_three[ 35 ] = {"ork","ug","og","ot","or","or","art","uf","iz","akh","ekh","od","olk","ulk","ab","ak","uz","ul","al","ol","i k","op","otk","itk","ang","atk","urt","urc","urk","ert","ad","at","olk","ot","ut"};

int random1 = rand() % 35 ; //sul on vaja numbreid 1-34, mitte 1-35
int random2 = rand() % 35 ; //
int random3 = rand() % 35 ; //

sprintf(out,"%s%s%s",Silp_one[random1],Silp_two[random1],Silp_three[random1]);
}


int main()
{
char nimii[9];
while(!kbhit())
{
MakeOrcName(nimii);
cout<<"Name: "<< nimii <<"\n"; // "\n" pidi olema, sul oli n
}
return 0;
}

//õpi kasutama printf(), sprintf() funktsioone, üli mugav on.
//või kui sa juba c++ga jändad, siis on olemas stringi class, aga minu arust on see üsna jube leiutis.

Platform II: -DMI-; H0lx&jorssJõulumäng I: h0lx&jorssKambakas I: jorss, Perfoon
Vaata kasutaja profiili Otsi kasutaja postitusi Saada privaatsõnum
normann
Level 15
Avatar

Liitunud: 28.4.2006
Postitusi: 1528
[EEMAL]




postitati 11.6.2010 17:19 Tsiteeri


Tänan soovituste eest, kuigi, halva vormistuse ajaksin ma pigem pikalt magamata olemise süüks :)
Printf olen ennegi kasutanud, sprintf´iga aga tuttav ei ole, guugeldan siis.

http://media.kickstatic.com/kickapps/images/40602/photos/PHOTO_7961920_40602_4826691_ap.jpg

Vaata kasutaja profiili Saada kasutajale e-mail Otsi kasutaja postitusi Saada privaatsõnum
simmo
Level 10
Avatar

Liitunud: 6.1.2006
Postitusi: 720
[EEMAL]




postitati 12.6.2010 11:54 Tsiteeri


Code::Blocksil võtad ülevalt Plugins ja Source code formatter ning vormistab koodi kenasti ära.

Vaata kasutaja profiili Saada kasutajale e-mail Külasta kasutaja kodulehte Otsi kasutaja postitusi Saada privaatsõnum Vaata kasutaja MSN-i

Hetkel loevad seda teemat:
Mitte ühtegi - 1 külaline

Mine lehekülje lõppu





Foorumi algbaas põhineb XMB mootoril, modifitseeritud Valter Pundi poolt
Kodulehekülg on tehtud Valter Pundi poolt vpundi ät gmail punkt komm