SpinozaSittSkjegg Skrevet 13. september 2011 Del Skrevet 13. september 2011 Hei, jeg sitter og river håret ut av hodet mitt snart, da jeg ikke ser noen løsning på dette problemet. Jeg har prøvd mye forskjellig, men jeg regner med at en av dere kan forklare alt med en simpel setning Oppgaven er som følger: "Lag et program som leser inn en sekvens av heltall fra tastaturet, og skriver ut en rapport om hvor mange ganger tallene 0, 1, ..., 9 forekom i den innleste sekvensen. Anta at sekvensen avsluttes med et negativt heltall. Lag programmet slik at det skriver ut resultatet som et histogram der søylene er stående. Eksempel: * * * * * * * * * * * * * * * 0==1==2==3==4==5==6==7==8==9 Jeg føler at instruktøren min har laget en oppgave veldig forut for min tid... På forhånd, takk! Lenke til kommentar
etse Skrevet 13. september 2011 Del Skrevet 13. september 2011 dette er ikke en oppgave veldig forut for din tid. Den er egentlig perfekt og går innom de første helt elementære tingene du må lære. Problemet med programmering er at de første stegene er veldig vanskelige. Men det bedrer seg så fort du får tatt deg noen steg Det du må prøve på er å lære deg å tenke som en datamaskin, og en datamaskin er utrolig dum. Altså må du prøve å forklare for deg selv problemet på en helt elementær måte slik at du kan faktisk gjøre det til programkode. Spør deg selv: Hva er det egentlig programmet skal gjøre? Forklar i detalj for deg selv på simplest mulig måte. Så hva er det programmet dit skal gjøre? Først skal det lese inn en rekke med tall fra tastaturet. Slik jeg forstår oppgaven skal du lese tall til du finner et negativt til. Koden skal så printe ut en rapport om hvor mange ganger tallene fra 0 til 9 forekom i denne sekvensen. Dette tar jeg som at tall > 9 skal ignoreres? Spørsmålet blir da, hvordan gjør du dette? Det det opp i 3 deler 1: Hvordan skal du lese inn ting fra tastaturet? 2: Hvordan skal du ta vare på hvor mange ganger hver tall blir trykket? 3: Hvordan skal du skrive de ut som et histogram? Løs problemet i den rekkefølgen. Ikke begynn på 2 før du klarer 1. Og når du får til 2 bare skriv ut hvor mange ganger hvert tall kom på skjermen før du begynner med histogrammet. Lenke til kommentar
Kiff Skrevet 14. september 2011 Del Skrevet 14. september 2011 (endret) Kanskje dette hjelper deg litt på vei. private static int magiskMetodeSomLeserTallFraTastatur() { // Utfordring 1: Denne må lages } public static void main(String[] args){ // Utfordring 2: Sett opp en måte å lagre tallene her, mitt tips er en array med 10 posisjoner int inputnum = magiskMetodeSomLeserTallFraTastatur(); while (inputnum >= 0) { if (inputnum >= 0 && inputnum <= 9) { // Utfordring 2.5: lagre tallet her } inputnum = magiskMetodeSomLeserTallFraTastatur(); } // Utfordring 3: skriv ut her } Endret 14. september 2011 av Kiff Lenke til kommentar
srbz Skrevet 14. september 2011 Del Skrevet 14. september 2011 Det første jeg selv stusset over i denne oppgaven, er hvordan den mener du skal lese inn tallene. Skal du skrive inn en lengre tekststreng bestående av siffer 0-9 (f.eks. strengen "74098346") og deretter behandle hvert siffer, eller skal du skrive inn ett og ett tall, og avslutte innlesing fra tastaturet med å skrive et negativt heltall? Slik jeg ser det er akkurat dette åpent for tolkning, selv heller jeg mot at sistnevnte er mest fornuftig, særlig siden oppgaven presiserer at du skal "Anta at sekvensen avsluttes med et negativt heltall." Jeg føler heller ikke at eksempelutskriften av histogrammet samsvarer med hvordan det er beskrevet? Lenke til kommentar
jonny Skrevet 14. september 2011 Del Skrevet 14. september 2011 (endret) Her er en måte å gjøre det på, riktignok skrevet i Python... :-) Bare spør hvis det er noe av koden du ikke skjønner eller vet hvordan du skal få til i Java. def get_digits(): digit_count = [0]*10 digit = 0 while digit >= 0: try: digit = int(raw_input("Enter a digit (0-9), or a negative number"\ " to quit: ")) except: continue if 0 <= digit < 10: digit_count[digit] += 1 print return digit_count def get_histogram(list): max = list[0] for e in list[1:]: if e > max: max = e result = "" for i in range(max, 0, -1): for e in list: if e >= i: result += "|X|" else: result += " " result += "\n" for i in range(len(list)): result += "-{0:d}-".format(i) result += "\n" return result print(get_histogram(get_digits())) Eksempel på kjøring: Enter a digit (0-9), or a negative number to quit: 5 Enter a digit (0-9), or a negative number to quit: 2 Enter a digit (0-9), or a negative number to quit: 9 Enter a digit (0-9), or a negative number to quit: en Enter a digit (0-9), or a negative number to quit: tre Enter a digit (0-9), or a negative number to quit: 43 Enter a digit (0-9), or a negative number to quit: 1 Enter a digit (0-9), or a negative number to quit: 1 Enter a digit (0-9), or a negative number to quit: 0 Enter a digit (0-9), or a negative number to quit: 7 Enter a digit (0-9), or a negative number to quit: 7 Enter a digit (0-9), or a negative number to quit: 8 Enter a digit (0-9), or a negative number to quit: 3 Enter a digit (0-9), or a negative number to quit: 4 Enter a digit (0-9), or a negative number to quit: 3 Enter a digit (0-9), or a negative number to quit: 4 Enter a digit (0-9), or a negative number to quit: 3 Enter a digit (0-9), or a negative number to quit: 5 Enter a digit (0-9), or a negative number to quit: -1 |X| |X| |X||X||X| |X| |X||X||X||X||X||X| |X||X||X| -0--1--2--3--4--5--6--7--8--9- Endret 14. september 2011 av jonny 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å