Java/Python/C++ hjálp...

Skjámynd

Höfundur
KermitTheFrog
Kóngur
Póstar: 4270
Skráði sig: Mán 07. Júl 2008 23:32
Staða: Ótengdur

Java/Python/C++ hjálp...

Póstur af KermitTheFrog »

Kóði: Velja allt

import java.util.Scanner;
public class hitastig1 {
  public static void main(String[] args){
    System.out.println("Þetta forrit breytir gráðum úr Farenheit yfir í Celsius");
    Scanner lesa = new Scanner(System.in);
    System.out.println("Sláðu inn Farenheit gráður: ");
    int farenheit;
    farenheit = lesa.nextInt();
    int celsius;
    celsius = (5/9)*(farenheit-32);
    System.out.println(+farenheit+"°F eru "+celsius+"°C");
  }
}


Ég fæ alltaf núll út. Hvað er ég að gera vitlaust?
Last edited by KermitTheFrog on Mán 19. Mar 2012 21:13, edited 2 times in total.
Skjámynd

hagur
Vaktari
Póstar: 2917
Skráði sig: Mið 17. Des 2003 16:11
Hafðu samband:
Staða: Ótengdur

Re: Java hjálp...

Póstur af hagur »

Þú ert að nota heiltölubreytur (int). Þú verður að nota double í staðinn fyrir int.

Prufaðu þetta:

Kóði: Velja allt

import java.util.Scanner;
public class hitastig1 {
  public static void main(String[] args){
    System.out.println("Þetta forrit breytir gráðum úr Farenheit yfir í Celsius");
    Scanner lesa = new Scanner(System.in);
    System.out.println("Sláðu inn Farenheit gráður: ");
    double farenheit;
    farenheit = lesa.nextDouble();
    double celsius;
    celsius = (5/9)*(farenheit-32);
    System.out.println("Það eru: " + celsius);
  }
}
Skjámynd

Höfundur
KermitTheFrog
Kóngur
Póstar: 4270
Skráði sig: Mán 07. Júl 2008 23:32
Staða: Ótengdur

Re: Java hjálp...

Póstur af KermitTheFrog »

Ég var nú búinn að reyna double líka. Það kemur samt núll út.
Skjámynd

hagur
Vaktari
Póstar: 2917
Skráði sig: Mið 17. Des 2003 16:11
Hafðu samband:
Staða: Ótengdur

Re: Java hjálp...

Póstur af hagur »

Ok, smá fljótfæri í mér ... þú ert ennþá með integer á tveim stöðum í kóðanum, þ.e þar sem þú ert að deila 5 með 9. Þetta túlkar java sem integer og útkoman úr því verður 0, en ætti að vera 0,5555

Þú gerir í staðinn 5.0/9.0 sem þýðir að þú ætlar ekki að gera heiltöludeilingu, heldur nota double.

Kóði: Velja allt

import java.util.Scanner;
public class hitastig1 {
  public static void main(String[] args){
    System.out.println("Þetta forrit breytir gráðum úr Farenheit yfir í Celsius");
    Scanner lesa = new Scanner(System.in);
    System.out.println("Sláðu inn Farenheit gráður: ");
    double farenheit;
    farenheit = lesa.nextDouble();
    double celsius;
    celsius = (5.0/9.0)*(farenheit-32);
    System.out.println("Það eru: " + celsius);
  }
}
Skjámynd

Höfundur
KermitTheFrog
Kóngur
Póstar: 4270
Skráði sig: Mán 07. Júl 2008 23:32
Staða: Ótengdur

Re: Java hjálp...

Póstur af KermitTheFrog »

Sweeet, það gekk. En er ekki leið til að birta bara 2 aukastafi eða álíka? það kemur alltaf einhver romsa sem lúkkar ekkert vel.
Skjámynd

hagur
Vaktari
Póstar: 2917
Skráði sig: Mið 17. Des 2003 16:11
Hafðu samband:
Staða: Ótengdur

Re: Java hjálp...

Póstur af hagur »

Jú, það er örugglega lítið mál.

Ég er reyndar ekki mikill java-maður og kann þetta ekki utanað í java, en ég myndi googla t.d "Java number formatting" eða álíka.
Skjámynd

