Begynder C# hjælp

Software d.  31. august. 2009, skrevet af TheGreenFoX
Vist: 526 gange.

TheGreenFoX
 
Superbruger
Tilføjet:
31-08-2009 13:52:17
Svar/Indlæg:
1897/51
Hey

Jeg er ved at lave et simpelt C# program der kan finde det største af de tal man taster ind.

Men hvordan får jeg den til at stoppe når jeg skriver "stop"?
(kan godt stoppe det med et tal, men ved ikke hvordan jeg gør det med "ikke-tal")

(Søger lidt ekstra viden da det går lidt langsomt på klassen 🙂 )
1EaR
 
Elitebruger
Tilføjet:
31-08-2009 15:29:26
Svar/Indlæg:
5750/124
fusk, vi bruger Java i stedet 😛 Men selv er vi heller ikke kommet længere 😳


TheGreenFoX
 
Superbruger
Tilføjet:
31-08-2009 15:31:51
Svar/Indlæg:
1897/51
#1
Klassen er ikke kommet videre end "Hello World", så hvis jeres klasse er lige så langt så er i foran vores klasse... En kammi og jeg er begyndt på while loops og den slags hvor vi så er stødt på et lille problem... 🙂

Kildekoden ligger her: http://paster.testmax.dk/p4010... hvis det skulle have interessen 🙂


Svaret blev redigeret 1 gang, sidst af TheGreenFoX d. 31-08-2009 15:32:54.


Potteplante
 
Superbruger
Tilføjet:
31-08-2009 15:54:15
Svar/Indlæg:
872/67
går ud fra det er et konsole program...

smider alle de tal du har ind i et array

int a = 0;


for (int i = 0; i <= [array.lengt(eller).count]; i++)
{
if (array[i] <= a)
a = array[i]
}

noget i den stil stykke tid siden jeg har kodet det 🤣


Potteplante
 
Superbruger
Tilføjet:
31-08-2009 15:55:42
Svar/Indlæg:
872/67
og det med "stop" forstår jeg ikke lige helt hvad du vil ?

*edit*
dah....
du kan hoppe ud af din while loop med en "Break"


Svaret blev redigeret 1 gang, sidst af Potteplante d. 31-08-2009 15:59:59.


TheGreenFoX
 
Superbruger
Tilføjet:
31-08-2009 15:57:52
Svar/Indlæg:
1897/51
Programmet modtager bruges inputs af tal, og skal så udlevere det største tal når brugeren skriver stop (istedet for det næste tal)...

Probemet er bare at jeg gemmer det skrevende tal som en int, og der kan jeg ikke gemme at brugeren skrev stop

(Altså for at stoppe while loopet)
Hvis det er forvirrende så kig evt #2 hvor jeg linker til source


phansen
 
Superbruger
Tilføjet:
31-08-2009 15:59:55
Svar/Indlæg:
492/0
#5 så gem input i en streng...

if(str == "stop") then stop
else{
tal = lav str om til int
...
}


TheGreenFoX
 
Superbruger
Tilføjet:
31-08-2009 16:03:25
Svar/Indlæg:
1897/51
#6
Takker for forslaget... Kigger lige på det


phansen
 
Superbruger
Tilføjet:
31-08-2009 16:05:21
Svar/Indlæg:
492/0


phansen
 
Superbruger
Tilføjet:
31-08-2009 16:09:55
Svar/Indlæg:
492/0
Og hvis du leger it-supporter, så behøver det eftersigende ikke at blive ret meget mere avanceret end deres eksempel for at score et 13-tal :)


TheGreenFoX
 
Superbruger
Tilføjet:
31-08-2009 16:18:18
Svar/Indlæg:
1897/51
#9
Har lige haft min første time i programmering (datamatiker) i dag, så lige nu skal det bare virke 🙂
(nice link BTW... Kommer bare til at tage noget tid da jeg ikke fatter så meget af det, men skal nok komme igennem det)...

Nogen (mere konkrete) "hints" til hvordan det ville være smart at lave (og helst også hvorfor?)


Svaret blev redigeret 2 gange, sidst af TheGreenFoX d. 31-08-2009 16:20:49.


TheGreenFoX
 
Superbruger
Tilføjet:
31-08-2009 16:31:15
Svar/Indlæg:
1897/51
Okay nu fik min kami det vist til at virke (stortset)...
Den melder dog en fejl efter den har vist det største tal:
Fejlen er ved denne sætning:
TempNumber = Convert.ToInt32(input);

Hvad er der galt med den?


#12
West
 
Overclocker
Tilføjet:
05-09-2009 09:55:31
Svar/Indlæg:
146/34
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Størstetal_fortsat
{
class Program
{
static void Main(string[] args)
{
bool loop = true; //kan bruges til test, men ellers er den som sådan ikke nødvendig. Der kunne bruges while(true) istedet
int highestInt = -1;
int inputInt = -1; //igen for ikke at skulle oprette og nedlægge variablen.
string inputStr = ""; //for at du ikke skal oprette og nedlægge din string og sparer resourcer sådan.

while (loop)
{
console.writeline("Indskriv dit næste tal: ");
intputStr = Console.ReadLine().Trim().ToLower(); //No blanks accepted og du kan skrive sToP om du vil
if (inputStr == "stop")
Break;
else if (intoutStr == "score")
{ ShowScore();
continue;}

try{ ´
inputInt = Convert.ToInt32(inputStr); }
catch //Uden at definere noget får du alle exceptions
{ Console.WriteLine("Indput godkendt: \"Stop\" eller tal. Prøv igen.");
continue;}

if (inputInt > highestInt)
highestInt = inputInt;

ShowScore();
}
ShowScore();
Console.WriteLine("");
Console.WriteLine("Tryk en tast for at afslutte");
Console.ReadLine();

}

public static void ShowScore()
{
StringBuilder strBld = new StringBuilder("Højeste tal er nu: ");
//Bruges pga. sammensætning af strings bruger mange resourcer hvor stringbuilder er meget mere optimalt!
strBld.Append(highestInt.ToString());
Console.WriteLine(strBld.ToString());
}

}
}
}

Skrevet hurtigt i notepad så tag hensyn til mindre skrivefejl


TheGreenFoX
 
Superbruger
Tilføjet:
05-09-2009 10:02:52
Svar/Indlæg:
1897/51
Mange tak...
Løste det selv med tryparse, men vil helt sikkert nærlæse din catch/try løsning


#14
West
 
Overclocker
Tilføjet:
05-09-2009 14:23:53
Svar/Indlæg:
146/34
#13
Prøv at læse et par af kommentarerne..
Fx. at sige string tekst = "part a" + " part b"; er noget man bør forsøge at undgå da der allokeres mange resourcer således for at opbygge din endelige streng..
Så hvis du skal opbygge en string fra flere dele så brug stringbuilder! Den bruger et par linier mere måske, men er meget mere effektiv!