Compilerfehler



  • Hallo,

    und vielen Dank im Voraus für Eure Hilfe.
    Ich arbeite gerade an einer eigentlich recht simplen Aufgabenstellung.
    ->
    Entwerfen Sie ein CScript, dem zwei boolesche Variablen (Ein und Aus) übergeben werden!Abhängig vom Wert dieser beiden Variablen soll die Variable Rückgabewert(Format Long)entsprechend nachfolgender Tabelle beschrieben und dieser Wert zurückgegeben werden:

    Ein -- Aus -- Rückgabewert
    True -- False -- 1
    False-- True -- 0
    True -- True -- 5
    False-- False -- 5

    Ich habe bereits ein kleines Pogramm beschrieben (muss dazu sagen, dass ich Anfängerin bin):

    #include <stdio.h>
    
    long main ()
    {
    long Rueckgabewert;
    
    Rueckgabewert = Eingabe(1,1);
    //printf (Rueckgabewert);
    }
    long Eingabe (bool Ein,bool  Aus){
    
    bool Ein;
    bool Aus;
    long Rueckgabe;
    
    if (Ein == 1 && Aus == 0)
    {
        Rueckgabe = 1;
    }
        else
        {
        if (Ein == 0 && Aus == 1)
            {
                Rueckgabe = 0;
            }
                else
                {
                if ( Ein == 1 && Aus == 1)
                    {
                        Rueckgabe = 5;
                    }
                        else
                        {
                        if ( Ein ==0 && Aus == 0)
                            {
                                Rueckgabe = 5;
                            }
                        }
                }
        }
    return Rueckgabe;
     }
    

    Mal davon abgesehen, dass Printf nicht funktioniert (anscheinend, kann man sich nur char anzeigen lassen), traten auch Compilerfehler auf:

    Zeile 3: Warning: return type pf 'main' is not 'int'
    Zeile 7: warning: implicit declaration of function 'Eingabe'
    Zeile 10: error: expected ')' before 'Ein'

    So nun meine Fragen:

    1. Könnt ihr mir helfen, die Compilerfehler zu beheben? Suche seit gestern Abend und konnte selbst von 5 Fehler auf 1 und 2 Warnungen reduzieren^^
    2. entspricht das Programm überhaupt der Aufgabenstellung? für mich ist das logisch, aber ich möchte mich gern vergewissern...
    3. WIe kann ich den Rückgabewert anzeigen lassen?

    Viele, liebe Grüße und nochmals Danke!

    Valkynia



  • Bin zwar kein C-Experte - mache das nur hobbymäßig - aber printf kann sehrwohl auch integer usw ausgeben. Mal die Doku zu den Formatstrings bei printf anschauen.
    eingaabe ist eine funktion, aber nicht deklariert und main gibt immer einen int zurück oder void (sollte man nicht machen). Da fehlt es offensichtlich generell an den Grundlagen. Mal das GNU-C-Tutorial durcharbeiten (habe ich auch gemacht) und dann wird das. Link habe ich momentan leider nicht parat.



  • 1. die Signatur der main funktion aus der runtime sollte int main(int argc, char * argv[]) sein, oder kurz int main() warum long ???
    2. die definition der funktion eingabe ohne deklaration kommt bei dir nach der verwendung. d.h. bei dder verwendung von Eingabe in main ist Eingabe nicht bekannt.
    Lösung: entweder main hinter die Eingabe verschieben, oder Eingabe vor main deklarieren...
    3. Parameter der Funktion Eingabe muss/darf man nicht neu deklarieren. also das
    bool Ein;
    bool Aus;
    muss weg !

    #include <stdio.h>
    
    int Eingabe(int Ein, int  Aus); // Deklaration 
    
    int main()
    {
        int Rueckgabewert;
    
        Rueckgabewert = Eingabe(1, 1);
    
        printf("Rückgabewert ist %i", Rueckgabewert);
        return 0;
    }
    
    int Eingabe(int Ein, int  Aus) {
    
        int Rueckgabe;
    
        if (Ein == 1 && Aus == 0)
        {
            Rueckgabe = 1;
        }
        else
        {
            if (Ein == 0 && Aus == 1)
            {
                Rueckgabe = 0;
            }
            else
            {
                if (Ein == 1 && Aus == 1)
                {
                    Rueckgabe = 5;
                }
                else
                {
                    if (Ein == 0 && Aus == 0)
                    {
                        Rueckgabe = 5;
                    }
                }
            }
        }
        return Rueckgabe;
    }
    

    wenn es wirklich c sein soll

    Generell:

    Entwerfen Sie ein CScript

    Du bist hier im C Forum ...
    C ist aber keine Skriptsprache !
    Also wer bitte formuliert solche uneindeutigen Aufgaben !?

    Bei CScript muss ich immer an den Windows Scriptinterpreter denken, der kann JavaScript und so ... das hat aber mit C als Programmiersprache nichtts zu tun ^^
    Allerdings gibts auch ne C Shell (csh / tcsh) die C angelehnte Syntax verwendet. Das ist definitiv nen Interpreter und der arbeitet mit scripten 🙂

    Also um was gehts hier genau ?

    Ciao ..


  • Mod

    RHBaum schrieb:

    3. Parameter der Funktion Eingabe muss/darf man nicht neu deklarieren. also das
    bool Ein;
    bool Aus;
    muss weg !

    Was zwar richtig ist, aber der eigentliche Fehler kommt daher, weil C (genauer C89) keinen Typ 'bool' kennt.



  • oh sorry, hab nur mit nem neueren c++ compiler getestet ^^ danke
    stimmt bool kam erst mit c++

    Ciao ..



  • Danke für eure Hilfe.

    Für die Aufgabenstellung kann ich nichts, die wurde mir so gegeben.

    Ein und Aus wurden aber als Typ bool verlangt. Wie kann ich das denn dann trotzdem umsetzen?

    Ich werde Main hinter die Eingabefunktion schieben 🙂



  • Long Main habe ich geschrieben, weil der Rückgabewert vom Typ long sein soll.. Siehe Aufgabenstellung.



  • Ich habe jetzt die Bibliothek #include <stdbool.h> eingebunden und jetzt funktioneirt alles ohne Fehler. danke für eure hilfe 🙂



  • Valkynia schrieb:

    Long Main habe ich geschrieben, weil der Rückgabewert vom Typ long sein soll.. Siehe Aufgabenstellung.

    Aber doch nicht die main() 😕

    Deine Funktion soll long zurückgeben! edit: zwar schon erledigt, aber wegen Deinen mehrmaligen Ausrufen siehe Aufgabenstellung. Die kann für solche Fehler nichts.


  • Mod

    Die Aufgabenstellung ist halt ziemlich schlecht formuliert. Also wirklich grottenschlecht. Kann der Aufgabensteller überhaupt C? Ich hätte da gehörige Zweifel. Daher kommt es auch zu solch komischen Anforderungen, die sich gar nicht umsetzen lassen, wenn man sie wörtlich nimmt.

    Daher ist einiges an Reinterpretation nötig, wenn man die Aufgabe 'lösen' möchte. Es kann dann natürlich sein, dass man bei den Hausaufgaben trotzdem durchfällt, weil der Aufgabensteller etwas anderes im Sinn hatte, aber aufgrund der mangelnden fachlichen Qualifikation nicht in der Lage ist, zu erkennen, dass seine Aufgabenstellung Mist ist, oder dass die Neuinterpretation eine gute Lösung für die vermurkste Aufgabenstellung ist.

    Ich versuche mal etwas zu formulieren, das auf deinem Lernniveau lösbar ist und das der Aufgabenstellung halbwegs nahe kommt:
    Schreibe eine Funktion, die zwei Zahlenwerte (int) namens 'ein' und 'aus' entgegen nimmt, und abhängig vom Wert dieser Zahlen einen Wert (Typ long) anhand folgender Tabelle zurück gibt:
    Ein -- Aus -- Rückgabewert
    nicht 0 -- 0 -- 1
    0-- nicht 0 -- 0
    nicht 0 -- nicht 0 -- 5
    0 -- 0 -- 5

    Schreibe ein Hauptprogramm, welches vom Benutzer zwei Integerwerte einliest und das Ergebnis der obigen Funktion anzeigt.



  • Hey,

    Nein ich habe die Main bereits angepasst. Hab nochmal viel gegoogelt etc...

    Und ich glaube mein Informatik-Professor kann programmieren ^^

    Liebe Grüße

    Valkynia



  • Valkynia schrieb:

    Und ich glaube mein Informatik-Professor kann programmieren

    lol

    https://www.c-plusplus.net/forum/p2543053#2543053



  • also mein Prof hat gesagt, dass wir uns lieber an seine Doktoranden wenden sollen, wenn wir Fragen zur Programmierung haben, weil er da nicht mehr so drin ist.

    Und wer verwendet stdbool?


Log in to reply