Code Verstehen

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
napsi
Beiträge: 1
Registriert: Di Jan 31, 2017 12:59 pm

Code Verstehen

Beitrag von napsi » Di Jan 31, 2017 1:05 pm

Hallo liebe Gemeinschaft!

Ich habe eine etwas eigene Bitte:
Ich habe einen Code vor mir. Dieser ist Teil eines Rätsels. Da ich mit C nicht vertraut bin, ersuche ich um eine kurze Übersetzung, was in diesem Code passiert. Eingegeben muss eine Matrix werden. Mein Problem ist, ich weiß nicht, wie ich das tun soll

Die matrix besteht aus 15 Spalten und 24 Reihen.

Kann mir hier jemand helfen, dass ein Anti Programmierer das auch versteht?

Eine Frage hätte ich noch: was versteht der Programmierer unter: "universale Codetabelle "?

Code: Alles auswählen

typedef unsigned short int usint;

void calculate(const usint* mat, const usint rows, const usint cols,
               usint* result, const usint len) {
  usint i, j, offset, index = 0;

  for (i = 0; i < rows; i++) {
    for (j = 0; j < cols; j++) {
      if (index < len) {
        offset = i * cols + j;
        switch (j % 3) {
          case 0:
            result[index] = mat[offset] * 10 + mat[offset + 1] / 10;
            index++;
            break;
          case 1:
            result[index] = (mat[offset] % 10) * 100 + mat[offset + 1];
            index++;
            break;
          default:
            // do nothing
            break;
        } // end switch
      } // end if
    } // end for
  } // end for
}

int main(void) {
  // ...
  calculate(&mat[0][0], ROWS, COLS, &result[0], LEN);
  // ...
  return EXIT_SUCCESS;
}

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Code Verstehen

Beitrag von Xin » Do Feb 02, 2017 11:04 am

napsi hat geschrieben:Hallo liebe Gemeinschaft!

Ich habe eine etwas eigene Bitte:
Ich habe einen Code vor mir. Dieser ist Teil eines Rätsels. Da ich mit C nicht vertraut bin, ersuche ich um eine kurze Übersetzung, was in diesem Code passiert.
Das Forum dient eigentlich dazu, Leuten zu helfen, Programmieren zu lernen... ^^
napsi hat geschrieben:Eingegeben muss eine Matrix werden. Mein Problem ist, ich weiß nicht, wie ich das tun soll
Naja, wenn Du mit C nicht vertraut bist, könnte das lustig werden.
Die Matrix ist eine lange Zahlenreihe, in der die einzelnen Zeilen direkt hintereinander liegen.
Das "offset" mit der ein Element rausgesucht wird siehst Du berechnet in der zeile "offset = i * cols +j".
napsi hat geschrieben:Kann mir hier jemand helfen, dass ein Anti Programmierer das auch versteht?
Die Matrix ist erkennbar, weil die For-Schleifen das Format beschreiben und Du sagst, es sei eine Matrix.
Was result ist, weiß ich nicht.
Es könnte ein Array von 2D Vektoren sein oder ein Array von "rows" 10D Vectoren oder weil es die genau zwei Fälle gibt könnten es auch rows * 5 2D Vektoren sein. In letzten Fall wäre die Berechnungsvorschrift für die Abszisse bei case 0 beschrieben und die Ordinate bei case 1. Das ganze wird dann - wie die Matrix - hintereinander weggeschrieben.
napsi hat geschrieben:Eine Frage hätte ich noch: was versteht der Programmierer unter: "universale Codetabelle "?
Ich behaupte mal "Nix".

Das heißt aber nicht, dass ich nach 30 Jahren Programmiererfahrung alles weiß, aber ich würde mal grob schätzen, dass der Begriff falsch gewählt ist. Vielleicht meint er die ASCII-Tabelle?
Ohne Kontext ist das aber auch nur Raterei.
Keine Ahnung - die Frage musst Du dem Menschen stellen, der den Begriff verwendet hat.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten