Hilfe beim Array filtern.


hallo zusammen.

ich habe ein problem bei einem array, es werden aus einem array mit 5 stelligen zahlen eine zahl geholt und mit einer anderen 5 stelligen zahl hoch gerechnet, z. b.    66667 konstante zahl  10100 die zahl mit der gerechnet wird. es wird auf jeder stelle der rechnenden zahl lange 2 drauf gerechnet bis zu der stelle der konstanten zahl mind. eine differenz von 2 bleibt. z.b.
66667
10100
10102
10104
10120
10122
10124
10140
10142
10144
10300
10302
u.s.w.  aus den berechneten zahlen entsteht ein neues array, da wenn die erste konstante zahl ausgeschöpft ist, wird die 2. zahl aus einem array geholt und weiter gerechnet z.b. die zahl 10110 und weiter. wenn das neue array erstellt ist, befinden sich darunter 5 stellige zahlen die irgend einer stelle 3 gleiche zahlen nebeneinander haben z.b.  43334 oder 44333  diese zahlen möchte ich aus dem array entfernen. kann mir einer erklären wie ich das bewerkstelligen kann , mit if abfragen oder so. ich weis nicht wie ich die if abfrage aufbauen muss , da die 3 gleichen zahlen ja nicht immer der gleichen stelle stehen und auch nicht immer den gleichen wert aufweisen, es können ja auch 3 x die 4 oder 3x die 5 sein.  je nachdem welche konstante zahl ich habe. die höchste summe der konstanten zahlen ist 88888.

versuchs mal damit:

code: [select]
long testarray[] = { 9, 99, 991, 2122, 21122, 22323, 33333l, 12345, 1122334455, 111333444, -99999, 0 };

bool dreigleiche(long value) {
  char buf[12];
  byte count = 0;
  byte lastc = 0;
  ltoa(value, buf, 10);
  byte len = strlen(buf);
  if (len < 3) {
    return false;
  }
  (byte idx = 0; idx < len; idx++) {
    if (lastc == buf[idx]) {
      if (++count > 2) {
        return true;
      }
    } else {
      lastc = buf[idx];
      count = 1;
    }
  }
  return false;
}

void setup() {
  serial.begin(115200);
  serial.println("drei gleiche ziffern");
  (byte idx = 0; testarray[idx] != 0l; idx++) {
    if (dreigleiche(testarray[idx])) {
    serial.print("3 ziffern gleich: ");
      serial.println(testarray[idx]);
    }
  }
}
void loop() {}
code: [select]
drei gleiche ziffern
3 ziffern gleich: 33333
3 ziffern gleich: 111333444
3 ziffern gleich: -99999


Arduino Forum > International > Deutsch (Moderator: uwefed) > Hilfe beim Array filtern.


arduino

Comments