2007-02-24, 03:38
#1
Hej... Ska gra en highscorelista som en del av en inlmningsuppgift p programmering a. Listan sparas i filen hiscore.txt och ska spara 10 namn och dess pong (spelet r irrelevant, men det r ett lame "gissningsspel" fr att visa att vi klarar av slumptal, fr dig som undrar)..
Formatet p posterna i hiscore.txt r:
Filen lses av och sparas i tmpNamn[,] om det r bokstver och tecken - ej space eller siffror. tmpPoints[,] om det r siffror. Den frsta vektorn hanterar vilken plats personen har, och den andra hur mnga tecken. tmpPoints[0,4] r sledes frstaplatsinnehavaren som har ett fyrsiffrigt nummer.
Nr jag vl lst av dem och ftt in det i rtt vektor etc, s vill jag konvertera det till string respektive int. Det r hr jag fr problem. Hur konverterar jag en flerdimensionell char-vektor till en vanlig string-vektor?
Lste lite p microsofts .NET-sida (frsta dom gjort bra tycker jag - sidan allts.. ltthanterlig referens). De tar upp vanlig konvertering frn char[] till string och det skulle se ut som s hr:
Men mono klagar iaf.
Hr kommer koden:
Som jag skrev hller jag p med programmering a, s som ni ser r det inget... "hjdar"-program.
Formatet p posterna i hiscore.txt r:
Citat:
dr 15 r pong.
namn 15
Filen lses av och sparas i tmpNamn[,] om det r bokstver och tecken - ej space eller siffror. tmpPoints[,] om det r siffror. Den frsta vektorn hanterar vilken plats personen har, och den andra hur mnga tecken. tmpPoints[0,4] r sledes frstaplatsinnehavaren som har ett fyrsiffrigt nummer.
Nr jag vl lst av dem och ftt in det i rtt vektor etc, s vill jag konvertera det till string respektive int. Det r hr jag fr problem. Hur konverterar jag en flerdimensionell char-vektor till en vanlig string-vektor?
Lste lite p microsofts .NET-sida (frsta dom gjort bra tycker jag - sidan allts.. ltthanterlig referens). De tar upp vanlig konvertering frn char[] till string och det skulle se ut som s hr:
Kod:
Jag kan inte deklarera string-vektorn p det stllet, eftersom det r i en for-loop, s jag vet inte riktigt vad man skriver istllet. Jag testade skrivaString szLetterLike = new String (charArr2);
Kod:
Som jag tolkade av m$' exempel ovan s tas hela vektorn ver till stringen. D borde vl hela under-vektorn i en flerdimensionell tas ver till en string[]?arNamn[i] = new String (tmpNamn[i]);
Men mono klagar iaf.
Citat:
sandbox.cs(55,18): error CS1502: The best overloaded method match for `string.String(char*)' has some invalid arguments
sandbox.cs(55,18): error CS1503: Argument 1: Cannot convert from `char[,]' to `char*'
sandbox.cs(55,18): error CS1503: Argument 1: Cannot convert from `char[,]' to `char*'
Hr kommer koden:
Kod:
static void Main(string[] args) { StreamReader sr=new StreamReader("hiscore.txt"); string hiscoreStringRaw = sr.ReadToEnd(); char[] hsChar = hiscoreStringRaw.ToCharArray(); for(int i=0;i<hiscoreStringRaw.Length;i++) Console.Write(hsChar[i]); char[,] tmpNamn = new char[10, 10]; //olagligt att ha 10+ tecken lngt namn.. char[,] tmpPoints = new char[10, 4]; //alla rtt r 1000p, s mer n 4 tecken behvs inte string[] arNamn = new string[10]; //arNamn r den slutgiltiga vektorn fr namn int[] arPoints = new int[10]; //arPoints -||- fr pong int x=0;//till tmp*s andra vektor int j=0;//till tmpNamns andra vektor int n=0;//till tmpPoints andra vektor for(int i=0;i<hiscoreStringRaw.Length;i++) { if((hsChar[i]>='0')&&(hsChar[i+1]<='9')) { tmpPoints[x,n]=hsChar[i]; n++; } else if((hsChar[i]!=' ')/*&&(hsChar[i]!=((hsChar[i]>='0')&&(hsChar[i+1]<='9'))*/&&(hsChar[i]!='\n')) { tmpNamn[x,j]=hsChar[i]; j++; } if(hsChar[i]=='\n') x++; } //Om jag fattar det rtt s funkar det ovan. Hr kommer det jag behver hjlp med: for(int i=0;i<10;i++) arNamn[i] = new String (tmpNamn); //sen ska jag gra samma sak fr pong ocks, och skriva ut i writelinen hr under. for(int i=0;i<=10;i++) Console.WriteLine(i+". "+arNamn[i]+" - "); }
Som jag skrev hller jag p med programmering a, s som ni ser r det inget... "hjdar"-program.