Programm Arrayverarbeitung

Dieses Thema im Forum "Programmierung" wurde erstellt von C64, 19. Oktober 2012.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. C64
    Online

    C64

    Moin,

    gesucht ist eine Lösung für folgende Aufgabe:

    Geladene Arrays

    ente{...}

    bits{
    [...]
    1010101010110,
    0101110101010,
    0101110111101,
    [...]
    }

    Zerlegung auf das einzelne Bit erfolgte, dann:

    schleife beginn 1 ende 13
    IST WERT==1 dann var = "ente[int]" sonst var=""
    schleifenende

    diese schleife wird für eine bitreihe durchlaufen, anschließend soll ein string generiert werden, der so aussehen soll:

    var2 = "var1, var2, var3, ..., var13"

    mir fiel bisher keine komfortable (und vor allem anpassbare) variante ein.

    Grüße, Patrick
     
    #1
  2. Crafter6432
    Offline

    Crafter6432

    Registriert seit:
    22. Dezember 2011
    Beiträge:
    686
    Code (Text):
    1.  
    2.          int wert=0;
    3.           String var = "";
    4.          byte[] werte = ....;
    5.      for (int i = 0; i < 13; i++) {
    6.         if(wert==1){
    7.                  var = werte[i];
    8.                }    
    9.     }
    10.  
     
    #2
  3. Benni1000
    Offline

    Benni1000 Ehem. Teammitglied

    Registriert seit:
    4. Mai 2012
    Beiträge:
    1.408
    In welcher Sprache?
     
    #3
  4. C64
    Online

    C64

    das ist nicht das problem, aber hinzu kommt der returnwert, in dem in einer variable alle variablen zusammengefasst werden (varhaupt = var1, var2, var3 usw)

    sprache ist primär egal, mir gehts um den schematischen aufbau
     
    #4
  5. Crafter6432
    Offline

    Crafter6432

    Registriert seit:
    22. Dezember 2011
    Beiträge:
    686
    Mir is noch nicht klar, was genau du willst. Kannst du dein Problem vllt. in einem Satz kurz fassen.
     
    #5
  6. C64
    Online

    C64

    In einem Satz ist das m.M.n. nicht möglich, aber ich versuchs mal in Stichpunkten:

    Ein Array besteht aus mehreren Bitsätzen (zum Bleistift 8bits)
    --> 10011001
    Jeder Satz wird auf das einzelne Bit dann aufgedröselt
    --> 1
    --> 0
    --> 0
    --> 1
    --> 1
    --> 0
    --> 0
    --> 1
    Jedes Bit wird in einer Schleife abgearbeitet
    --> if arrayteilvariable == 1 dann "on" else "off"

    soweit ist alles kein problem, der haken ist bei zusammenführung der returnvariabel
    --> returnvariable = (var1+var2+var3+var4....)
     
    #6
  7. Zahl
    Offline

    Zahl

    Registriert seit:
    10. Juli 2011
    Beiträge:
    214
    Die Erklärung ist noch immer wirr, ich hab bis jetzt jedes mal was anderes verstanden. Mal scheint es ne Arraytransformation zu sein, mal eine Funktion die nen String als Rückgabewert hat...? Könntest du evtl mal ein Beispiel mit mehr oder weniger echten Daten geben (2 oder 3 Sätze) und Schritt für Schritt zeigen was rauskommen soll? Mit Bits und Enten kann ich nämlich grad nicht viel anfangen.
     
    #7
  8. Calenria
    Offline

    Calenria

    Registriert seit:
    28. Juli 2012
    Beiträge:
    387
    Minecraft:
    Calenria
    Nur um zu sehen ob ich das Problem richtig verstanden habe:

    Code (Text):
    1.  
    2.     public static void main(String[] args) {
    3.         for (String[] bits : bit2string()) {
    4.             System.out.println(join(Arrays.asList(bits), ","));
    5.         }
    6.     }
    7.  
    8.  
    9.     public static ArrayList<String[]> bit2string() {
    10.  
    11.  
    12.         String[] ente = { "aus", "an" };
    13.         String[] bitArray = { "1010101010110", "0101110101010", "0101110111101" };
    14.         ArrayList<String[]> vars = new ArrayList<String[]>();
    15.  
    16.  
    17.         for (String bits : bitArray) {
    18.             String[] output = new String[13];
    19.             for (int i = 0; i < bits.length(); i++) {
    20.                 int bit = Integer.valueOf(bits.substring(i, i + 1));
    21.  
    22.  
    23.                 output[i] = ente[bit];
    24.             }
    25.             vars.add(output);
    26.         }
    27.  
    28.  
    29.         return vars;
    30.     }
    31.  
    32.  
    33.     static String join(Collection<?> s, String delimiter) {
    34.         StringBuilder builder = new StringBuilder();
    35.         Iterator<?> iter = s.iterator();
    36.         while (iter.hasNext()) {
    37.             builder.append(iter.next());
    38.             if (!iter.hasNext()) {
    39.                 break;
    40.             }
    41.             builder.append(delimiter);
    42.         }
    43.         return builder.toString();
    44.     }
    45.  
    Die Ausgabe wäre dann:
    Code (Text):
    1.  
    2. an,aus,an,aus,an,aus,an,aus,an,aus,an,an,aus
    3. aus,an,aus,an,an,an,aus,an,aus,an,aus,an,aus
    4. aus,an,aus,an,an,an,aus,an,an,an,an,aus,an
    5.  
    aber ehrlich gesagt habe ich sein Problem noch nicht verstanden, denke ich ;)
     
    #8
  9. C64
    Online

    C64

    Lösung


    Das war in etwa das was ich suchte.
    Erst durch das Konstrukt habe ich herausgefunden wie ich das "vereinfache" bzw. sich verbessern lässt.
    Klingt wirr, aber es hat mir schonmal sehr viel weitergeholfen:star:
     
    #9
Status des Themas:
Es sind keine weiteren Antworten möglich.