divisio mit parameter

avii

Grünschnabel
Hallo ich bin neu hier und in der welt von c.
ich hab eine aufgabe bekommen in der ich eine funktion schreiben muss, die eine divison durch führt und mittels parameter diese an das hauptprogramm übergibt.

mein bisheriger code:

Code:
#include<stdio.h>



                int division(int dividend, int divisor, int *anteil, int *rest)
                        {
                        int *fehlercode;
                        printf("\nBitte geben Sie den Dividenden ein: ");
                        scanf("%d", &dividend);
                        printf("\nBitte geben Sie den Divisor ein: ");
                        scanf("%d", &divisor);

                        if( divisor != 0 && divisor != 0)
                                {
                                *anteil = dividend / divisor;
                                *rest = dividend % divisor;
                                *fehlercode = 0;
                                }
                        if(divisor == 0)
                                {
                                *fehlercode = 1;
                                }
                        if(dividend == 0 && divisor == 0)
                                {
                                *fehlercode = 2;
                                }
                        }
 int main()
                        {
                        if(*fehlercode == 0)
                                {
                                printf("\n Das Ergebniss lautet %d.%d", divisio(*anteil, *rest));
                                }
                        if(*fehlercode == 1)
                                {
                                printf("\nEs kann nicht duch 0 dividiert werden");
                                }
                        if(*fehlercode == 2)
                                {
                                printf("\nDas Ergebniss lautet 0");
                                }
                        return 0;
                        }
beim compelieren werden folgende fehler ausgespuckt:

"Division.c", line 30.29: 1506-045 (S) Undeclared identifier fehlercode.
"Division.c", line 32.82: 1506-045 (S) Undeclared identifier anteil.
"Division.c", line 32.91: 1506-045 (S) Undeclared identifier rest.


was hab ich falsch gemacht?
 
Zuletzt bearbeitet:
Moin,

zu erst einmal: bitte nutze die Code-Tags, damit der Code leserlich wird !

Dann Deine main-Methode :
C++:
int main()
{
    if(*fehlercode == 0)
    {
        printf("\n Das Ergebniss lautet %d.%d", divisio(*anteil, *rest));
    }
    if(*fehlercode == 1)
    {
        printf("\nEs kann nicht duch 0 dividiert werden");
    }
    if(*fehlercode == 2)
    {
        printf("\nDas Ergebniss lautet 0");
    }
    return 0;
}
Erstens mal ist "fehlercode" hier gar nicht bekannt und zweitens rufst Du die Methode "division" ja nie auf. Sie gibt auch keinen Wert zurück !!

Gruß
Klaus
 
Zuletzt bearbeitet von einem Moderator:
Habe mal versucht, Deinen Code zu korrigieren - ist aber VHIDT (!)(!) :p

C++:
#include<stdio.h>

int division( int *anteil, int *rest )
{
    int dividend = 0;
    int divisor = 0;
    int fehlercode = -1;
    printf("\nBitte geben Sie den Dividenden ein: ");
    scanf("%d", &dividend);
    printf("\nBitte geben Sie den Divisor ein: ");
    scanf("%d", &divisor);

    if( divisor != 0 && divisor != 0)
    {
        *anteil = dividend / divisor;
        *rest = dividend % divisor;
        fehlercode = 0;
    }
    
    if(divisor == 0)
    {
        fehlercode = 1;
    }

    if(dividend == 0 && divisor == 0)
    {
        fehlercode = 2;
    }
    
    return fehlercode;
}



int main()
{
    int anteil = 0;
    int rest = 0; 
    int iFehlercode = division(&anteil,&rest) )
     
    if( iFehlercode == 0)
    {
        printf("\n Das Ergebniss lautet %d.%d", &anteil, &rest));
    }
    else if(iFehlercode == 1)
    {
        printf("\nEs kann nicht duch 0 dividiert werden");
    }
    else if(iFehlercode == 2)
    {
        printf("\nDas Ergebniss lautet 0");
    }
    return 0;
}

Gruß
Klaus
 
Zuletzt bearbeitet von einem Moderator:
hey danke für deine antwort ich werde es gleich versuchen umzusetzen.
wie kann ich denn hier den code tagsbenutzen?
was bedeutet vhidt?
 
Moin,

was bedeutet vhidt?
Von Hirn In Die Tastatur :D

wie kann ich denn hier den code tagsbenutzen?
ah, sorry ...
über den '#'-Button im Editor!
Der generiert den Eintrag [_CODE_][_/CODE_] (OHNE die Unterstriche)!
In diesen Tags kannst Du auch CODE durch JAVA, CPP, PHP usw. ersetzen!
Und man kann sie natürlich auch direkt hinschreiben (also ohne Button!)

gruß
Klaus
 
also ich dachte, dass ich durch den pointer *fehlercode in int division diesen auch in der main ansprechen kann.
das problem ist es soll die fuktion int division(int ..., int..., int...,int...) geschrieben werden welche dann durch eine parameterliste die int werte bekommen.
und es soll dann per rückgabe wert über fehlercode laufen.
 
das problem ist es soll die fuktion int division(int ..., int..., int...,int...) geschrieben werden welche dann durch eine parameterliste die int werte bekommen und es soll dann per rückgabe wert über fehlercode laufen
Ah, ok - das muss einem ja gesagt werden ..... :suspekt:

