2007-02-24, 03:38
  #1
Medlem
Zibris avatar
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:
Citat:
namn 15
dr 15 r pong.

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:
String szLetterLike = new String (charArr2);
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 skriva
Kod:
arNamn[i] = new String (tmpNamn[i]);
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[]?

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*'

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.
Citera
2007-02-26, 09:39
  #2
Medlem
Zibris avatar
Min programmeringslrare strde sig p [,] fr att skapa arrays och tyckte att man skulle anvnda [][] istllet :/. Han knde inte igen [,]. Vad r skillnaden?
Citera
2007-02-26, 12:25
  #3
Medlem
McBs avatar
Hr frklaras det ganska utfrligt: http://www.c-sharpcorner.com/UploadF...ithArrays.aspx
Citera
2007-02-26, 16:00
  #4
Medlem
Sane?s avatar
Ls in direkt till strng med StreamReader.ReadLine()
Plocka ut namnet med String.Substring(0, String.IndexOf(" "))
Plocka ut pong med Int.Parse(String.Substring(String.IndexOf(" ") + 1))
Citera
2007-02-26, 18:29
  #5
Medlem
Zibris avatar
McB: Tack

Sane?: Lter smart. Tnka p det till nsta gng
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in