hoyre Skrevet 12. januar 2012 Del Skrevet 12. januar 2012 Hei! Har en opg som jeg lurer litt på: Et palindrom er et tall som kan lese likt begge veier(eks 101). Hva er det største palindromet av to produkter som består av to tall? Har prøvd å programmere det, men den fungerer ikke. Hva må gjøres annerledes i følgende kode: int tall = 0; string utskrift = ""; string tallet = ""; string endeligTall = ""; for (int i = 99; i > 10; i--) for (int j = 99; j > 10; j--) { tall = i * j; string verdiIArray = Convert.ToString(tall); endeligTall = verdiIArray; for (int baklengs = (verdiIArray.Length - 1); baklengs >= 0; baklengs--) { tallet += verdiIArray[baklengs]; if (tallet == endeligTall) { utskrift = endeligTall; } else { break; } } } labMelding.Text = "Det største palindromet er " + utskrift; } } Lenke til kommentar
etse Skrevet 12. januar 2012 Del Skrevet 12. januar 2012 Du tenker på denne oppgaven http://projecteuler.net/problem=4 ? I så fall kan den løses slik i C# (bruteforce) using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace testApp { class Program { static void Main(string[] args) { int largest = 0; for (int x = 100; x < 1000; x++) for (int y = 100; y < 1000; y++) if (isPalindrome(x * y) && x * y > largest) largest = x * y; Console.WriteLine("Largest palindrome found is: {0}", largest); Console.ReadKey(); } static bool isPalindrome(int tall) { string numAsString = tall.ToString(); for (int x = 0; x < numAsString.Length / 2; x++) if (numAsString[x] != numAsString[numAsString.Length - x - 1]) return false; return true; } } } Lenke til kommentar
hoyre Skrevet 12. januar 2012 Forfatter Del Skrevet 12. januar 2012 Du tenker på denne oppgaven http://projecteuler.net/problem=4 ? I så fall kan den løses slik i C# (bruteforce) using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace testApp { class Program { static void Main(string[] args) { int largest = 0; for (int x = 100; x < 1000; x++) for (int y = 100; y < 1000; y++) if (isPalindrome(x * y) && x * y > largest) largest = x * y; Console.WriteLine("Largest palindrome found is: {0}", largest); Console.ReadKey(); } static bool isPalindrome(int tall) { string numAsString = tall.ToString(); for (int x = 0; x < numAsString.Length / 2; x++) if (numAsString[x] != numAsString[numAsString.Length - x - 1]) return false; return true; } } } Ja, tenkte på den. Men skulle gjerne fullført min egen kode, slik at den kan fungere! Du vet ikke hva som er feil og må endres på? Lenke til kommentar
etse Skrevet 12. januar 2012 Del Skrevet 12. januar 2012 (endret) først og fremst: Hadde du puttet koden dinn inn i code-tags hadde den vært lettere å lese. Første feil: Du stopper ved første palindrome du finner, du kan ikke garantere at dette er det største. Matematikken i algoritmen din garanterer ikke dette. Nå er du heldig at en av faktorene i det største palindromet er 99, og derfor vil du finne dette; men dette er bare en tilfeldighet. Hadde det største palindromet vært f.eks. 98 * 96, ville du finnet et helt annet palindrome. Må derfor legge inn en sjekk for om det er den største. Altså er det veldig mye feil med koden din, og det var derfor jeg heller bare startet fra scratch. Men skrev litt om på koden din og fikset en del av feilene og endte opp med noe slikt: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { int tall = 0; int storstePalindrome = 0; for (int i = 99; i > 10; i--) for (int j = 99; j > 10; j--) { tall = i * j; string tallet = ""; string verdiIArray = Convert.ToString(tall); for (int baklengs = (verdiIArray.Length - 1); baklengs >= 0; baklengs--) tallet += verdiIArray[baklengs]; if (tallet == verdiIArray && tall > storstePalindrome) { storstePalindrome = tall; break; } } Console.WriteLine("Det største palindromet er {0}", storstePalindrome); Console.ReadKey(); } } } Endret 12. januar 2012 av etse Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå