Mit dem letzten bis zum ersten Wert aus Array rechnen

Dieses Thema Mit dem letzten bis zum ersten Wert aus Array rechnen im Forum "Allgemeine Java-Themen" wurde erstellt von Anfänger90, 27. Nov. 2016.

Thema: Mit dem letzten bis zum ersten Wert aus Array rechnen Hallo, ich habe folgendes Problem. Und zwar soll ich die Werte im Array mit absteigender Potenz ausrechnen lassen...

  1. Hallo,
    ich habe folgendes Problem. Und zwar soll ich die Werte im Array mit absteigender Potenz ausrechnen lassen und die einzelnen Werte ausgeben. Heißt bei einem Array wie {8,6,9} soll die 9^2 die 6^1 und die 8^0 gerechnet werden. Zudem kann das Array eine unabänige Größe haben und somit weiß ich nicht welche die erste Hochzahl ist. Dies soll zur Umrechnung von Zahlensystemen dienen. Die Befüllung des Array habe ich hinbekommen. Muss ich die Werte des Arrays umdrehen oder gibt es eine andere Möglichkeit? Und wie kann ich die einzelnen Werte dann zwischenspeichern, da ich die Rechnung mit ausgeben muss?
     
  2. Vielleicht helfen dir diese Java-Grundlagen weiter --> *Klick*
  3. Du könntest z.B. eine for Schleife verwenden und die Zählervariable in jedem Durchlauf um eins verringern.
     
  4. Ok das wäre so in etwa oder ?
    for (int k=array.length; k=0; k--) {
    }

    Nur wie bekomme ich die Rechnung hin das er mit der höchsten Potenz und der letzten Zahl anfängt. Geht das irgendwie über array.length - 1 ?
     
  5. Potenz ist in dem Fall doch einfach der Index

    Warum rechnest du nicht einfach von vorne nach hinten?
     
  6. Deine Bedingung der for-Schleife, genauer gesagt k = 0 würde ich noch mal überdenken :)
     
  7. Ja stimmt das müsste auch gehen. Dann müsste ich die erste Zahl im Array hoch 0 nehmen bis zur Array länge.
    Allerdings komm ich nicht darauf wie ich die Werte des Arrays gerechnet bekommen mit den aufsteigenden oder absteigen Potzenten.

    @Robat: muss k==0 sein
     
  8. Überleg mal, die for-Schleife wird solange ausgeführt wie die Bedingung erfüllt ist. Wenn du k==0 setzt, dann wird die for-schleife solange ausgeführt, wie k den Wert 0 hat. Wenn du k am Anfang auf die Länge des Arrays setzt dann wird sie also gar nicht ausgeführt.
    Was du willst ist, dass die Schleife solange ausgeführt wird wie k größer oder gleich 0 ist :)
     
  9. Die Potenz ist gleich der Index, also werte[i]^i. Die Funktion zum Potenzen berechnen ist Math.pow[/i]
     
  10. Code (Java):
    double dezimal;
      double dezimal1 = 0;
      double summe = 0;
      int a=0;
      for(int k=Dezimalarray.length; k>=0; k--)

      {
      double b = Math.pow(15, a);
      dezimal =  Dezimalarray[a] * b;
      dezimal1 = dezimal1 + dezimal;
      System.out.println(""+Dezimalarray[a]+" mal 15 hoch "+a+" ist "+dezimal);
      System.out.println("Summe "+dezimal1+" ist der Wert im Dezimalsystem");
      a++;
      }
    Habe dies jetzt Programmiert. Das Array ist vorgeben. Allerdings rechnet er jetzt genau falsch rum heißt er holt die letzte Zahl mal der letzten Indexzahl. Ist wahrscheinlich nur ein kleiner Fehler aber ich hänge fest.
     
    Zuletzt von einem Moderator bearbeitet: 28. Nov. 2016
  11. Jetzt hast du zwei Zählervariablen. a und k. a zählt vorwärts und k rückwärts. In welche Richtung willst du die Indexzahlen durchlaufen?
     
  12. Die letzte Zahl im Array soll mit der ersten Indexzahl multipliziert werden. Habe wenn ich das Array umdrehe funktioniert es. Sitzte schon den ganzen Tag hier dran deswegen erkenn ich den Fehler wahrscheinlich auch nicht.
     
  13. Versuch mal das hier:
    Code (Java):
    double dezimal;
    double dezimal1 = 0;
    int a=0;
    for(int k=Dezimalarray.length-1; k>=0; k--)
    {
    double b = Math.pow(15, k);
    dezimal = Dezimalarray[a] * b;
    dezimal1 = dezimal1 + dezimal;
    System.out.println(""+Dezimalarray[a]+" mal 15 hoch "+k+" ist "+dezimal);
    System.out.println("Summe "+dezimal1+" ist der Wert im Dezimalsystem");
    a++;
    }
     
  14. Ich würde dir eig. nicht empfehlen das Array von hinten zu durchlaufen weil dann die Ausgabe auch von hinten anfängt und das lt. Aufgabenstellung ja nicht sein soll.
    Einfacher wäre das hier:

    Code (Java):

    /*
    * Array mit den Zahlen
    */

    int[] numArray = {9, 7, 6, 8};

    // Durchlaufe das Array von vorne
    for(int i = 0; i < numArray.length; i++)
    {
        // ermittle den Exponenten. Dieser Ergibt sich aus der Länge des Arrays - 1 (da der größte Index ja die Länge -1 ist weil man bei 0 anfängt)
        // Das erste Element soll den höchsten Exp haben und das letzte Element den kleinsten Exp.
        // Wenn man von diesem Wert i abzieht hat man seinen Exponenten (siehe Tabelle weiter unten)
        int exp = (numArray.length-1)-i;
        double erg = Math.pow(numArray[i], exp);
        System.out.println(numArray[i] + "^" + exp + " = " + erg);
    }
     
    Tabelle:
    durchlauf numArrayLength-1 i exp

    0 3 0 3-0=3
    1 3 1 3-1=2
    2 3 2 3-2=1
    3 3 3 3-3=0

    PS: Das ist nicht genau auf dein Problem abgestimmt. Aber die Berechnung solltest du ja alleine hinkriegen :)
    oder du machst es nach @DrZoidbergs Variante :p
     
  15. Perfekt. Danke!
    @Robat Das ist egal. Ich brauche nur die richtige Dezimalzahl und die einzelnen Rechenschritte. Denn ich muss jetzt die Dezimalzahl in ein anderes Zahlensystem überführen.
    Kann sein das ich eure Hilfe noch brauchen werde. :) Trotzdem danke
     
  16. Bräuchte nochmal kurz eure Hilfe. Und zwar muss ich die Dezimalzahl die ich gespeichert habe nun umrechnen ins 9er. Das habe ich mit folgendem Code gelöst.

    do {
    zahl1 = dezimal1%9;
    zahl = (dezimal1-zahl1)/9;
    myPage.println("Die Zahl "+dezimal1+" / 9 = "+zahl+" Rest: "+zahl1+"<br>");
    dezimal1 = zahl;
    } while (zahl > 0);

    Das funktioniert auch soweit. Gerne würde ich das Resultat jetzt noch ausgeben. Heißt mit println die modoli (mehrzahl?) in umgekehrter Reihenfolge ausgeben. Ich dachte dazu ein Array zu initialisieren und diesen mit den Werten füllen und später das Array umgedreht auszugeben.
    Gibt es eine Möglichkeit ein Array zu erstellen ohne die Größe vorher zu Wissen? Habe was zu Arraylist gelesen allerdings funktionierte das nicht wirklich.
     
    Zuletzt bearbeitet: 28. Nov. 2016
  17. Hab es gelöst habe es in einen String eingelesen
     
    Robat gefällt das.
  18. KOSTENLOSES Java-Grundlagen Training im Wert von 39 € Sichere dir hier den kostenlosen Zugriff auf umfangreiches Java-Know How und starte richtig durch!