Header Dateien ... wie nutzen ?
-
Schreibfehler.
Zeig deinen Code.
-
DirkB schrieb:
Schreibfehler.
Zeig deinen Code.
#include <stdio.h> #include "globals.h" #include "rational.h" rational load_rational ( int num , int den ) { rational buffer; buffer.numerator = num; buffer.denominator = den; } void print_rational ( rational rat ){ printf (" %d %d", rat.denominator, rat.numerator); } rational add_rational( rational rational1, rational rational2 ){ rational buffer; if ( rational1.denominator == rational2.denominator ){ buffer.denominator = rational1.denominator; buffer.numerator = rational1.numerator + rational2.numerator; } }
add_rational kann ignoriert werden , bringt ja nix wenn ich nicht die richtigen den und num Werte bekomme, bzw. diese getauscht werden
-
Dann schau dir noch mal genau Zeile 20 an.
-
Ohhhh nein nein, das habe ich geandert damit dann endlich das richtige Ergebniss steht. Wenn ich es richtig schreibe rat.num..... / rat.den..... , steht es umgekehrt dort.
Sorry fuer die Verwirrung, ich dachte ich aender es einfach und dann am Ende kommt das richtige raus, aber der "Grader" guckt sich nicht nur den Output an sondern auch den Code
-
Dann bitte den kürzesten vollständigen Code in dem der Fehler auftaucht.
In deinem Beispiel wird print_rational noch nicht mal aufgerufen.Den kürzesten und vollständigen Code in dem der Fehler auftaucht.
Kein "Ich habe gedacht das ist nicht wichtig" und kein "... kann ignoriert werden".
Wenn es nichts mit dem Fehler zu tun hat, schmeiß es raus. Und compilier es auch.
-
DirkB schrieb:
Dann bitte den kürzesten vollständigen Code in dem der Fehler auftaucht.
In deinem Beispiel wird print_rational noch nicht mal aufgerufen.Den kürzesten und vollständigen Code in dem der Fehler auftaucht.
Kein "Ich habe gedacht das ist nicht wichtig" und kein "... kann ignoriert werden".
Wenn es nichts mit dem Fehler zu tun hat, schmeiß es raus. Und compilier es auch.#include <stdio.h> #include "globals.h" #include "rational.h" #include "rational.c" int main( int argc, char *argv[] ) { rational rational1, rational2, rational3 ; int n, d ; printf( "Rational1: Please enter two integer values: " ) ; scanf("%d", &n) ; scanf("%d", &d ); rational1 = load_rational( n , d ) ; printf("\nThe rational number is " ); print_rational( rational1 ) ; printf("\n"); printf( "Rational2: Please enter two integer values: " ) ; scanf("%d", &n) ; scanf("%d", &d ) ; rational2 = load_rational( n, d ) ; printf("\nThe rational number is " ); print_rational( rational2 ) ; printf("\n"); }
#include <stdio.h> #include "globals.h" #include "rational.h" rational load_rational ( int num , int den ) { rational buffer; buffer.numerator = num; buffer.denominator = den; } void print_rational ( rational rat ){ printf (" %d %d", rat.numerator, rat.denominator); }
-
Gibt es auch ein
return buffer;
inload_rational()
-
Jap gab/gibt es. Aendert aber nichts an der Situation leider
Okay, gefixt. Weiss nicht woran es lag, aber jetzt funkt es
#include <stdio.h> #include "globals.h" #include "rational.h" rational load_rational ( int num , int den ) { rational buffer; buffer.numerator = num; buffer.denominator = den; return buffer; } void print_rational ( rational rat ){ printf (" %d %d", rat.numerator, rat.denominator); } rational add_rational( rational rational1, rational rational2 ){ rational buffer; if (rational1.denominator == rational2.denominator){ buffer.denominator = rational1.denominator; buffer.numerator = rational1.numerator + rational2.numerator; } else{ buffer.denominator = rational1.denominator * rational2.denominator; buffer.numerator = ( rational1.numerator * rational2.denominator ) + ( rational2.numerator * rational1.denominator); } return buffer; }
-
Arbeite an deinem Einrückungsstil
z.B.:rational add_rational( rational rational1, rational rational2 ) { rational buffer; if (rational1.denominator == rational2.denominator) { buffer.denominator = rational1.denominator; buffer.numerator = rational1.numerator + rational2.numerator; } else { buffer.denominator = rational1.denominator * rational2.denominator; buffer.numerator = ( rational1.numerator * rational2.denominator ) + ( rational2.numerator * rational1.denominator); } return buffer; }
da kann man viel besser den Programmfluß erkennen.
Das wird dior und auch deinem "Grader" helfen.
-
DirkB schrieb:
Arbeite an deinem Einrückungsstil
z.B.:rational add_rational( rational rational1, rational rational2 ) { rational buffer; if (rational1.denominator == rational2.denominator) { buffer.denominator = rational1.denominator; buffer.numerator = rational1.numerator + rational2.numerator; } else { buffer.denominator = rational1.denominator * rational2.denominator; buffer.numerator = ( rational1.numerator * rational2.denominator ) + ( rational2.numerator * rational1.denominator); } return buffer; }
da kann man viel besser den Programmfluß erkennen.
Das wird dior und auch deinem "Grader" helfen.Okay, vielen Dank
-
Ich habe meine letzte Funktion gereda geschrieben.
bool equal_rational( rational rational1, rational rational2 ) { bool buffer; if( rational1.numerator == rational2.numerator ) { if ( rational1.denominator * rational2.denominator){ buffer = 1; } } else buffer = 0; return buffer; }
aufgerufen wird sie durch main und zwar ...
if ( equal_rational( rational1, rational2 ) ) printf("\nThey are two equal rational numbers.\n"); else printf("\nThe are not equal.\n") ;
Leider gibt es mir aus das 5 / 5 und 5 / 5 ungleich sind und umgekehrt, was mache ich hire falsch ? Habe auch extra noch stdbol.h eingefuegt