also ich dachte, dass ich durch den pointer *fehlercode in int division diesen auch in der main ansprechen kann.
Nein nein, so herum nicht :eek:

Wenn Du Dein Programm startest, dann rufst Du damit als erstes die main-Methode auf.
Diese wiederum ruft dann die Methode division auf!
Also kannst Du, so wie ich es gemacht habe, der fehlercode ganz normal in der main-Methode deklarieren und dorthin den Rückgabewert von division schreiben!

Natürlich kann man beim Aufruf von division auch alle Parameter übergeben, so wie Du es gemacht hast, aber dann musst Du sie auch vorher in main deklarieren !
Daraus folgt, dass Dividend und Divisor VOR dem Aufruf eingelesen werden müssen, um übergeben werden zu können.
Mit anderen beiden Zeigern gibst Du diese Werte quasi an main zurück, um dort ggf. auch anzeigen zu können

Gruß
Klaus
PS: und halte Dich bitte an die hier herrschende Netiquette - speziell Punkt 15 (Groß-/Kleinschreibung)! Danke.
 
hier ein weiterer Versuch (auch ungetestet) :
C++:
 #include<stdio.h>
 
int division( int dividend, int divisor, int *anteil, int *rest )
{
    int fehlercode = -1;

    if( divisor != 0 && divisor != 0)  // doppelt (!)
    {
        *anteil = dividend / divisor;
        *rest = dividend % divisor;
        fehlercode = 0;
    }
    
    if( divisor == 0 )
    {
        fehlercode = 1;
    }
 
    if( dividend == 0 && divisor == 0 ) // NEIN, (divisor==0) darf auch hier nicht
                                        // sein! sollte wohl (divisor!=0) heißen 
    {
        fehlercode = 2;
    }
    
    return fehlercode;
}
 
 
 
int main()
{
    int dividend = 0;
    int divisor = 0;
    int anteil = 0;
    int rest = 0; 

    printf("\nBitte geben Sie den Dividenden ein: ");
    scanf("%d", &dividend);
    printf("\nBitte geben Sie den Divisor ein: ");
    scanf("%d", &divisor);

    int iFehlercode = division(dividend,divisor,&anteil,&rest) )
     
    if( iFehlercode == 0)
    {
        printf("\n Das Ergebniss lautet %d.%d", anteil, rest));
    }
    else if(iFehlercode == 1)
    {
        printf("\nEs kann nicht duch 0 dividiert werden");
    }
    else if(iFehlercode == 2)
    {
        printf("\nDas Ergebniss lautet 0");
    }
    return 0;
}

Gruß
Klaus
 
Zuletzt bearbeitet von einem Moderator:
Danke vorab für deine Hilfe. Ich werde mich bemühen die Groß und Kleinschreibung zubeachten. Ist einfach eine schlecht Angewohnheit :-).
Also ich hab den Code jetzt abgeändert.
Code:
#include<stdio.h>



                int division(dividend, divisor, anteil, rest)
                        {
                        int *erg1;
                        int *erg2;
                        int fehlercode;
                        if(dividend != 0 && divisor != 0)
                                {
                                anteil = dividend / divisor;
                                rest = dividend % divisor;
                                erg1 = &anteil;
                                erg2 = &rest;
                                fehlercode = 0;
                                }
                        if(divisor == 0)
                                {
                                fehlercode = 1;
                                }
                        if(dividend == 0 && divisor == 0)
                                {
                                fehlercode = 2;
                                }
                        return fehlercode;
                        }
int main()
                        {
                        int *erg1;
                        int *erg2;
                        int zahl1;
                        int zahl2;
                        int *dividend;
                        int *divisor;
                        int anteil;
                        int rest;
                        int fehlercode = division(dividend, divisor, anteil, rest);

                        printf("\nBitte geben Sie den Dividenden ein: ");
                        scanf("%d", &zahl1);
                        printf("\nBitte geben Sie den Divisor ein: ");
                        scanf("%d", &zahl2);
                        dividend = &zahl1;
                        divisor = &zahl2;

                        if(fehlercode == 0)
                                {
                                printf("\nDas Ergebniss lautet %d.%d", erg1, erg2);
                                }
                        if(fehlercode == 1)
                                {
                                printf("\nEs kann nicht duch 0 dividiert werden.");
                                }
                        if(fehlercode == 2)
                                {
                                printf("\nDas Ergebniss ist 0.");
                                }
                        return 0;

Nun ist folgendes Problem. Das es bei der Rechnung hackt. Nach der Eingabe gibt er egal was eingeben wurde
Das Ergebniss lautet 0.-559038737 aus.
Nun was hab ich falsch gemacht?
 
Zuletzt bearbeitet:
Moin,

hmm - dies hier
int division(dividend, divisor, anteil, rest)
läßt sich so compilieren :confused:
Wirklich erstaunlich ...... :rolleyes:

Nach der Eingabe gibt er egal was eingeben wurde
Das Ergebniss lautet 0.-559038737

Äääh - bitte was ? :suspekt:
Der erste Satz ist völlig unklar ....

Und das Ergebnis ist "0.-irgendwas" :confused: :suspekt:
Das solltest Du mal verifizieren ............

Gruß
Klaus
 
Zurück