kleines prob damit
-
hi, hätte jemand vll ne idee für nen lösungsansatz?
welche schleifen, würdet ihr nehmen? vll for oder eher do while?würde mich über eine fixe hilfe sehr freuen!
beste grüße pitchy
Nach Aloysius Lilius und Christopher Clavius (Ende 16. Jahrhundert) kann man leicht berechnen,
auf welchen Tag eines jeden Jahres nach 1582 der Ostersonntag fällt. Der Benutzer wird
zunächst aufgefordert, die gewünschte Jahreszahl einzugeben. Diese soll in die int-Variable a
eingelesen werden. Danach ist folgender mathematischer Algorithmus (in der angegebenen)
Reihenfolge in die Sprache C umzusetzen:
b = (a mod 19) +1
c = [a/100] + 1
d = [3c / 4] -12
e = [(8c + 5) / 25] - 5
f = [5a / 4] - d - 10
g = (11b + 20 + e -d) mod 30
falls g = 25 und b>11, oder falls g = 24, so erhöhe g um 1
h = 44 - g
falls h < 21 so erhöhe h um 30
h = h + 7 - ((f + h) mod 7)
für h > 31 fällt der Ostersonntag auf den (h-31). April, sonst auf den h. März
Es bedeuten:
mod: ganzzahlige Division (z.B. 15 mod 4 ergibt 3), C-Operator ist „%“.
[ ]: mathematisches Symbol für ganzzahligen Anteil (z.B. [6,98] ergibt 6).
Tipp: Deklarieren Sie alle Variablen als int, dann erhalten Sie automatisch ganzzahlige
Ergebnisse. Die eckigen Klammern dürfen in C nicht programmiert werden.
-
Nennt sich das nicht Hausaufgabe?
Oder hat sich das geändert seit meiner Schulzeit und heist jetzt Internetaufgabe?Mach einfach mal einen Lösungsvorschlag und es wird dir bestimmt jemand die Probleme erläutern die dabei entstehen.
Prinzipiell steht ja schon fast alles da.
Allerdings ist mir nicht ganz klar wo hier ne Schleife rein soll.
Babbage
-
hätte das mit if else gemacht? :I oder wäre der ansatz komplett falsch?
-
Ich kenne die beiden Jungs nicht, aber da das eine einfache Abfolge von Befehlen ist, brauchst du auch keine Schleifen.
Danach ist folgender mathematischer Algorithmus (in der angegebenen)
Reihenfolge in die Sprache C umzusetzen:
-
wo liegt das problem
was hast du schon geschafft post doch einfach deinen cod
was funktioniert nicht
für was brauchst du schleifen denn
und wie Babbage schon gesagt hat muss du eig nur noch den scheiß kopieren bissle anpassen und fertig
sache von 10-30 min für anfänger
-
wie stelle ich denn die [] da? ist eigentlich für arrays vorbehalten?
-
Eine if Abfrage wird hier mehrfach gebraucht. Das ist korrekt.
-
[] ist in der Aufgabenstellung anders gebraucht. In C wird dies für Arrays verwendet.
Siehe Aufgabenstellung:
[ ]: mathematisches Symbol für ganzzahligen Anteil (z.B. [6,98] ergibt 6).
-
pitchy schrieb:
hätte das mit if else gemacht? :I oder wäre der ansatz komplett falsch?
Der Ansatz ist richtig. An zwei Stellen brauchst du wohl "if", nämlich dort, wo auch "falls" steht... Ob du einen else-Block brauchst, mußt du aber nochmal überlegen.
-
wie mache ich das c klar? das er das ganze nicht als array deklariert ?
-
Tipp: Deklarieren Sie alle Variablen als int, dann erhalten Sie automatisch ganzzahlige
Ergebnisse. Die eckigen Klammern dürfen in C nicht programmiert werden.
-
if(g==25) && (b>11) || if(g==24)
g++;so ähnlich die syntax für das erste falls? :I
-
Am besten keine [] verwenden. (geht auch nicht anders)
Wenn Du wie in der Aufgebenstellung nur integer verwendest löst sich das Problem fast von selbst.
z.B.
int x,y,z;
x=7;
y=2;z=x/y; // Das ist 7/2 also 3,5. Es wird aber beim integer immer abgerundet also kommt 3 raus
-
Warum machst du denn einen neuen Thread auf?! Wie ich im anderen Thread mit gleichem Titel schon geschrieben hab:
Machine schrieb:
pitchy schrieb:
und wie sieht, dass dann aus? :I
Wenn du willst, dass jemand hier deine Hausaufgaben macht, dann poste im "Projekte"-Unterforum und bezahl jemanden dafür.
Ansonsten zeige den Code, den du schon hast und es werden dir eventuell deine Fehler erklärt.
Gruß,
Machine
-
Machine schrieb:
Warum machst du denn einen neuen Thread auf?! Wie ich im anderen Thread mit gleichem Titel schon geschrieben hab:
Machine schrieb:
pitchy schrieb:
und wie sieht, dass dann aus? :I
Wenn du willst, dass jemand hier deine Hausaufgaben macht, dann poste im "Projekte"-Unterforum und bezahl jemanden dafür.
Ansonsten zeige den Code, den du schon hast und es werden dir eventuell deine Fehler erklärt.
Gruß,
Machineich habe doch nicht darum gebeten, dass für mich zu lösen oder? :I
es geht mir vielmehr darum, dass mir bißchen auf die sprunge geholfen wird. ein teil der if schleife, habe ich ja mal gepostet.
-
pitchy schrieb:
if(g==25) && (b>11) || if(g==24)
g++;so ähnlich die syntax für das erste falls? :I
her:
if (((g == 25) && (b > 11)) || (g == 24)) g++;
Das gesamte if-Statement muß in Klammern stehen. "|| if" ist so ebenfalls nicht richtig. Sieh das ganze als eine einzelne Funktion.
-
@Machine
Also ich kanns nachvollziehen. Wenn ich damals ne so gigantische Möglichkeit wie das Internet gehabt hätte, dann hätte ich mir alle Aufgaben machen lassen.pitchy schrieb:
.....
es geht mir vielmehr darum, dass mir bißchen auf die sprunge geholfen wird. ein teil der if schleife, habe ich ja mal gepostet.Bitte schreibe das 1000 mal:
**************** ES GIBT KEINE IF SCHLEIFE ****************
**************** ES GIBT KEINE IF SCHLEIFE ****************
**************** ES GIBT KEINE IF SCHLEIFE ****************
**************** ES GIBT KEINE IF SCHLEIFE ****************
-
Habe das mal soweit geschrieben, das letzte verstehe ich nicht ganz, hab den satz mal als kommentar gekennzeichnet. danke schonmal, für die ersten hilfen von euch!
int main() { int a,b,c,d,e,f,g,h; printf("Geben sie gewuenschte Jahreszahl ein:\t"); scanf("i%",&a); b=(a %19)+1; c=(a/100)+1; d=(3*c/4)-12; e=((8*c+5)/25)-5; f=(5*a/1)-d-10; g=(11*b+20+e-d)&30; if (((g == 25) && (b > 11)) || (g == 24)) g++; h=44-g; if(h<21); h=h+30; h=h+7-((f+h)%7); printf("TAGE %i",h); // für h>31 fällt der Ostersonntag auf den (h-31), April sonsst auf den h. März return 0; }
-
if(h<21); h=h+30;
Das Semikolon hinter dem if wegnehmen. "h=h+30" für die Übersichtlichkeit einrücken. Etwa so:
if (h < 21) h = h + 30; /* oder: "h += 30;" */
g=(11*b+20+e-d)&30;
der Modulo-Operator ist "%", wie weiter oben schon benutzt, nicht "&".
für h>31 fällt der Ostersonntag auf den (h-31), April sonsst auf den h. März
Wenn h größer ist als 31 (z.B. 35), ist der gesuchte Tag der "(h - 31).April" (z.B. 35 - 31 = 4 -> 4.April).
Wenn h kleiner oder gleich 31 (sonst -> else) ist, z.B. 25, dann ist es der "h.März" (z.B. h = 25 -> 25.März).printf("TAGE %i",h);
Zur Ausgabe von integern als Dezimalzahl wird "%d" benutzt, nicht "%i", wie bei der Eingabe.
-
vielen dank! das mit dem modulo war einfach ein tippfehler
also baue ich einfach noch eine if else, ans ende?
werde ich gleich mal probieren und dann nochmal posten