Blues-
Vélbúnaðarníðingur
Póstar: 353
Skráði sig: Þri 09. Maí 2006 01:16
Staðsetning: /usr/local
Staða: Ótengdur

Re: Java hjálp...

Póstur af Blues- »

KermitTheFrog skrifaði:Sweeet, það gekk. En er ekki leið til að birta bara 2 aukastafi eða álíka? það kemur alltaf einhver romsa sem lúkkar ekkert vel.


Notaðu java.text.DecimalFormat

Fyrir tveggja talna precision ..=> new DecimalFormat("0.##").format((double)celcius);

dæmi ..

Kóði: Velja allt

NumberFormat formatter = new DecimalFormat("#0.00");
System.out.println("Hitinn er: "+formatter.format(celcius));
Skjámynd

Höfundur
KermitTheFrog
Kóngur
Póstar: 4270
Skráði sig: Mán 07. Júl 2008 23:32
Staða: Ótengdur

Re: Java hjálp...

Póstur af KermitTheFrog »

Jæja, takk fyrir það. En ef ég ætla að láta slá inn nafn?

nvm, fattaði þetta...
Skjámynd

Höfundur
KermitTheFrog
Kóngur
Póstar: 4270
Skráði sig: Mán 07. Júl 2008 23:32
Staða: Ótengdur

Re: Java hjálp...

Póstur af KermitTheFrog »

Smá meiri hjálp?

Kóði: Velja allt

import java.util.Scanner;
public class talnabil2 {
  public static void main(String[] args){
    System.out.println("Þetta er forrit sem skrifar allar tölur milli tveggja talna");
    Scanner lesa = new Scanner(System.in);
    System.out.println("Fyrri talan: ");
    int fyrri = lesa.nextInt();
    System.out.println("Seinni talan: ");
    int seinni = lesa.nextInt();
   
    do{
      if (fyrri < seinni)
        System.out.println(fyrri+1);
      fyrri++;
    } while (fyrri < seinni);
   
    if (fyrri > seinni)
      System.out.println("Fyrri talan á að vera lægri en sú síðari");     
  }
}


Fyrirmælin eru að búa til forrit sem biður um 2 tölur, sú fyrri minni en sú síðari. Forritið á síðan að birta allar tölur sem eru á milli þeirra. Ef fyrri er stærri en seinni þá á að koma villumelding og ef það eru engar tölur á milli þeirra á það einnig að gefa villumeldingu.

Ég er búinn með allt nema síðasta skilyrðið og get enganveginn framkvæmt það. Help please?
Skjámynd

hagur
Vaktari
Póstar: 2917
Skráði sig: Mið 17. Des 2003 16:11
Hafðu samband:
Staða: Ótengdur

Re: Java hjálp...

Póstur af hagur »

Ef það eru engar tölur á milli þeirra .... þýðir það þá ekki bara að fyrri talan er sú sama og seinni?

Kóði: Velja allt

import java.util.Scanner;
public class talnabil2 {
  public static void main(String[] args){
    System.out.println("Þetta er forrit sem skrifar allar tölur milli tveggja talna");
    Scanner lesa = new Scanner(System.in);
    System.out.println("Fyrri talan: ");
    int fyrri = lesa.nextInt();
    System.out.println("Seinni talan: ");
    int seinni = lesa.nextInt();
   
    if (fyrri > seinni)
    {
        System.out.println("Fyrri talan á að vera lægri en sú síðari");
    }
    else if (fyrri == seinni)
    {
        System.out.println("Engar tölur á milli talnanna!");
    }
    else
    {
          do{
               if (fyrri < seinni)
                   System.out.println(fyrri+1);
               fyrri++;
           } while (fyrri < seinni);
    }

  }
}
Skjámynd

Höfundur
KermitTheFrog
Kóngur
Póstar: 4270
Skráði sig: Mán 07. Júl 2008 23:32
Staða: Ótengdur

Re: Java hjálp...

Póstur af KermitTheFrog »

Jú, en það gildir líka ef fyrri er t.d. 13 og seinni 14

EDIT: held ég hafi leyst þetta:

Kóði: Velja allt

