Forum: Ny på java-programmering

Forum huvudsida -> Programmering -> Ny på java-programmering

Sidor: 1

Till botten

bazquz 11:52 - 12:a September 2007 | Post #1
Medlem
Inlägg: 3


Skicka PM
Mitt problem ligger väl i att jag är alldeles ny på programmering över huvudtaget, men tänkte he det en chans. Har fått i uppgift nu att göra följand:

Skapa ett program som läser in tal till en tabell och sedan skriver ut hur många gånger varje tal blev inskrevet. Inläsningen av tal ska avslutas när man skriver in ett negativt tal.

Exempel på utskrift är:
Skriv in dina siffror, avsluta med ett negativt tal:
4 5 7 2 0 5 7 -2
0 skrevs in 1 gång
2 skrevs in 1 gång
4 skrevs in 1 gång
5 skrevs in 2 gånger
7 skrevs in 2 gånger.

Totalt är det 7 tal i utksriften.

Finns det nån vänlig själ där ute som skulle kunna ge mig lite tips på vägen hur jag ska gå till väga. Vill inte att ni skriver hela program-koden till mig, för då lär jag mig inget. Men gärna lite hjälp på vägen om hur ungefär er kod hade sett ut.

Tacksam för svar.
David Berglund




FunkyChicken 15:17 - 12:a September 2007 | Post #2
Nyhetsredaktör
Inlägg: 800


Skicka PM
Gör en array med tio element. Här ska du lagra hur många gånger varje siffra skrivits in.
Index 0 är antal gånger 0 skrivits in, index 1 för siffran 1 osv.

Gör sedan en loop som läser in siffrorna från tangentbordet. Vid varje inläsning ökar du rätt plats i din array. Detta kan du göra riktigt smidigt, säg att du sparat inläsning i variabeln i:
arr[i]++;
Se till att din loop avslutas om talet var negativt (denna koll måste alltså göras innan du ökar värdena i din array, annars finns risk för fel). Detta kan bli lite knep och knåp om man är helt grön, men det går att lösa på ett snyggt sätt.

Slutligen behöver du en variabel som ökas för varje inläsning så att du håller reda på totala antalet tal, alternativt summera ihop allt i din array.

Och det var väl det hela, det borde inte bli mer än tio rader kod, max. Säg till om du vill ha färdig kod.




bazquz 22:57 - 12:a September 2007 | Post #3
Medlem
Inlägg: 3


Skicka PM
Ja, jag har förstått det att skapa en tabell. Tabellen ska dock kunna ta in oändligt med tal så som jag förstod det. Sen så ska det loopa så som du säger. Vill du så får du gärna skriva koden tack.

MVH
David Berglund




FunkyChicken 20:15 - 13:e September 2007 | Post #4
Nyhetsredaktör
Inlägg: 800


Skicka PM
Har inte möjlighet att testa, men nåt i den här stilen borde funka:
(Det blev lite längre än jag tänkt mig tom.)

  1. int[] tal = new int[10];
  2. int in, antal = 0;
  3. Scanner s = new Scanner (System.in);
  4.  
  5. System.out.println("Skriv in dina siffror, avsluta med ett negativt tal:");
  6.  
  7. in = scan.nextInt();
  8. while (i >= 0){
  9. antal++;
  10. tal[i]++;
  11. in = scan.nextInt();
  12. }
  13.  
  14. for (int i = 0; i < 10; i++)
  15. if (tal[i] == 1)
  16. System.out.println(i + " skrevs in " + tal[i] + " gång");
  17. else
  18. System.out.println(i + " skrevs in " + tal[i] + " gånger");
  19. System.out.println("Totalt är det " + antal + " tal i utksriften.");



EDIT: Upps, nu visar den faktiskt hur många gånger talen skrevs in också...



Senast redigerad 20:22 - 14:e September 2007


Dread 20:50 - 13:e September 2007 | Post #5
Medlem
Inlägg: 135


Skicka PM
om det ska vara okänd längd på inmatningen så är det bättre med en vector, bara ta addelement varje gång, i princip samma kod.

man gör en while (continue) -sats som kollar varje gång om talet man skrivit in är negativt, isf läggs talet inte in i vectorn och continue blir falsk. På liknande sett skulle jag iaf implementera det, om det behövs kan jag försöka lägga upp kod i morgon förmiddag.

-------------------------
c++



ozamosi 20:56 - 13:e September 2007 | Post #6
Administratör
Inlägg: 1129


Skicka PM
Fast det är ett fast antal värden man får välja bland, så man vill inte ha en vektorSmiley

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



Dread 21:07 - 13:e September 2007 | Post #7
Medlem
Inlägg: 135


Skicka PM
    Citat av ozamosi:
Fast det är ett fast antal värden man får välja bland, så man vill inte ha en vektorSmiley


    Citat av bazquz:
Ja, jag har förstått det att skapa en tabell. Tabellen ska dock kunna ta in oändligt med tal så som jag förstod det. Sen så ska det loopa så som du säger. Vill du så får du gärna skriva koden tack.

MVH
David Berglund


Smiley

-------------------------
c++



bazquz 21:24 - 13:e September 2007 | Post #8
Medlem
Inlägg: 3


Skicka PM
Hehe, tack för alla svar. Fick reda på nu att vi INTE skulle ha oändligt med talSmiley

Så FunkyChicken''s kod funkade utmärkt!
Tack ska ni ha för er snabba hjälp!




FunkyChicken 23:45 - 13:e September 2007 | Post #9
Nyhetsredaktör
Inlägg: 800


Skicka PM
Den funkar utmärkt även med oändligt många tal, vilket även Dread skulle inse om han brydde sig om att sätta sig in i uppgiften. Poängen är att vi INTE ska spara talen som matas in, bara hur många gånger varje siffra förekommer, och det finns som bekant bara tio siffror (i det decimala systemet alltså, tyst med er!).




Dread 09:51 - 14:e September 2007 | Post #10
Medlem
Inlägg: 135


Skicka PM
det är snat, misstolkade din kod lite igår ser jag, uppfattade det som <10 inte >0 ser jag nu. Din kod blir genast mkt mer effektiv än iaf min grundide skulle varit. Så ber om ursäkt för mitt misstag.

-------------------------
c++



Sidor: 1

Forum huvudsida -> Programmering -> Ny på java-programmering
Atom feed

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