Inlägg

Inlägg som Hot Dogs har skrivit i forumet
Av Hot Dogs
Skrivet av gamingpandahq:

Dag: 8
Språk: Python

Ligger lite efter, här kommer min (tyvärr ickefungerande) lösning till dag 8. Trots att jag får rätt svar på test datan fungerar den inte på den riktiga. Provade att "låna" lite kod från någon annan här i tråden, och fick då ett annat svar, vilket också var rätt. Något som kan se var min kod brister?

inp = [] with open('D8/test.txt', 'r') as f: for line in f.readlines(): temp = [] for word in line.split(): if word != '|': temp.append(word) inp.append(temp) def find_num(word, key): if len(word) == 2: return 1 elif len(word) == 3: return 7 elif len(word) == 4: return 4 elif len(word) == 7: return 8 elif len(word) == 6: word = list(word) if key[2][0] in word and key[2][1] in word: return 9 else: return 6 elif len(word) == 5: word = list(word) if key[2][0] in word and key[2][1] in word: return 3 elif key[6][0] in word and key[6][1] in word: return 5 else: return 2 res = 0 for line in inp: current_sum = 0 key = [[] for i in range(8)] one_found = False four_found = False while not one_found and not four_found: for word in line: if len(word) == 2 and len(key[2]) == 0: key[2].append(word[0]) key[2].append(word[1]) one_found = True for word in line: if len(word) == 4: for char in word: if char not in key[2]: key[6].append(char) four_found = True for i in range(1,5): num = find_num(line[-i], key) current_sum += num * 10 ** (i-1) res += current_sum print(f"Sum of numbers is {res}")

Dold text

find_num bör kunna returnera 0-9, men du har missat ett nummer.

Av Hot Dogs

I avrundningen använder du fel variabel för första parametern. Samt så finns det ingen anledning att avrunda något förrän efter att man har konverterat, samt här så konverterar du en int vilket kommer ge felmeddelande samt vore onödigt då dem endast kan innehålla heltal.

tvåDecimaler = Math.Round(temp,2);

Här skriver du ut fel variabel för att få ut Celsius(inte tvåDecimaler utan ...?). Detta är dock rätt om du fixar till det fel som jag nämnde ovan.

Console.WriteLine($"{fahr} degrees fahrenheit is {tvåDecimaler} degrees Celsius.");

Första raden blir ganska meningslös, du sätter temp till fahr men konverterad till double, men sen skriver du över det direkt igen på nästa rad.
Ta bort den raden helt istället och göra deklareringen och omvandlingen istället på samma rad som formeln, alternativt så ändrar du helt enkelt till (temp - 32) på raden nedan vilket bör fungera korrekt.

public static double FahrToCels(int fahr) { double temp = (double)fahr;// casting i högerled - tilldela fahr till double temp = (fahr - 32) * 5 / 9.0; // konverta fahr till celsius & rfeturnera return temp; }

Kan alltid utveckla på svaren, men är relativt lätta fel som du säkert kan åtgärda relativt lätt.

Av Hot Dogs

InitializeComponent(); ?

Av Hot Dogs
Skrivet av Field_trip:

Jag skrev textBox1.Text = bokLista[random.Next(bokLista.Count)].ToString(); igen och det funkade, men den slumpar "tillgänglig" och "otillgänglig", hur fixar jag så den slumpar böckerna och inte bool värdet?

Problemet är dina

public override string ToString() { if (tillgänglig) { return "tillgänglig"; } else { return "otillgänglig"; } }

Så din slumpning fungerar antagligen, bara att du inte skriver ut annat är tillgänglig/otillgänglig.

Av Hot Dogs

Det fungerar som det skall, problemet är att när du skriver ut böckerna så clearar du consolen efter att varje bok skrivits ut vilket gör att endast den senaste boken visas. Sådana här fel är lätta att hitta om du ser till att kontrollera att det du tror händer(att böckerna skrivs över) är det som faktiskt händer(utskrifterna clearas i foreach loopen). Antingen via debugger eller en enkel print av liststorlek etc. vid passande ställe i koden, så skulle det snabbt gett en bra ledtråd till var felet kan ligga.

Skrivet av Field_trip:

bool minBool = true; // minbool är sann while (minBool) // så länge min bool är sann { // skriver ut menyn för typ av bok Console.Write("\n\tÄr boken en [1] Roman, [2] Tidskrift eller [3] Novellsamling?\n\t"); if (int.TryParse(Console.ReadLine(), out int Bokval)) // sifferinmatning för vår switch { switch (Bokval) { case 1: { Bok a = new Roman(Titel, Skribent, Utgivningsår); bokLista.Add(a); Console.Write("\n\tSparat!\n\t"); break; } case 2: { Bok a = new Tidskrift(Titel, Skribent, Utgivningsår); bokLista.Add(a); Console.Write("\n\tSparat!\n\t"); break; } case 3: { Bok a = new Novellsamling(Titel, Skribent, Utgivningsår); bokLista.Add(a); Console.Write("\n\tSparat!\n\t"); break; } default: { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("\n\tOgiltigt val!"); Console.ResetColor(); break; } } minBool = false; // loopen avslutas }

När jag skapar en ny bok så skrivs den ursprungliga boken över, undrar varför. Hur ser koden ut?

Av Hot Dogs

Det är for-loopen som gör att det inte fungerar, all loopning som behövs är din do-while. Tar du bort for-loopen och använder din variabel antal_hundar som index vid tilldelningen bör det fungera med några mindre ändringar i else-satsen, samt att ändra till "continue" istället för "break" vid default case i switch-casen.

if (antal_hundar == 25){ Console.WriteLine("Tyvärr, hunddagiset är fullt!"); } else{ hundar[antal_hundar++] = val; }

Av Hot Dogs
Skrivet av Palle10:

Såhär ser det ut nu men förstår fortfarande ej hur man gör så att tyvärr/grattis-meddelandet inte ska skrivas ut flera gånger eller hur man får rätt meddelande.

static void Main(string[] args) { int[] helTal = new int[10]; Console.WriteLine("Välj 10 heltal för chansen att vinna 100kr om du lyckas få med det hemliga talet!"); for (int i = 0; i < helTal.Length; i++) { Console.Write("Ange ett heltal: "); String str = Console.ReadLine(); int element = Convert.ToInt32(str); helTal[i] = element; } Console.Clear(); { Console.WriteLine("Du valde: "); } foreach (int element in helTal) { Console.WriteLine(element); } int key = 10; for (int i = 0; i < helTal.Length; i++) { if (helTal[i] != key) { Console.WriteLine("Tyvärr det hemliga talet var " + key + ", bättre lycka nästa gång!"); } else { Console.WriteLine("Grattis det hemliga talet var " + key + ", du har vunnit 100kr!"); break; } } } } }

Exempelvis skulle du kunna lägga till ett krav i if-satsen att den endast går in där om alla tal redan har kontrollerats(dvs. du är inne på sista möjliga loop).

if (helTal[i] != key && i == helTal.Length - 1)

Ett annat val vore att ändra lite mer på koden och använda sig utav en boolean, och göra utskriven efteråt när man har gått igenom alla tal(dvs. inte i loopen).

Av Hot Dogs
Skrivet av dotaponny:

Är halvt fast på samma uppgift, får det mesta att funka men får bara in min try/catch när jag använder mig av While(true) men går det inte att få in den utan någon loop? Så här ser min kod ut