// Skilaverkefni 14
// Daníel Grétarsson
// 5. feb. 2010
import java.util.Scanner;
public class talnabil2 {
  public static void main(String[] args){
    System.out.println("Þetta er forrit sem skrifar allar tölur milli tveggja talna");
    Scanner lesa = new Scanner(System.in);
    System.out.println("Fyrri talan: ");
    int fyrri = lesa.nextInt();
    System.out.println("Seinni talan: ");
    int seinni = lesa.nextInt();
   
    if (fyrri >= seinni)
      System.out.println("Fyrri talan á að vera lægri en sú síðari");
    else if (fyrri == seinni-1)
      System.out.println("Engar tölur á milli talnanna");
   
    else {
      do{
        if (fyrri < seinni)
          System.out.println(fyrri+1);
        fyrri++;
      } while (fyrri < seinni);
    }
   
  }
}


En forritið birtir samt síðustu töluna líka. Það birti líka fyrstu töluna í byrjun en ég tæklaði það með því að henda fyrri+1 inn en hvernig get ég losað mig við síðustu töluna?
Dæmi um virkni:

Kóði: Velja allt

Welcome to DrJava.  Working directory is N:\gogn\Töl 103\Skilaverkefni\Skilaverkefni 14
> java talnabil2
Þetta er forrit sem skrifar allar tölur milli tveggja talna
Fyrri talan:
 9
Seinni talan:
 18
10
11
12
13
14
15
16
17
18
>
Skjámynd

Höfundur
KermitTheFrog
Kóngur
Póstar: 4270
Skráði sig: Mán 07. Júl 2008 23:32
Staða: Ótengdur

Re: Java hjálp...

Póstur af KermitTheFrog »

Weehee, náði að laga þetta :D. Nú er ég búinn í skólanum klukkan tvö.
Skjámynd

Daz
Besserwisser
Póstar: 3697
Skráði sig: Sun 20. Okt 2002 09:35
Staðsetning: Somewhere something went horribly wrong
Staða: Ótengdur

Re: Java hjálp...

Póstur af Daz »

Kóði: Velja allt

-snipsnap-
 
      do{
        if (fyrri < seinni)
          System.out.println(fyrri+1);
        fyrri++;
      } while (fyrri < seinni);
   
???

Kóði: Velja allt

fyrri++; // í lagi hér því þú hefur nú þegar staðfest að mismunur talnanna er minnst 2
while(fyrri < seinni){
   System.out.println(fyrri++);
}


Óþarfa 2 samanburðir þarna hjá þér (bæði while(fyrri < seinni ) og (if (fyrri < seinni)) Svo skrifarðu út fyrri+1 sem skemmir alveg samanburðinn :)

Slick
Nýliði
Póstar: 9
Skráði sig: Fös 29. Jan 2010 14:00
Staða: Ótengdur

Re: Java hjálp...

Póstur af Slick »

Mér datt í hug að henda inn hérna recursive lausn þar sem enginn stakk upp á henni :)
En þetta er reynda í python ekkert mál að færa það yfir á java.

Kóði: Velja allt

def recursive_Call(first, last, Begin = True):
    if Begin and first >= last:
        print "Error first equal or bigger than last!"
    if (first + 1) < last:
        print first + 1 #To order number by ASC
        recursive_Call(first + 1,last,False)
        #print first + 1 #To order number by DESC
recursive_Call(0,10)
Skjámynd

Höfundur
KermitTheFrog
Kóngur
Póstar: 4270
Skráði sig: Mán 07. Júl 2008 23:32
Staða: Ótengdur

Re: Java hjálp...

Póstur af KermitTheFrog »

Jæja, nú er ég í tómu tjóni. Við eigum að búa til spilið 21 og ég er alveg strand. Fyrirmælin eru eftirfarandi:

Búið til forrit sem líkja á eftir því að við séum að spila 21 í tölvunni. Leikurinn fer þannig fram að tölvan byrjar á að láta leikmann spila. Tölvan gefur þá spil frá 1 fyrir ás upp í 13 fyrir kóng. Síðan spyr tölvan hvort leikmaður vilji fá annað spil. Tölvan leggur saman gildin á spilunum sem leikmaður hefur fengið og ef heildarsumman er stærri en 21 hefur leikmaður tapað spilinu en tölvan unnið. Ef leikmaður stoppar án þess að hafa sprungið gefur tölvan sjálfri sér spil. Tölvan notar þær reglur að hún stoppar ef heildarstigafjöldi er 16 eða meira en heldur annars áfram.
Eftirfarandi reglur eru notaðar til að ákveða hver vinnur spilið:
Ef sigafjöldi leikmanns er hærri en 21 þá hefur hann sprungið og tapað spilinu. Þá þarf tölvan ekki að gefa sjálfri sér spil. Ef leikmaður springur ekki en tölvan springur (þ.e. fær meira en 21) hefur leikmaðurinn unnið. Ef hvorki leikmaður né tölva springa, þá vinnur sá sem hefur fleiri stig. Ef tölva og leikmaður hafa jafn mörg stig þá vinnur tölvan. Gera má ráð fyrir að hvert spil gildi frá einum upp í 13.
Dæmi um hvernig leikur getur spilast :
(Það sem tölva skrifar er í þessum fonti, en það sem notandi slær inn í þessum)
Nú hefst leikurinn:
þú fékkst 9 og ert kominn með samtals 9, viltu fleiri spil? já
þú fékkst 7 og ert kominn með samtals 16, viltu fleiri spil? já
þú fékkst 6 og ert kominn með samtals 22, viltu fleiri spil? nei
Þú sprakkst, tölvan vann.
Heildarfjöldi spila: 1
Tölva hefur unnið 1 spil
Þú hefur unnið 0 spil
Viltu spila annað spil? já
þú fékkst 8 og ert kominn með samtals 8, viltu fleiri spil? já
þú fékkst 2 og ert kominn með samtals 10, viltu fleiri spil? já
þú fékkst 8 og ert kominn með samtals 18, viltu fleiri spil? nei
tölvan fékk 3
tölvan fékk 4
tölvan fékk 10
tölvan fékk samtals 17
þú vannst leikinn
Heildarfjöldi spila: 2
Tölva hefur unnið 1 spil
Þú hefur unnið 1 spil
Viltu spila annað spil? nei


Ég er alls ekki að biðja um heilan kóða til að copy paste-a, ég að biðja um leiðbeiningar um hvernig ég get gert þetta.

Svo verðið þið að afsaka ef þetta er svo vitlaust gert að það mætti skjóta mig. Mig vantar bara hjálp með þetta.
Last edited by KermitTheFrog on Þri 09. Feb 2010 23:21, edited 1 time in total.
Skjámynd

Höfundur
KermitTheFrog
Kóngur
Póstar: 4270
Skráði sig: Mán 07. Júl 2008 23:32
Staða: Ótengdur

Re: Java hjálp...

Póstur af KermitTheFrog »

PLEASE HELP!!

Ég er einhverju nær, en þetta virkar samt ekki eins og skyldi

*hér var kóði*

tölvan stoppar ekki í 16 og hún fer líka yfir 21 stundum :/ hvernig preventa ég það?

EDIT: Mér sýnist ég hafa náð nokkuð góðum tökum á þessu:

Kóði: Velja allt



import java.util.Scanner;
public class spil21{
  public static void main(String[] args){
    Scanner lesa = new Scanner(System.in);
    int svar;
    int summa = 0;
    int aftur;
   
    do{
      System.out.println("Nú hefst leikurinn");
      do {
        svar = 'N';
        int spil = (int) (Math.random()*13)+1;
        summa = summa + spil;
        System.out.println("Þú fékkst "+spil+" og samtals ertu með "+summa);
        if (summa < 21){
          System.out.println("Viltu annað spil? (0 fyrir já, 1 fyrir nei)");
          svar = lesa.nextInt();}
      } while (svar == 0);
     
      if (summa > 21)
        System.out.println("Talan er hærri en 21, þú hefur tapað");
     
      int summa2 = 0;
      if (svar == 1){
        do{
          int tölva = (int) (Math.random()*13)+1;
          summa2 = summa2 + tölva;
        } while (summa2 <= 16);
      }
      if (summa < 21)
        System.out.println("Tölvan fékk: "+summa2);
     
      if (summa2 > summa && summa2 < 22)
        System.out.println("Því miður, tölvan vann");
     
      else if (summa < 21)
        System.out.println("Til hamingju! Þú vannst");
     
      System.out.println("Viltu spila aftur? (0 fyrir já, 1 fyrir nei)");
      aftur = lesa.nextInt();
    } while (aftur == 0);
    if (aftur == 1)
      System.out.println("Bless");
  }
}


