Hallo.
Begleitend zu unserem Programmierungs-Lehrfach gibt es mehrere Übungen, welche in den Übungsveranstaltungen oder auch privat absolviert werden können.
Hier nun einmal die Aufgabe und meine Lösung:
/*
* Aufgabe 1: Würfel
*
* Erstellen Sie ein Programm zur Berechnung von Eigenschaften eines Würfels,
* das bei gegebener (d.h. in Ihrem Fall einzugebender) Kantenlänge a
* - den Flächenumfang (=6a*a),
* - das Volumen (=a*a*a) und
* - die Länge der Raumdiagonale (=a*sqrt(3))
* berechnet und ausgibt.
*/
#include <stdio.h>
#include <math.h>
#include <string.h>
#include "../input1.h" // für input1F, gibt float-Wert zurück
int main() {
int i = 0, s = 0;
float a = 0;
char f[1024];
typedef struct {
char *type;
int value;
} calc;
a = input1F("Kantenlänge des Würfels: ");
calc c[3]; // Array mit drei Elementen des Typs »calc«
c[0].type = "Flächenumfang";
c[0].value = 6 * a * a;
c[1].type = "Volumen";
c[1].value = a * a * a;
c[2].type = "Länge der Raumdiagonale";
c[2].value = a * sqrt(3);
int clength = sizeof(c) / sizeof(calc);
for (i = 0; i < clength; ++i) {
if (strlen(c[i].type) > s) {
s = strlen(c[i].type); // Maximale Auffüllungsbreite ermitteln
}
}
sprintf(f, "%%%ds: %%d\n", s); // Formatstring vorbereiten, z. B. »%24s: %d\n«
printf("\n");
for (i = 0; i < clength; ++i) {
printf(f, c[i].type, c[i].value);
}
}
Einmal abgesehen davon, dass sicher einiges zu verbessern ist, gibt mir die Ausgabe Rätsel auf:
$ ./aufg1
Kantenlänge des Würfels: 4Flächenumfang: 96
Volumen: 64
Länge der Raumdiagonale: 6
Hat jemand eine nachvollziehbare Erklärung für das zusätzliche Leerzeichen in der Zeile „Volumen“?
Einen schönen Sonntag noch.
Gruß, Mathias
--
sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
debian/rules
sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
debian/rules