namespace sistaförsöket { class Program { static int Fahrtocel(int fahr) { int cel = ((fahr - 32) * 5 / 9); return cel; } static void Main(string[] args) { int cel; int fahr; do { Console.WriteLine("Welcome to the sauna, please enter the temperature in Fahrenheit."); while(true) try { fahr = int.Parse(Console.ReadLine()); break; } catch(Exception e) { Console.WriteLine(e.Message); continue; } cel = Fahrtocel(fahr); if (cel < 73) { Console.WriteLine("The temperature is too low, turn it up."); } else if (cel > 77) { Console.WriteLine("The temperature is too high, turn it down."); } else if (cel == 75) { Console.WriteLine("The temperature is perfect."); } else { Console.WriteLine("The temperature is okay."); } } while (cel <= 73 || cel >= 77); Console.WriteLine("Enjoy the sauna! =)"); Console.ReadKey();

Orsaken till att din "while(true)" gör att det funkar är för att du har en "break;" efter din parse. Detta gör att du hoppar ur din While(true) loop. Tar du bort loopen, samt din "break"; så kommer det fungera korrekt.

try{ fahr = int.Parse(Console.ReadLine()); }catch(Exception e){ Console.WriteLine(e.Message); continue; }

Tar du bort "while(true)" gör din "break;" att du hoppar ur din do-while, vilket du inte vill.

Av Hot Dogs

Det ser korrekt ut och svaret bör vara som du fick, 20000 dollar vid 64 år. Väldigt lätt när man får/gör ett diagram som detta, att testa något (enkelt) fall på papper och se att ens program ger samma svar.

Måsvingarna kring age++; är dock onödiga, men skadar självfallet inget.
Ingen kontroll att det man matar in är ett heltal (samt att det är en rimlig ålder), men såvida det inte är något krav för uppgiften så behövs det inte. Kommer säkerligen längre fram i kursen. Kontrollen finns inte i det givna diagrammet, så bör väl inte implementeras. Om man skulle vilja göra det kan man lätt göra det med en Int.Parse i en try-catch, eller med hjälp av Int.TryParse.

Av Hot Dogs
Skrivet av Will Sheza C:

Jag vet inte riktigt vart problemet är med tanke på att koden fungerar men jag förstår dock inte varför jaga bara få fram redbull hela tiden även fast jag vill ha en annan drink

Ta en titt på varje Console.WriteLine i dina switch-cases, så ser du säkert problemet.

Av Hot Dogs

@wilund91

Drycker sparas i vektorn, problemet är att du inte skriver ut dem korrekt.

I print_crate() har du missat att lägga till variablen som skall skrivas ut, till WriteLine.

Problemet med calc_total() är samma som i print_crate, bara att du använder olika sätt att loopa igenom dem.
Eftersom det är en array, så är alltid längden 24. Så både foreach och en vanligt for-loop med en kontroll mot längden av arrayed är densamma. Det är här du vill använda numberOfBootles(bottles*). Detta medför att i din nuvarande implementation att det alltid räknas som att det är 24st drycker tillagda, vilket gör att kostnaden blir konstant och du alltid printar ut "You have {0} soda in your crate" 24 gånger.

Av Hot Dogs

Vad är det egentligen för spel som det gäller? Om det inte är från pålitliga ställen så gissar jag på att Ardamax kom med spelnedladdningen. Har själv lekt runt lite med Ardamax och det är en ren Trojan/Keylogger, beroende på konfiguration kan de fått tag på lite allt möjligt(allt du skriver, skärmdumpar, historik, etc.). Antagligen missar du något uppenbart när du kör Malwarebytes Anti-Malware, då den både hittar och lycktas ta bort allt utan problem, utan att ha premium.

Av Hot Dogs

Det går utmärkt att ladda ned spel på en annan dator, och sedan bara föra över filerna till din andra dator, så länge du vet vilka mappar det är som gäller(Steam\SteamApps\common).
Sedan installerar du bara som vanligt, där du då kommer att få upp något i stil med"Detecting al ready existing files", sedan är det bara att sätta igång att spela efter att Steam gjort klart verifikationen av filerna.

Av Hot Dogs

Deklarare rovarmening utanför loopen som du precis gjort ovan(måste kanske initialisera den tom, dvs rovarmening = "";).
Sen i ifsatsen skulle jag byte ut hela till

rovarmening += rovar[i]+"o"+rovar[i];
break;

Av Hot Dogs
Skrivet av Millstream63:

Tack! Trodde inte man skall använda manualer;)Kollar där nu.

Bara ett tips för att utesluta fel med DVD-läsaren skulle kunna vara att försöka installera via usb: http://www.sweclockers.com/artikel/15673-installera-windows-7...

Men eftersom ni nu har två stycken kanske inte chansen är så stor att det är trasig DVD-läsare som är boven, men man vet ju aldrig! Lätt att testa i alla fall.

Av Hot Dogs
Skrivet av NLFxp:

Då väntar jag med spänning på hur det har gått.
Tror du dem har fått in hw stöd för 720 och 1080 nu ?

För mig så löste den officiella Frodoversionen inte problemet(Otroligt hackigt), eftersom den fortfarande inte har hårvaruaccelerationsstöd.
Men med test-builden(test-builds för just HW acceleration) från 27de(finns nyare nu) fungerar det utan några problem med både 720p och 1080p.
Test-builderna hittar man här: http://mirrors.xbmc.org/test-builds/android/

Av Hot Dogs

http://www.sweclockers.com/artikel/15673-installera-windows-7... där hittar du iso-filer till Win 8 etc.
Sen är det bara använda produktnyckeln från MSDNAA.

Av Hot Dogs

Hade samma "problem" fast på mitt MSI moderkort. Löste sig efter installation av Intel's 3.0 drivrutiner.

Av Hot Dogs

Skulle gärna få en invite
In-game namn: Chwiz (@Far Shiverpeaks)

Av Hot Dogs

Längst upp står det:

Pre-order Guild Wars 2 and receive a 1-day head start prior to launch!

Koden blir sänt på mail när spelet skickas från oss.

Vilket jag skulle tolka som att du kommer få hem ett paket på posten.
Jag beställde spelet fast långt innan, då man fick 3 dagar head start. Jag fick i alla fall hem spelet skickat som ett paket , där man då får en licens-nyckel som man aktiverar på https://register.guildwars2.com. Finns instruktioner inuti fodralet man får hem.
Dock så borde du ju fortfarande kunna registrera dig med den kod du får via mail, som jag förstår det.