Ég er samt í veseni með það að þegar ég er búinn með 1 spil og spila annað þá bætist ofaná töluna sem ég endaði með í síðasta spili. S.s. ef ég endaði með 19 í fyrsta spilinu, spila aftur og fæ t.d. 6 í fyrstu umferð í öðru spilinu þá skrifast út að ég sé með 25 stig, en ekki bara 6. How to fix?
Skjámynd

Höfundur
KermitTheFrog
Kóngur
Póstar: 4270
Skráði sig: Mán 07. Júl 2008 23:32
Staða: Ótengdur

Re: Java hjálp...

Póstur af KermitTheFrog »

Jæja, þá virðist þetta vera komið eiginlega bara hjá mér:

Kóði: Velja allt

// Skilaverkefni 16
// Daníel Grétarsson
// 10. feb. 2010
import java.util.Scanner;
public class hundabrund{
  public static void main(String[] args){
    Scanner lesa = new Scanner(System.in);
    int svar;
    int summa = 0;
    int aftur;
    int tölvavann = 0;
    int leikmadurvann = 0;
   
    System.out.println("Nú hefst leikurinn");
    do{
      do {
        svar = 'N';
        int spil = (int) (Math.random()*13)+1;
        summa = summa + spil;
        System.out.println("Þú fékkst "+spil+" og samtals ertu með "+summa);
        if (summa < 21){
          System.out.println("Viltu annað spil? (0 fyrir já, 1 fyrir nei)");
          svar = lesa.nextInt();}
      } while (svar == 0);
     
      if (summa > 21)
        System.out.println("Talan er hærri en 21, þú hefur tapað");
     
      int summa2 = 0;
      if (svar == 1){
        do{
          int tölva = (int) (Math.random()*13)+1;
          summa2 = summa2 + tölva;
        } while (summa2 <= 16);
      }
      if (summa < 21)
        System.out.println("Tölvan fékk: "+summa2);
     
      if (summa == 21)
        System.out.println("Þú fékkst 21! Til hamingju, þú vannst!");
     
      if (summa2 >= summa && summa2 < 22 || summa > 21)
        System.out.println("Því miður, tölvan vann");
     
      else if (summa < summa2 && summa < 21 || summa2 > 21)
        System.out.println("Til hamingju! Þú vannst");
     
      System.out.println("Viltu spila aftur? (0 fyrir já, 1 fyrir nei)");
      aftur = lesa.nextInt();
     
      if (aftur == 0)
        summa = 0;
     
      if (summa2 >= summa && summa2 < 22 || summa > 21)
        tölvavann = tölvavann + 1;
     
      if (summa > summa2 && summa < 21 || summa2 > 21 || summa == 21)
        leikmadurvann = leikmadurvann + 1;
     
      System.out.println("Tölvan hefur unnið "+tölvavann+" leiki");
      System.out.println("Þú hefur unnið "+leikmadurvann+" leiki");
      System.out.println("-----------------");
    } while (aftur == 0);
   
    if (aftur == 1)
      System.out.println("Bless");
   
  }
}
Skjámynd

Daz
Besserwisser
Póstar: 3697
Skráði sig: Sun 20. Okt 2002 09:35
Staðsetning: Somewhere something went horribly wrong
Staða: Ótengdur

Re: Java hjálp...

Póstur af Daz »

Það má alveg hafa þetta pínu meira Object oriented :)

Kóði: Velja allt

public class Spil {
   private int cardVal;
   //private String suiteName;
   //private String cardName;
   
   public Spil(){
      cardVal = (int) ((Math.random()*13)+1);
   }
   
   public int getCardVal() {
      return cardVal;
   }
   
   public String toString(){      
      return Integer.toString(cardVal);
      //return suiteName+cardName;
   }
}


Ef þetta er freistandi getur þú dundað þér við að útfæra nafn og lit á spilinu líka.

Svo væri líka hægt að búa til heilann stokk til að tryggja að það komi örugglega ekki of mörg spil af neinu tagi.
Skjámynd

