Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Informatik in der Schule » Programm schreiben (C) » Antwort erstellen » Hallo Gast [Anmelden|Registrieren]

Antwort erstellen
Benutzername: (du bist nicht eingeloggt!)
Thema:
Nachricht:

HTML ist nicht erlaubt
BBCode ist erlaubt
Smilies sind erlaubt
Bilder sind erlaubt

Smilies: 21 von 33
smileWinkDaumen hoch
verwirrtAugenzwinkerngeschockt
Mit ZungeGottunglücklich
Forum Kloppebösegroßes Grinsen
TanzentraurigProst
TeufelSpamWillkommen
LehrerLOL HammerZunge raus
Hilfe 
aktuellen Tag schließen
alle Tags schließen
fettgedruckter Textkursiver Textunterstrichener Text zentrierter Text Hyperlink einfügenE-Mail-Adresse einfügenBild einfügen Zitat einfügenListe erstellen CODE einfügenPHP CODE farbig hervorheben
Spamschutz:
Text aus Bild eingeben
Spamschutz

Die letzten 3 Beiträge
nightowI RE: Programm schreiben (C)

Vielen, vielen Dank hat mir sehr geholfen!!
InformaTiger RE: Programm schreiben (C)

Hallo nightowl,

ich denke folgender Code sollte den Job erledigen smile

date.h
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
#ifndef _DATE_H
#define _DATE_H

struct date_t {
    int day;
    int month;
    int year;
};

typedef struct date_t Date;

Date* newDate(int d, int m, int y);

void delDate(Date* date);

void setDateDay(Date* date, int d);

void setDateMonth(Date* date, int m);

void setDateYear(Date* date, int y);

int getDateDay(Date* date);

int getDateMonth(Date* date);

int getDateYear(Date* date);

int isMeaningful(Date* date);

#endif // _DATE_H


date.c
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
#include <stdio.h>
#include <stdlib.h>

#include "date.h"

Date* newDate(int d, int m, int y){
    Date* date = malloc(sizeof(Date));
    if (date == NULL){
        fprintf(stderr, "Failed to allocate memory\n");
        exit(1);
    }
    date->day = d;
    date->month = m;
    date->year = y;

    return date;
}

void delDate(Date* date){
    free(date);
}

void setDateDay(Date* date, int d){
    if (d > 31 || d < 1){
        fprintf(stderr, "Invalid day\n");
        exit(1);
    }
    date->day = d;
}

void setDateMonth(Date* date, int m){
    if (m > 12 || m < 1){
        fprintf(stderr, "Invalid month\n");
        exit(1);
    }
    date->month = m;
}

void setDateYear(Date* date, int y){
    if (y < 1900){
        fprintf(stderr, "Invalid year\n");
        exit(1);
    }
    date->year = y;
}

int getDateDay(Date* date){
    return date->day;
}

int getDateMonth(Date* date){
    return date->month;
}

int getDateYear(Date* date){
    return date->year;
}

int isMeaningful(Date* date){
    if (date->month == 2){
        if (date->year % 4 == 0 && date->year % 100 != 0){
            return date->day > 0 && date->day <= 29;
        } else {
            return date->day > 0 && date->day <= 28;
        }
    }
    
    if (date->month < 0 || date->month > 12){
        return 0;
    } else if (date->month < 8){
        return date->day > 0 && (date->month % 2 == 0) ? date->day <= 30 : date->day <= 31;
    }
    return date->day > 0 && (date->month % 2 == 1) ? date->day <= 30 : date->day <= 31;
}


main.c
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
#include <stdio.h>
#include <stdlib.h>

#include "date.h"

int testDate(Date* date, int d, int m, int y);

int main(void){
    Date* d = newDate(29, 2, 2016);

    printf("%d\n", isMeaningful(d));
    printf("%d\n", testDate(d, 29, 2, 2017));
    printf("%d\n", testDate(d, 31, 1, 1990));
    printf("%d\n", testDate(d, 31, 6, 1986));
    printf("%d\n", testDate(d, 31, 9, 1996));

    /* will exit after first failure */
    printf("%d\n", testDate(d, 0, 1, 1903));
    printf("%d\n", testDate(d, 30, -1, 1905));
    printf("%d\n", testDate(d, 20, 1, 1886));

    delDate(d);
    return EXIT_SUCCESS;
}

int testDate(Date* date, int d, int m, int y){
    setDateDay(date, d);
    setDateMonth(date, m);
    setDateYear(date, y);
    return isMeaningful(date);
}


Mit freundlichen Grüßen
InformaTiger
nightowl Programm schreiben (C)

Meine Frage:
Guten Tag,

ich habe eine etwas ungewöhnliche Frage, nämlich ob mir jemand ein Programm
(Aufgabenstellung siehe unten) schreiben kann. Es ist so, dass ich heute noch 6 weiter schreiben muss und die Zeit dafür vmtl. nicht reicht(ich weiß ich weiß früher anfangen...). Jetzt möchte ich euch bitten mir das, meiner Meinung nach, "leichteste" abzunehmen. Vielen Dank schon mal und wenn nicht hab ich eben Pech gehabt :P


Meine Ideen:
Schreiben Sie einen Strukturdatentyp Date zur Speicherung alle Daten ab 01.01.1900. Die Struktur besteht aus drei int-Members (Tag, Monat und Jahr). Schreiben Sie die Funktionen

?Date* newDate(int d, int m, int y),

?Date* delDate(Date* date),

sowie die sechs Zugriffsfunktionen

?void setDateDay(Date* date, int d),

?void setDateMonth(Date* date, int m),

?void setDateYear(Date* date, int y),

?int getDateDay(Date* date),

?int getDateMonth(Date* date),

?int getDateYear(Date* date).

Schreiben Sie die Funktion int isMeaningful(Date* date), die die Zulässigkeit einer Datum überprüft (Rückgabewert 1 bei Zulässigkeit, sonst 0). Die Datum 31.02.2013 z.B. ist nicht zulässig (Schaltjahre nicht vergessen!). Schreiben Sie ferner ein aufrufendes Hauptprogramm, um Ihre Implementierung entsprechend zu testen. Speichern Sie den Source-Code, aufgeteilt in Header-Datei datum.h und datum.c, in das Verzeichnis serie08.