Hilfe bei C-Programmierung Aufgabe



  • Standardmäßig bekommen die Aufzählungselemente intern Nummern von 0 an aufsteigend zugewiesen (es sind dann quasi Konstanten), man kann jedoch diese auch selber zuweisen:

    enum rollaeden { zu = 0,auf = 1}; // oder beliebig andere Werte
    

    So kannst du dann auch für bewohner die Zuordnung vornehmen (auch mit Zeichenliteralen!).
    Testen kannst du das dann mit

    // gibt die Werte als Zahlen aus
    printf("abwesend: %d\n", abwesend);
    printf("anwesend: %d\n", anwesend);
    
    // oder gibt die Werte als Zeichen aus
    printf("abwesend: %c\n", (char)abwesend);
    printf("anwesend: %c\n", (char)anwesend);
    


  • Also jetzt für 1b ich muss die Variablen akt_temperatur als Gleitkommazahl, akt_wetter als wetter, anwesenheit als bewohner sowie akt_zeit als zeit und die Variablen akt_rollladen als rollaeden und akt_heizung als Ganzzahl definieren.

    Eine Definition von Variablen ist z.B. wie int a. In Aufgabenstellung steht aber, muss akt_wetter als wetter definieren. Was versteht man überhaupt unter "akt_" Wie soll ich z.B. akt_wetter als wetter definieren
    Ich habe so gemacht:

    int main(void) {
    float akt_temperatur;
    char akt_wetter;
    int akt_anwesenheit;
    int akt_zeit;
    int akt_rollladen;
    int akt_heizung;


  • Mod

    muss akt_wetter als wetter definieren.

    char akt_wetter;

    Wo kommt dann char her?
    An dieser Stelle solltest du mal wiederholen, was ein enum überhaupt ist, und was man damit machen kann. Dann kommst du auch darauf, was hier gemeint ist.

    Was versteht man überhaupt unter "akt_"

    Ist bloß ein Name, den sich dein Lehrer ausgedacht hat. Namen haben keine technische Bedeutung.



  • Mit enum wetter {sonnig,regnerisch,bewoelkt}; hast du einen neuen Datentyp wetter definiert und davon sollst du eine Variable definieren (so daß diese eine der drei Werte annehmen kann).
    Das akt steht für aktuell (im englischen current), also die aktuell geltenden Zustände.

    Hast du denn nicht ein Buch oder Skript, anhand dessen du C lernst?

    PS: Hier im Forum solltest du die Code-Tags benutzen (ComboBox [mit C++ vorbelegt], sowie den Button </> zum Einfügen der Code-Tags)!
    Du kannst auch noch nachträglich deine Beiträge mittels des 3-Punkte Menüs ("Bearbeiten") editieren.



  • Dieser Beitrag wurde gelöscht!


  • Also ich habe da ein Buch und nutze ich auch, aber bei Anwendungsbeispiele hilft es mir wenig. Aber ich habe jetzt recherchiert und kam darauf:

    int main(void) {
        // Aufgabe 1b: Deklaration der Variablen
        float akt_temperatur;
        int akt_heizung;
        enum wetter akt_wetter;
        enum bewohner anwesenheit;
        struct zeit akt_zeit;
        enum rollaeden akt_rollladen;
    

    Für der Letzen Teil der Aufgabe habe ich das:

    printf("Wieviel Grad sind draussen?"); scanf("%f",&akt_temperatur);
    printf("Wetter [0: Sonne, 1: Regen, 2: Wolken]?"); scanf("%d",&akt_wetter);
    printf("Ist jemand zuhause [j/n]?"); scanf("%c",&akt_wetter);
    
    

    Aber bei der Teil mit "Unterprogramm init_zeit mit dem Rückgabewert vom Typ zeit" weiß ich nicht was ich da mache.

    Es tut mir echt Leid, dass ich Ihnen störe, und vielen vielen Dank für Ihre Hilfe!


  • Mod

    @hilfehwi sagte in Hilfe bei C-Programmierung Aufgabe:

    Aber bei der Teil mit "Unterprogramm init_zeit mit dem Rückgabewert vom Typ zeit" weiß ich nicht was ich da mache.

    Würdest du es verstehen, wenn da stünde "Schreiben Sie eine Funktion foo mit Rückgabetyp int"? Falls ja, dann ist es nur eine Frage, die Bezeichner und Typen zu tauschen. Falls nein, solltest du nochmal das Kapitel über Funktionen/Unterprogramme lesen.

    Was ist denn das für ein Buch? "Unterprogramm" ist ein ziemlich archaischer Begriff.



  • Ich nutze das Buch "C als erste Programmiersprache" Das ist was zu uns empfohlen wurde. Und nein Ihre Frage verstehe ich nicht. Mal schauen ich lese über Unterfunktionen, hoffentlich kirege ich das.

    Aber selbst die Aufgabe: "Schreiben Sie außerdem ein Unterprogramm init_zeit mit dem Rückgabewert vom Typ zeit. In der Funktion sollen die Elemente der Struktur zeit per Bildschirmeingabe eingelesen und eine somit initialisierte Instanz von zeit zurückgegeben werden. Initialisieren Sie mithilfe dieser Funktion die Variable akt_zeit."
    Ich kann da nur das anfangen:

    void init_zeit(struct  zeit){
        printf(""); scanf("%f",&);
    

    Aber ich lese jetzt mehr darüber...



  • int foo;
    

    Das ist die Deklaration einer Variable Namens "foo". Sie ist vom Typ int.


    enum wetter { sonnig, regnerisch, bewoelkt };
    

    Jetzt hast Du einen Typ Namens "enum wetter" ...

    enum wetter bar;
    

    Das ist die Deklaration einer Variable Namens "bar". Sie ist vom Typ enum wetter.



  • Jetzt für diese Teilaufgabe:
    "Schreiben Sie außerdem ein Unterprogramm init_zeit mit dem Rückgabewert vom Typ zeit. In der Funktion sollen die Elemente der Struktur zeit per Bildschirmeingabe eingelesen und eine somit initialisierte Instanz von zeit zurückgegeben werden. Initialisieren Sie mithilfe dieser Funktion die Variable akt_zeit."

    habe ich das geschrieben. Es gibt da aber eine Fehler oder mehrere. Ich in YouTube und Google geguckt aber trotzdem fehlt etwas oder ist etwas falsch.

    void init_zeit(struct zeit){
        int monat;
        int stunde;
        int minute;
        printf("Gebe den Monat ein:"); scanf("%d",&monat);
        printf("Gebe die Zeit im Format hh:mm ein:"); scanf("%d : %d",&stunde, &minute);
        return(zeit)
    }
    
    

  • Mod

    Vereinfachen wir das. Wäre dies für dich eine sinnvolle Funktion? Falls nein, was ist daran falsch?

    void foo(int i)
    {
      int j = 1;
      return i;
    }
    


  • ist i hier zweimal anders deklaniert? und j ist undeklaniert?



  • Nein. Aber was ist denn hierbei der Rückgabetyp?


  • Mod

    @hilfehwi sagte in Hilfe bei C-Programmierung Aufgabe:

    ist i hier zweimal anders deklaniert? und j ist undeklaniert?

    Häh, was? Vielleicht waren i und j zu ähnlich.

    void foo(int irgendein_integer)
    {
      int ein_vollkommen_anderer_integer = 1;
      return irgendein_integer;
    }
    

    Analyse immer noch die gleiche?

    Und wichtiger: Findest du dein Programm darin wieder?



  • @SeppJ Der Return wert wurde nicht verändert?



  • @progHWIhelp

    void foo(int i)
    

    Ok, dann winken wir mal mit dem gesamten Zaun: Was aus dem Codeschnipsel beschreibt den Return Type?


Anmelden zum Antworten