当前位置:天才代写 > CS代写 > 代写计算机科学 Informatik代写

代写计算机科学 Informatik代写

2022-10-14 11:38 星期五 所属: CS代写 浏览:70

Informatik 2

代写计算机科学 Hinweise zu Compilation und Stil (Punktabzug vermeiden) Im Forum (https://forum-db.informatik.uni-tuebingen.de/c0-stil) haben wir ein paar

Hinweise zu Compilation und Stil (Punktabzug vermeiden)   代写计算机科学

Im Forum (https://forum-db.informatik.uni-tuebingen.de/c0-stil) haben wir ein paar Hinweise und Festlegungen für die Erstellung eures C0-Codes in den wöchentlichen Übungen hinterlassen. In Kurzform:

Fehlende Kommentare (Kurzbeschreibungen) zu Funktionen werden bei der Bewertung zu Punktabzug führen. Keine Funktion ist kurz/unbedeutend genug, dass sie keine Kurzbeschreibung benötigt.

C0-Code, der von den Tutorinnen und Tutoren nicht compiliert werden kann, wird ohne weitere Korrektur mit 0 Punkten bewertet.

Verwendet zur Compilation immer die Option -w: cc0 -d -w -x -o <prog> <prog>.c0

Räumt euren Code auf und entfernt alle Warnungen, die euch Option -w anzeigt, bevor ihr euren Code als Lösung einreicht. Das Tutoren-Team wird euch für stilistische Warnungen Punkte abziehen.

Bearbeitungshinweis: Pre- und Postconditions müssen zur Lösung dieses Übungsblatts nur dann zwingend verwendet werden, wenn dieses explizit in der Aufgabenstellung gefordert wird.

 

Aufgabe 1: Arrays und mehr. . . [10 Punkte] (Abgabe: arrays.c0)   代写计算机科学

Implementiere folgende Funktionen, welche auf C0-Arrays operieren:

1.Die Funktion int[] reverse(int[] xs, int len) bekommt ein Array xs und dessen Länge len als Parameter übergeben und erzeugt ein Array gleicher Länge, in dem die Reihenfolge der Elemente umgekehrt wurde. Im Folgenden seien xs das Array [1,2,3,4,5] und xs2 das Array [42,81,11,3].

printintarray ( reverse (xs , 5) , 5) ; // -> [5 ,4 ,3 ,2 ,1]

printintarray ( reverse (xs2 , 4) , 4) ; // -> [3 ,11 ,81 ,42]

2.Schreibe eine Funktion int maximum(int[] xs, int len) und eine Funktion int minimum(int[] xs, int len) die jeweils das maximale bzw. minimale Element eines Arrays berechnet. Ist xs leer, so wird bei maximum der kleinste in C0 darstellbare und bei minimum der größte in C0 darstellbare int-Wert zurückgegeben.

3.Die Funktion int[] histogram(int[] xs, int len) nimmt ein Array xs entgegen und berechnet eine Häufifigkeitsverteilung der darin enthaltenen Werte in Form eines neuen int-Arrays. Beachte dabei, dass das Histogramm so groß wie nötig und so klein wie möglich ist. Die jeweiligen Grenzen werden vom maximalen und minimalen Element in xs bestimmt. Das bedeutet, dass die Verteilung für den minimalen Wert an Index 0 des resultierenden Arrays steht. Im Folgenden sei xs das Array [-5,-3,-5,1,1,2,1] und xs2 das Array [2,3,3,4,4,4].

printintarray ( histogram (xs , 7) , 8) ; // -> [2 ,0 ,1 ,0 ,0 ,0 ,3 ,1]

printintarray ( histogram (xs2 , 6) , 3) ; // -> [1 ,2 ,3]

 

Aufgabe 2: Bitarithmetik [16 Punkte] (Abgabe: bits.c0)   代写计算机科学

Sowohl die Bitrepräsentation von int-Werten als auch die Arithmetik auf dieser Repräsentation kennt ihr bereits. Lasst uns das hier einmal praktisch nachvollziehen und einige Funktionen auf Bit-Arrays vom Typ bool[] der Länge 32 implementieren. Dabei soll das Vorzeichenbit b31 im Bit-Array an Index 0 gespeichert werden.

Benutze in allen folgenden Funktionen Pre- und Postconditions, um geforderte und erwartete Eigenschaften der Argumente und Resultate (bspw. Array-Größen oder die unten explizit genannten Bedingungen) zu überprüfen.

 

 

Aufgabe 3: Bildbearbeitung: Konvertierung von RGB zu Graustufen [14 Punkte] (Abgabe: grayscale.c0)

Die C0-Bibliothek img ermöglicht die Manipulation der Pixel-Daten von unkomprimierten PNG-Bildern. 32 Bits codieren die Transparenz (α), Rot-, Grün- und Blau-Anteile der Farbe jedes Pixels. In dieser Aufgabe soll ein Programm implementiert werden, welches Farbbilder zu Graustufenbildern konvertieren kann.

 

代写计算机科学
代写计算机科学

 

1.Schreibe eine Funktion int gray(int pixel), um aus den RGB-Farbwerten eines farbigen Pixels einen grauen Pixel zu berechnen. In einem grauen Pixel sind die drei RGB-Farbanteile identisch und haben den Wert gray = (red + green + blue) / 3. Der Tranzparenzwert α bleibt unverändert. Verwende Postconditions, um diese beiden Eigenschaften zu überprüfen.

Hinweis: Verwende Bit-Masken und Bit-Shift-Operatoren, um die einzelnen Farb- und Transparenzwerte eines Pixels zu extrahieren bzw. einen neuen Pixel zu konstruieren.

2. Implementiere nun die Funktion image_t grayscale(image_t in), die ein neues Bild erzeugt, in welchem alle Pixel der Eingabe zu grauen Pixeln konvertiert wurden.

– Erstelle ein neues Bild image_t out mit gleicher Breite width und Höhe height wie die Eingabe. Nutze Postconditions, um diese Eigenschaft zu überprüfen.

– Verwende die Bibliotheksfunktion int[] image_data(image_t image), um auf die Pixeldaten des Eingabebildes und des Ausgabebildes zugreifen zu können.

– Iteriere über alle Pixel der Eingabe und wende die zuvor implementierte Funktion int gray(int pixel) an, um den zu Graustufen konvertierten Pixel zu erhalten. Schreibe diesen Wert an der selben Stelle in das Ausgabebild out.

3.Implementiere in der main() Funktion folgende Schritte:

– Verwende die Funktion image_t image_load(string path) um eine PNG-Bilddatei zu öffnen.

– Konvertiere das geladene Bild mittels der zuvor implementierten Funktion image_t grayscale(image_t in) zu einem Graustufenbild.

– Speichere das Ergebnis mittels void image_save(image_t image, string path) unter einem neuen  (beliebigen) Filenamen ab.

代写计算机科学
代写计算机科学

 

 

 

更多代写:racket代码代写  多邻国保分  英国Chemistry化学网课托管   Critical Review Essay代写范文  History代写范文  英文简历范文代写

合作平台:essay代写 论文代写 写手招聘 英国留学生代写

 

天才代写-代写联系方式