Höfundur
KermitTheFrog
Kóngur
Póstar: 4270
Skráði sig: Mán 07. Júl 2008 23:32
Staða: Ótengdur

Re: Java hjálp...

Póstur af KermitTheFrog »

Jáb, en þar sem þetta er Töl 103 og við erum bara búin að læra takmarkað á þetta þá held ég að þetta dugi fínt.
Skjámynd

GullMoli
Stjórnandi
Póstar: 2309
Skráði sig: Lau 20. Maí 2006 22:05
Staðsetning: NGC 3314.
Staða: Ótengdur

Re: Java hjálp...

Póstur af GullMoli »

KermitTheFrog ertu í Versló? Ég er nefnilega að gera nákvæmlega sama verkefnið.
|| Ryzen 5600x || Asus ROG B550i || 32GB DDR4 3600 || GTX 1070 || CM 750W SFX || Lian Li TU-150 ||

"It's a magical world, Hobbes, Ol' Buddy... let's go exploring!"
Skjámynd

Höfundur
KermitTheFrog
Kóngur
Póstar: 4270
Skráði sig: Mán 07. Júl 2008 23:32
Staða: Ótengdur

Re: Java hjálp...

Póstur af KermitTheFrog »

Nei, er í FG bara.
Skjámynd

Höfundur
KermitTheFrog
Kóngur
Póstar: 4270
Skráði sig: Mán 07. Júl 2008 23:32
Staða: Ótengdur

Re: Java hjálp...

Póstur af KermitTheFrog »

Getur einhver í stuttu máli útskýrt fyrir mér hvernig maður getur látið notandann svara í bókstöfum?

Í staðinn fyrir að svara með 0 og 1:

Kóði: Velja allt

do {
        svar = 'N';
        int spil = (int) (Math.random()*13)+1;
        summa = summa + spil;
        System.out.println("Þú fékkst "+spil+" og samtals ertu með "+summa);
        if (summa < 21){
          System.out.println("Viltu annað spil? (0 fyrir já, 1 fyrir nei)");
          svar = lesa.nextInt();}
      } while (svar == 0);


Þá svarar notandinn með J og N ??? Er þetta eitthvað últra flókið?

Phanto
has spoken...
Póstar: 167
Skráði sig: Lau 07. Feb 2004 00:19
Staða: Ótengdur

Re: Java hjálp...

Póstur af Phanto »

While(svar == 'j') ;?
og hafa svar skilgreint sem char ekki int.

eða While(Character.ToUpperCase(svar) == 'J');
Skjámynd

Höfundur
KermitTheFrog
Kóngur
Póstar: 4270
Skráði sig: Mán 07. Júl 2008 23:32
Staða: Ótengdur

Re: Java hjálp...

Póstur af KermitTheFrog »

Ég nefnilega reyndi það:

Kóði: Velja allt



import java.util.Scanner;
public class melur{
  public static void main(String[] args){
    Scanner lesa = new Scanner(System.in);
    System.out.println("Ertu melur?");
    char svar;
    svar = lesa.nextChar();
   
    if (svar == 'j')
      System.out.println("Flott mál");
    else
      System.out.println("Þá bendi ég þér á Melabúðina");
  }
}


Það compileast ekki. Ég fæ:

1 error found:
File: C:\Users\Ding\Documents\=Documents\Java\Bull\melur.java [line: 10]
Error: C:\Users\Ding\Documents\=Documents\Java\Bull\melur.java:10: cannot find symbol
symbol : method nextChar()
location: class java.util.Scanner

Phanto
has spoken...
Póstar: 167
Skráði sig: Lau 07. Feb 2004 00:19
Staða: Ótengdur

Re: Java hjálp...

Póstur af Phanto »

Það er engin nextChar() aðferð

Kóði: Velja allt

    import java.util.Scanner;
    public class melur{
      public static void main(String[] args){
        Scanner lesa = new Scanner(System.in);
        char svar;
        string tmp;
        System.out.println("Ertu melur?");
        tmp = lesa.next();
        svar = tmp.charAt(0);
       
        if (svar == 'j')
          System.out.println("Flott mál");
        else
          System.out.println("Þá bendi ég þér á Melabúðina");
      }
    }
Svara