Kalender in Matlab erstellen

Neue Frage »

Tremonia Auf diesen Beitrag antworten »
Kalender in Matlab erstellen
Hallo, ich bin dabei einen Kalender in Matlab zu programmiern. Es soll mit einem geeigneten Dialog erfasst werden wie viele Tage der Monat hat und welcher Tag der erste im Monat ist. Anschließend soll der Kalender im Kommandofenster erscheinen. Die Pdf im Anhang zeigt wie der Kalender einmal aussehen soll.

Siehe Anhang: Für denn Fall, dass der erste Tag ein Montag ist funktioniert es wie gewünscht. Wenn aber Dienstag oder ein anderer Tag ungleich Montag noch nicht. Da muss die 1 für den ersten Tag entsprechend eingerückt werden.
Hat jemand ne Idee wie das zu realisieren ist?
Ich hoffe es ist klar geworden wie ich es meine. Wenn nicht bitte fragen!

Vielen Dank
Tremonia
Airblader Auf diesen Beitrag antworten »

Wieso gibst du nicht einfach entsprechend viele '\t\t ' aus? verwirrt
Im Übrigen bin ich vom Code verwirrt. Wieso läuft die Schleife über p, p wird aber nie verändert, aber dafür veränderst du k?

Wie im anderen Thread gesagt würde ich es übrigens vorziehen, wenn du den Code direkt postest.

air
Tremonia Auf diesen Beitrag antworten »

Zitat:
Original von Airblader
Wieso gibst du nicht einfach entsprechend viele '\t\t ' aus? air

Dann läuft es hinten raus, weil ja immer 7 in einer reihe sind.
Zitat:
Original von Airblader
Im Übrigen bin ich vom Code verwirrt. Wieso läuft die Schleife über p, p wird aber nie verändert, aber dafür veränderst du k?air

Stimmt sieht wirklich komisch aus. Funktioniert für den ersten Fall aber trotzdem.
Airblader Auf diesen Beitrag antworten »

Ich mach's mal so, dass ich es dir gebe und du überlegst, warum es das tut, was es soll:

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:
% Kalender
clear all
clc
Mo = 'Mo';
Di = 'Di';
Mi = 'Mi';
Do = 'Do';
Fr = 'Fr';
Sa = 'Sa';
So = 'So';
Anzahl_Tage = input('Geben sie die Anzahl der Monatstage an: ');

disp('Wie lautet der erste Tag des Monats?')
disp('Geben sie Mo für Montag, Di für Dienstag, Mi für Mittwoch,')
disp('Do für Donnerstag, Fr für Freitag, Sa für Samstag und So für Sontag ein!')
Erster_Wochentag = input('Erster Wochentag gleich: ', 's');

% Wenn du die Tage schon als Variable definierst, warum nicht auch hier
% verwenden?
fprintf('\t\t%s \t\t%s \t\t%s \t\t%s \t\t%s \t\t%s \t\t%s\n', Mo, Di, Mi, Do, Fr, Sa, So)

% Was das tut und warum es das tut darfst du mal rätseln
Delay = strfind([Mo Di Mi Do Fr Sa So], Erster_Wochentag);
Delay = Delay - 1;
Delay = Delay / 2;

% Die leeren Plätze erzeugen
for k = 1:Delay
    fprintf('\t\t  ');
end

% Hier die Ausgabe ... auch hier: Erstmal überlegen, was passiert! ;)
for k = Delay+1:Anzahl_Tage+Delay
    fprintf('\t\t%i', k - Delay);
    
    if mod(k, 7) == 0
        fprintf('\n');
    end
end

fprintf('\n');


"Schön" ist codetechnisch zwar anders, aber nunja.

air
Tremonia Auf diesen Beitrag antworten »

Ok! Der strfind-Befehl ist interessant. Hier wird jetzt in Delay zurückgeliefert an welcher Stelle des Vektors Erster_Wochentag steht. Z.B. Delay = 1 für Montag Delay = 3 für Dienstag usw. dann wird berechnet wie viele \t vorgeschoben werden müssen. Es wird dann eingerückt. Die Ausgabe verstehe ich, hier muss beachtet werden das wieder mit 1 begonnen werden muss.

Es ist mir auf jeden Fall klar geworden. Mit meinem Versuch wäre ich bestimmt gescheitert, jedenfalls hat noch viel gefehlt. Somit besten Dank!
Airblader Auf diesen Beitrag antworten »

Gern. Augenzwinkern

Die Vorgehensweise ist allerdings eher suboptimal -- ich wollte mir nur ein lästiges switch ersparen. Mit Arrays wäre es am schönsten.

air
 
 
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »