Forum: C# hjälp

Forum huvudsida -> Programmering -> C# hjälp

Sidor: 1

Till botten

Miina6 17:49 - 22:a November 2007 | Post #1
Medlem
Inlägg: 3


Skicka PM
Finns det någon som kan hjälpa mig jag har kört fast lite....
Jag ska skriva en kod som visar näst största värdet.

Detta har jag skrivigt:

Console.Write(EURAnge tio heltal: EUR);


for (int counter = 0; counter < 1000; counter++)



try

{


Console.Write(EURHeltal: EUR, counter++);
counter = int.Parse(Console.ReadLine());



}

catch
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(EURFEL! Du måste ange ett heltal.EUR);
Console.ResetColor();

men den ska kunna räkna ut näst största värdet...
alltså se så t ex:

heltal 1: -5
heltal 2: 18
heltal 3: Inget heltal!
FEL! du måste ange ett heltal
heltal 4: 89
heltal 5: 26
näst största talet är 26.

uppskattar hjälp jag håller på att bli tokig >.<




Smygis 21:42 - 22:a November 2007 | Post #2
Medlem
Inlägg: 90


Skicka PM
Nu kan jag ingen C# så du får ta det som det blir.
Python;
  1. #!/usr/bin/env python
  2. # coding: UTF-8
  3.  
  4. print "Ange tio heltal:"
  5.  
  6. listaMedTal = []
  7. while len(listaMedTal) < 10:
  8. try:
  9. listaMedTal.append(int(raw_input(\
  10. "Ange tal nr %d: " % (len(listaMedTal) + 1))))
  11. except ValueError:
  12. print "FEL! Du måste ange ett heltal."
  13.  
  14. listaMedTal.sort()
  15. print "Näst största talet är %d! Tada! Vackert." % listaMedTal[-2]


Under körning blir det:

Ange tio heltal:
Ange tal nr 1: 2
Ange tal nr 2: d
FEL! Du måste ange ett heltal.
Ange tal nr 2: 2
Ange tal nr 3: 3
Ange tal nr 4: 5
Ange tal nr 5: 2
Ange tal nr 6: 1
Ange tal nr 7: 6
Ange tal nr 8: f
FEL! Du måste ange ett heltal.
Ange tal nr 8: tr
FEL! Du måste ange ett heltal.
Ange tal nr 8: 100
Ange tal nr 9: 23
Ange tal nr 10: 1as
FEL! Du måste ange ett heltal.
Ange tal nr 10: 234
Näst största talet är 100! Tada! Vackert.


Du får översätta det till C# själv. Det borde vara ganska lätt.

-------------------------
Ingen signatur! <- OMG! Jag har inte någon signatur! Ge mig en signatur FFS!

Senast redigerad 21:45 - 22:a November 2007


Miina6 22:17 - 22:a November 2007 | Post #3
Medlem
Inlägg: 3


Skicka PM
Tack men jag fattar noll av det dära..
men körningen ser ut som det ska vara.




Tesuki 22:41 - 22:a November 2007 | Post #4
Medlem
Inlägg: 122


Skicka PM
vad han gjorde:
1: skapa en lista
2: mata in värden i listan
3: sortera listan
4: returnera näst sista elementet



Senast redigerad 22:41 - 22:a November 2007


Smygis 22:50 - 22:a November 2007 | Post #5
Medlem
Inlägg: 90


Skicka PM
  1. #!/usr/bin/env python
  2. # coding: UTF-8
  3.  
  4. print "Ange tio heltal:"
  5.  
  6. listaMedTal = []
  7. while len(listaMedTal) < 10:
  8. try:
  9. listaMedTal.append(int(raw_input(\
  10. "Ange tal nr %d: " % (len(listaMedTal) + 1))))
  11. except ValueError:
  12. print "FEL! Du måste ange ett heltal."
  13.  
  14. listaMedTal.sort()
  15. print "Näst största talet är %d! Tada! Vackert." % listaMedTal[-2]


Ok, Då försöker vi förklarar lite.

rad 1 till 3 kan du strunta i.

4 skriver ut Ange tio heltal:.

5 händer inget.

på rad 6 skapar jag en lista som jag ska lägga talen i.

sedan kommer en while loop som kommer köras så länge det inte finns 10 tal i ovan nämda lista.

rad 8 börjar try satsen.

rad 9 och 10 är igentligen en enda rad, Men jag böjde den över två.
Om man tar och fäller ut den så mycket det går får man:
  1. temp1 = raw_input("Ange tal nr %d: " % (len(listaMedTal) + 1)) # läser in en sträng från tangentbord
  2. temp2 = int(temp1) # konverterar den till en int (Om det inte går kommer det uppstå ett ValueError)
  3. listaMedTal.append(temp2) # Lägger till talet i listan om den gick att konvertera till int.


rad 11 fångar ValueError som uppstod om den inlästa strängen inte gick att konvertera till int

och då skriver rad 12 ut FEL! Du måste ange ett heltal.
Och loopen börjar om.

rad 14 sorterar listan med minst först.

rad 15 skriver ut element -2 i listan. minus 2 blir då näst sista och också näst största.

-------------------------
Ingen signatur! <- OMG! Jag har inte någon signatur! Ge mig en signatur FFS!



FunkyChicken 22:53 - 22:a November 2007 | Post #6
Nyhetsredaktör
Inlägg: 800


Skicka PM
Du behöver två variabler, en för att lagra det största och en för det näst största talet (sätt båda till noll från början).
Vid inläsning kontrollerar du om det nya talet är större än de näst största men mindre än det största - sätt isf variabeln för det näst största talet talet till det nya. Om det nya talet är större än det största, ersätt det största med det nya och det näst största med det som nyss var det största.

Det är ett väldigt enkelt problem som bara kräver några få rader kod, men det blir fusk om vi ger dig färdiga lösningar, du går ju i skolan för att lära digSmiley:P




Miina6 23:21 - 22:a November 2007 | Post #7
Medlem
Inlägg: 3


Skicka PM
okej tack ^^
ska kolla det i morn.

Heheh ja jag gör ju det ^^




FunkyChicken 15:55 - 23:e November 2007 | Post #8
Nyhetsredaktör
Inlägg: 800


Skicka PM
Förtydligande: Du behöver Inte hålla på och skapa listor och sortera och grejjer. Det är både fult och massa onödigt extrajobb.




ozamosi 16:24 - 23:e November 2007 | Post #9
Administratör
Inlägg: 1129


Skicka PM
Fult och fult... Beroende på uppgiften är det troligen mer generellt och återanvändbart, och sådana saker brukar man eftersträvaSmiley

-------------------------
Ljusblå



Tesuki 22:11 - 23:e November 2007 | Post #10
Medlem
Inlägg: 122


Skicka PM





FunkyChicken 11:21 - 24:e November 2007 | Post #11
Nyhetsredaktör
Inlägg: 800


Skicka PM
    Citat av ozamosi:
Fult och fult... Beroende på uppgiften är det troligen mer generellt och återanvändbart, och sådana saker brukar man eftersträvaSmiley


Uppgiften är given! Nu ta miinas kod tusen värden vilket inte är så mycket, men OM vi ska prata återanvändbarhet så kan man byta ut tangentbordsströmmen mot en fil, kanske med några miljoner värden. Då är det INTE smart att allokera minne för och sedan sortera en lista!Smiley:P






Sidor: 1

Forum huvudsida -> Programmering -> C# hjälp
Atom feed

Du får inte posta i den här tråden | Till toppen