Hiho @all,
Im Rahmen einer 5.Komponente (eine Art optionale Abschlussarbeit fürs Abitur) hab ich beschlossen einen Treiber für meinen Scanner zu programmieren. Bisher hab ich keine Ahnung wie realistisch es ist dies in einem Jahr zu schaffen, aber selbst wenn ich scheitere hab ich auf dem Weg eine Menge gelernt.
Der erste Schritt ist also sich mit C zu beschäftigen. Damit habe ich angefangen (Buch: C von A bis Z - openbook).
So nun zu meinem kleinen Programm:
Mein Mathelehrer erwähnte letztens, dass ihm ein Schüler ein Programm zur Berechnung aller ganzzahligen Vektorenbeträge in einem bestimmten Rahmen geschrieben hat. Da sich die aufgabe interessant anhörte habe ich mich mal rangesetzt und folgendes Programm geschieben...
Alles anzeigen
Zur Erklärung ein Vektor besteht aus 3 Komponenten (Höhe, Breite, Tiefe) und der Betrag (also die Länge) wird mit der Formel
Länge = wurzel_aus(a²+b²+c²)
berechnet.
--------------------------------------------------------------
So nun kommt auch mal ne Frage^^
Ich will, dass die Eingabe überprüft wird ob sie den maximalen integer Wert übersteigt oder kleiner Null ist und sollte das der Fall sein so soll die Eingabe Wiederholt werden.
Folgendes hatte ich probiert und feststellen müssen, dass es nicht funzt (was ich nach 10minütigen starren auf den Bildschirm erst begriffen habe)
zusätzlich war dann auch die Header-Datei limits.h eingebunden (für UINT_MAX)
vlt. kann mir ja einer erklären wie man solch eine Fehlerprüfung durchführt...
ps: Hoffe das Proggy ist nicht zu poplig um hier gepostet zu werden
ps2: Wenn ich den Arrayteil in meinem Tutorial durchhab werden auch noch ähnliche Ergebnisse aussortiert. z.B.:
1 - 2 - 2 = 9
2 - 1 - 2 = 9
2 - 2 - 1 = 9
ps3: Feedback zu meinem Projekt;) ist immer willkommen
greetz gunn1
Im Rahmen einer 5.Komponente (eine Art optionale Abschlussarbeit fürs Abitur) hab ich beschlossen einen Treiber für meinen Scanner zu programmieren. Bisher hab ich keine Ahnung wie realistisch es ist dies in einem Jahr zu schaffen, aber selbst wenn ich scheitere hab ich auf dem Weg eine Menge gelernt.
Der erste Schritt ist also sich mit C zu beschäftigen. Damit habe ich angefangen (Buch: C von A bis Z - openbook).
So nun zu meinem kleinen Programm:
Mein Mathelehrer erwähnte letztens, dass ihm ein Schüler ein Programm zur Berechnung aller ganzzahligen Vektorenbeträge in einem bestimmten Rahmen geschrieben hat. Da sich die aufgabe interessant anhörte habe ich mich mal rangesetzt und folgendes Programm geschieben...
Quellcode
- /************************
- Das Programm dient der Berechnung aller
- ganzzahligen Vektor-Beträge (Längen) bis:
- "durch den User bestimmt"
- by Christian Klopp
- ************************/
- #include <stdio.h>
- #include <math.h>
- #include <limits.h>
- double berechne(int a, int b, int c);
- void Berechnung_Ausgabe();
- unsigned int Eingabe();
- int main() {
- Berechnung_Ausgabe();
- return 0;
- }
- /***********************
- berechnet den Betrag eines Vektors
- und gibt das Ergebnis zurück
- ***********************/
- double berechne(int a, int b, int c){
- double ergebnis = a*a + b*b + c*c;
- ergebnis = sqrt(ergebnis);
- return ergebnis;
- }
- /***********************
- Erhöht nacheinander die Variablen a, b und c
- und überprüft das Ergebnis auf ganzzahligkeit, d.h.
- der durch modf() ermittelte Nachkommateil wird auf Gleichheit mit
- 0 überprüft. Wenn das Ergebnis ganzzahlig ist werden die Komponenten des Vektors
- zusammen mit dem Ergebnis ausgegeben.
- ***********************/
- void Berechnung_Ausgabe(){
- double fuerModf; //wird nur gebraucht um modf() einen Pointer zu stellen
- unsigned int a, b, c, max; //Komponenten des Verktors
- max = Eingabe();
- for (a = 1; a <= max; a++){
- if (modf(berechne(a, b, c),&fuerModf) == 0){
- printf("%u - %u - %u = %i\n", a,b,c,(int)berechne(a, b, c));
- }
- for (b = 1; b <= max; b++){
- if (modf(berechne(a, b, c),&fuerModf) == 0){
- printf("%u - %u - %u = %i\n", a,b,c,(int)berechne(a, b, c));
- }
- for (c = 1; c <= max; c++){
- if (modf(berechne(a, b, c),&fuerModf) == 0){
- printf("%u - %u - %u = %i\n", a,b,c,(int)berechne(a, b, c));
- }
- } //3. For-Schleife
- } //2. For-Schleife
- } //1. For-Schleife
- }
- unsigned int Eingabe(){
- unsigned int a;
- printf("Bitte den maximalen Wert eingeben: ");
- scanf("%u", &a);
- return a;
- }
Zur Erklärung ein Vektor besteht aus 3 Komponenten (Höhe, Breite, Tiefe) und der Betrag (also die Länge) wird mit der Formel
Länge = wurzel_aus(a²+b²+c²)
berechnet.
--------------------------------------------------------------
So nun kommt auch mal ne Frage^^
Ich will, dass die Eingabe überprüft wird ob sie den maximalen integer Wert übersteigt oder kleiner Null ist und sollte das der Fall sein so soll die Eingabe Wiederholt werden.
Folgendes hatte ich probiert und feststellen müssen, dass es nicht funzt (was ich nach 10minütigen starren auf den Bildschirm erst begriffen habe)
zusätzlich war dann auch die Header-Datei limits.h eingebunden (für UINT_MAX)
vlt. kann mir ja einer erklären wie man solch eine Fehlerprüfung durchführt...
ps: Hoffe das Proggy ist nicht zu poplig um hier gepostet zu werden
ps2: Wenn ich den Arrayteil in meinem Tutorial durchhab werden auch noch ähnliche Ergebnisse aussortiert. z.B.:
1 - 2 - 2 = 9
2 - 1 - 2 = 9
2 - 2 - 1 = 9
ps3: Feedback zu meinem Projekt;) ist immer willkommen
greetz gunn1
Sprachen: C (Anfänger) und Java (Fortgeschrittener)