matheraum.de
Raum für Mathematik
Offene Informations- und Nachhilfegemeinschaft

Für Schüler, Studenten, Lehrer, Mathematik-Interessierte.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Schulmathe
  Status Primarstufe
  Status Mathe Klassen 5-7
  Status Mathe Klassen 8-10
  Status Oberstufenmathe
    Status Schul-Analysis
    Status Lin. Algebra/Vektor
    Status Stochastik
    Status Abivorbereitung
  Status Mathe-Wettbewerbe
    Status Bundeswettb. Mathe
    Status Deutsche MO
    Status Internationale MO
    Status MO andere Länder
    Status Känguru
  Status Sonstiges

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
StartseiteMatheForenAlgorithmen und DatenstrukturenSchleifen+ Schaltjahrberechnun
Foren für weitere Schulfächer findest Du auf www.vorhilfe.de z.B. Philosophie • Religion • Kunst • Musik • Sport • Pädagogik
Forum "Algorithmen und Datenstrukturen" - Schleifen+ Schaltjahrberechnun
Schleifen+ Schaltjahrberechnun < Algor.+Datenstr. < Theoretische Inform. < Hochschule < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Algorithmen und Datenstrukturen"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Schleifen+ Schaltjahrberechnun: Aufgabe
Status: (Frage) beantwortet Status 
Datum: 16:32 Do 15.03.2007
Autor: narutochen

Hallo!

Also ich kenne mich da überhaupt nicht aus, da ich in meinem ganzen Leben noch nie programmiert habe. Ich freue mich, wenn mir da jemand helfen könnte.

a) Gesucht ist ein Algorithmus int power("pfeil nach unten"p, "pfeil nach unten" q), welcher für ganzzahlige p>0 und q>0 die Funktion pq berechnet. Formulieren Sie drei Algorithmen mit den folgenden Schleifen:
(a) for
(b) while
(c) repeat

b)

Gesucht ist ein Algorithmus int daysInMonth("pfeil nach unten" m, "pfeil nach unten" y), welcher für ganzzahlige 1<=m<=12 und 1000<y<3000 die die Zahl der Tage im Monat m im Jahr y berechnet.

Danke die Hilfe.

mfg narutochen

        
Bezug
Schleifen+ Schaltjahrberechnun: Antwort
Status: (Antwort) fertig Status 
Datum: 16:55 Do 15.03.2007
Autor: Ankh


> a) Gesucht ist ein Algorithmus int power("pfeil nach
> unten"p, "pfeil nach unten" q), welcher für ganzzahlige p>0
> und q>0 die Funktion pq berechnet. Formulieren Sie drei
> Algorithmen mit den folgenden Schleifen:

Meinst du wirklich p*q?

Dann, mal abgesehen von syntaktischen Feinheiten:

> (a) for

x := 0
for i := 1 to q
  x := x+p
return x

>  (b) while

x := 0
i := 1
while i <= q
  x := x+p
  i := i+1
return x

>  (c) repeat

x := 0
i := 1
repeat
  x := x+p
  i := i+1
until i > q

return x

Bezug
                
Bezug
Schleifen+ Schaltjahrberechnun: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 17:11 Do 15.03.2007
Autor: narutochen

ups, es sollte [mm] p^q [/mm] heißen.

könntest du mir erklären was die Begriffe "repeat" und "return" heißen? Wäre dir dankbar.

mfg narutochen

Bezug
                        
Bezug
Schleifen+ Schaltjahrberechnun: Antwort
Status: (Antwort) fertig Status 
Datum: 23:40 Do 15.03.2007
Autor: Ankh


> ups, es sollte [mm]p^q[/mm] heißen.

Dann musst du den Startwert für x ändern und statt der Addition in der Schleife eine Multiplikation ausführen.

> könntest du mir erklären was die Begriffe "repeat" und
> "return" heißen? Wäre dir dankbar.

"return x" gibt x als ergebniswert der funktion power(p,q) zurück.

"repeat" zeigt den anfang einer repeat-until-schleife an, das ende wird durch "until([bedingung])" markiert. Alles zwischen "repeat" und "until" wird zunächst einmal durchlaufen und anschließend so lange wiederholt, bis die Bedingung bei "until" erfüllt ist.

Bezug
        
Bezug
Schleifen+ Schaltjahrberechnun: Antwort
Status: (Antwort) fertig Status 
Datum: 23:51 Do 15.03.2007
Autor: Ankh


> b)
> Gesucht ist ein Algorithmus int daysInMonth("pfeil nach
> unten" m, "pfeil nach unten" y), welcher für ganzzahlige
> 1<=m<=12 und 1000<y<3000 die die Zahl der Tage im Monat m
> im Jahr y berechnet.

int daysInMonth(m, y):
begin
  d := 31
  if (m=4)or(m=6)or(m=9)or(m=11) then d := 30
  if (m=2)then begin
    if (y/4=round(y/4) then d := 29
    else d := 28
  end
end
return d

Das erklärt sich hoffentlich von selbst. Ich habe angenommen, dass die Funktion round(x) die Nachkommastellen von x abschneidet, diese Funktion kann auch ganz anders heißen, je nachdem wo du programmierst. Ich habe damit nur getestet, ob y durch 4 teilbar ist. Die richtige Schaltjahrregel ist aber noch etwas komplizierter...

Bezug
                
Bezug
Schleifen+ Schaltjahrberechnun: Frage (überfällig)
Status: (Frage) überfällig Status 
Datum: 22:49 Fr 16.03.2007
Autor: narutochen

Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)
Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)
Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)

