C :: Aufgabe #42 :: Lösung #1
1 Lösung
#42
Bei Addition von Tage nur Werktage beachten
Anfänger - C
von Gustl
- 22.07.2013 um 11:04 Uhr
Schreibe ein Programm welches die Anzahl der addierenden Tage abfrägt und dann das Datum ausgibt.
Bei der Addition der Tage sollen aber nur die Werktage (Geschäftstage): Montag, Dienstag, Mittwoch, Donnerstag und Freitag beachtet werden.
Beispiel: Heute ist der 22.07. (Montag), wenn ich nun 7 Tage eingebe soll der 31.07. (Mittwoch) ausgegeben werden.
Bei der Addition der Tage sollen aber nur die Werktage (Geschäftstage): Montag, Dienstag, Mittwoch, Donnerstag und Freitag beachtet werden.
Beispiel: Heute ist der 22.07. (Montag), wenn ich nun 7 Tage eingebe soll der 31.07. (Mittwoch) ausgegeben werden.
#1
von devnull (8870 Punkte)
- 05.03.2014 um 11:45 Uhr
/****************************************
* werktage.c Werktage addieren
* devnull 05-03-2014
****************************************/
#define _XOPEN_SOURCE
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
#define TMBUF_LEN 30
#define SECONDS_PER_DAY 86400
#define DATE_FORMAT "%d.%m.%Y"
int input_date(char *sdate, char *stime, struct tm *tmi)
{
char inbuf[TMBUF_LEN + 1];
char *pe;
printf("%-10s: ", sdate);
scanf("%s", inbuf);
inbuf[TMBUF_LEN] = '\0';
strcat(inbuf, stime);
pe = strptime(inbuf, DATE_FORMAT "%T", tmi);
if (pe == NULL || *pe != 0) {
fprintf(stderr, "%11s %10s\n", "Ungueltiges", sdate);
return 1;
}
tmi->tm_isdst = 0;
return 0;
}
int main(void)
{
char sdays[10];
char tmbuf[TMBUF_LEN];
time_t t;
struct tm tms;
struct tm *tml;
int cdays, ndays;
if (input_date("Startdatum ", "12:00:00", &tms) != 0)
return 1;
t = mktime(&tms);
printf("Anzahl Tage: ");
scanf("%s", sdays);
cdays = atoi(sdays);
ndays = 0;
while (ndays < cdays) {
t += SECONDS_PER_DAY;
tml = localtime(&t);
/* 0 = Sonntag, 6 = Samstag */
if (tml->tm_wday > 0 && tml->tm_wday < 6)
ndays++;
}
strftime(tmbuf, TMBUF_LEN, DATE_FORMAT, tml);
printf("Enddatum : %s\n", tmbuf);
return 0;
}
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1