Hallo Ankh!

Herzlichen Dank für deine Hilfe.

So ich hab jetzt mal nach deiner Anweisung die Algorithmen neu zusammengestellt.

Hier die Algorithmen:

> (a) for

int power (↓p, ↓q) {
p = 0
for (i = 1…q) {
p = p*q
}
return p
}
return -1
}


>  (b) while

int power (↓p, ↓q) {
p = 0
i  = 1
while (i <= q) {
p = p*q
i = i+1
}
return p
}
return -1
}

(c) repeat

int power (↓p, ↓q) {
p = 0
i  = 1
repeat{
p = p*q
i  = i+1
} until (i > q)
return p
}
return -1
}

Stimmt diese? Ehrlich gesagt, verstehe ich beim Beispiel 1 noch immer nicht was diese Algorithmen tatsächtlich bedeuten. Ja ich weiß schon, dass die Algorithmen p^q ausrechnen soll, aber warum multiplizieren und warum nach der Angabe int power (p, q) p=0 und i= 1 setzen?  

Das Beispiel 2, omg, habe ich tatsächlich verstanden. :-)

Danke nochmals.

mfg narutochen



Bezug
                        
Bezug
Schleifen+ Schaltjahrberechnun: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 13:57 Mo 19.03.2007
Autor: Ankh


> Stimmt diese? Ehrlich gesagt, verstehe ich beim Beispiel 1
> noch immer nicht was diese Algorithmen tatsächtlich
> bedeuten. Ja ich weiß schon, dass die Algorithmen [mm] p^q [/mm]
> ausrechnen soll, aber warum multiplizieren und warum nach
> der Angabe int power (p, q) p=0 und i= 1 setzen?  

Der Startwert für p sollte bei der Potenzberechnung immer 1 sein (neutrales Element der Multiplikation) und nicht Null (neutrales Element der Addition).

p ist der Wert der Potenz, er beträgt am Anfang 1 = "Pfeil" [mm] p^0, [/mm] und wird in jedem Schritt mit "Pfeil nach unten"p multipliziert. (Wichtig ist hier zu unterscheiden zwischen dem innerhalb der Funktion unveränderlichen Parameter "Pfeil"p und der lokalen Variable p (nenn sie besser anders, hier "pow"). pow nimmt also nacheinander die Werte [mm] p^0, p^1=1*p, p^2=p*p, p^3=p*p*p, [/mm] ..., [mm] p^q [/mm] an.
i ist nur eine Laufvariable, die anzeigt, wie oft die Schleife schon durchlaufen wurde. Jede Schleife sollte q mal durchlaufen werden. q-mal sollte mit p multipliziert werden.

Bin mir nicht sicher, aber ich glaube, nach jeder Anweisung muss ein Semikolon stehen.

Bezug
                                
Bezug
Schleifen+ Schaltjahrberechnun: Fragen
Status: (Frage) beantwortet Status 
Datum: 23:29 Mo 19.03.2007
Autor: narutochen

Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)
Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)
Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)

Hallo!

Also soll ich statt p=o, p=1 schreiben.

Das es wird dann so ausschauen:

> (a) for

int power (↓p, ↓q) {
p = 1
for (i = 1…q) {
p = p*q
}
return p
}
return -1
}


>  (b) while

int power (↓p, ↓q) {
p = 1
i  = 1
while (i <= q) {
p = p*q
i = i+1
}
return p
}
return -1
}

(c) repeat

int power (↓p, ↓q) {
p = 1
i  = 1
repeat{
p = p*q
i  = i+1
} until (i > q)
return p
}
return -1
}

Stimmt das jetzt?

Ajo, danke nochmals für deine Hilfe

mfg narutochen

PS: Semikolons, glaube ich sind in diesen Beispielen unwichtig.

Bezug
                                        
Bezug
Schleifen+ Schaltjahrberechnun: Antwort
Status: (Antwort) fertig Status 
Datum: 09:01 Di 20.03.2007
Autor: Ankh

Ja, sieht gut aus.

Ist die Funktionsweise der for- , while-, und repeat-until-schliefe inzwischen klar? Sie machen im Prinzip alle das Gleiche: den Zähler i solange erhöhen, bis er gleich q ist (und außerdem die Multiplikation natürlich). Die Abbruchbedingung ist überall die gleiche, sie steht bei der for-Schleife als Obergrenze (q), bei der repeat-until-Schleife hinter dem until (i>q) und bei der while-Schleife steht stattdessen eine Nicht-Abbruchbedingung (i<=q).

Bezug
                                                
Bezug
Schleifen+ Schaltjahrberechnun: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 14:57 Di 20.03.2007
Autor: narutochen

Tja, ja, glaube ich. Ich glaube ich brauche einfach noch ein bisschen mehr Übungen.

Danke für deine Hilfe.

mfg narutochen



Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Algorithmen und Datenstrukturen"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.schulmatheforum.de
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]