infokram

Hier kann über alles diskutiert werden, wirklich alles. Betonung liegt auf "diskutiert", das ist also kein Freischein zum Spammen.
(Beitragszähler deaktiviert)
Antworten
lolo86
Kaklatron
Beiträge: 18
Registriert: 14. Dez 2008, 17:57

infokram

Beitrag von lolo86 » 22. Apr 2009, 16:03

hallo alle zusammen,
könnte mir jmd bei meinen informatik hausaufgaben helfen?
aufgabe 2 konnte ich selbst..aber die anderen nicht :(
vll auch nur denkanstöße geben..
also falls jmd langeweile hat und solche aufgaben gerne macht, würde ich mich freuen :D

eure lolo

Aufgabe 1
Geben Sie umgangssprachlich einen Algorithmus an, der in einem Raum, in dem sich n Personen befinden, die jüngste Person ermittelt

Aufgabe 3
Folgender Algorithmus wird umgangssprachlich formuliert:
Eingabe: Natürliche Zahlen x größergleich 1, y größergleich 1
Setze s = 0
.......Solange y > 1 gilt:
...........Falls y ungerade
...........setze s = s+x
...........setze y = (y-1)/2
.......sonst setze y = y/2
.......Setze x = 2x
Setze s = s+x

a) Führen Sie den Algorithmus mit den zwei Wertepaaren
x = 31 y = 64
x = 64 y = 31 aus.
Tragen Sie in einer Tabelle die nacheinander angenommenen Werte für x, y und s ein!
b) Stellen Sie den Algorithmus als Flussdiagramm dar!
c) Modifizieren Sie den Algorithmus, dass er für alle Zahlen aus N = {0, 1, 2, 3, ”¦ } korrekt und hinsichtlich der Wiederholungen möglichst effizient ist!

Aufgabe 4
Entwickeln Sie einen Algorithmus, der folgendes leistet: Für eine Folge von nichtnegativen ganzen Zahlen sollen die zwei größten Werte ermittelt und ausgegeben werden. Falls keine oder nur eine Zahl eingegeben wurde, soll eine entsprechende Fehlermeldung ausgegeben werden. Die Zahlen werden nacheinander eingelesen. Das Ende der Eingabe wird durch die Eingabe einer negativen Zahl signalisiert.
Geben Sie den Algorithmus in grafischer Form als Programmablaufplan an!

Beispiele:
Eingabe: 1 9 5 0 7 6 -1
Ausgabe: größte Zahlen 9 und 7
Eingabe: 9 -1
Ausgabe: zu wenig Zahlen
Eingabe: -1
Ausgabe: zu wenig Zahlen



danki :D
Zuletzt geändert von lolo86 am 22. Apr 2009, 16:42, insgesamt 1-mal geändert.

Benutzeravatar
mopf
Gelbbart-Yeti
Beiträge: 2240
Registriert: 6. Apr 2004, 18:11
Wohnort: hier?
Kontaktdaten:

Re: infokram

Beitrag von mopf » 22. Apr 2009, 16:08

nimm für 1 doch infach nen suchalgorithmus.

nimmd eine person und vergleiche sie mit einer anderen. die ältere setzt du in einen raumabschnitt, der bereits gezählt wurde.
dann nimmst du eine andere und vergleichst die mit deiner jüngeren .. .. usw

such ansonsten mal nach suchalgorithmen
Denken, Schreiben, Abschicken. In anderer Reihenfolge funktioniert das Forennutzen nicht.

Get Lich or try dying

lolo86
Kaklatron
Beiträge: 18
Registriert: 14. Dez 2008, 17:57

Re: infokram

Beitrag von lolo86 » 22. Apr 2009, 16:35

ok danke mopf, werde ich mal ausprobieren.
hab grad nummer 3 a gemacht..könnte das so stimmen?

durchgang 0 1 2 3 4 5 6 7
x 31 62 124 248 496 992 1984 1984
y 64 32 16 8 4 2 1 1
s 0 0 0 0 0 0 0 1984



durchgang 0 1 2 3 4 5

x 64 64 64 64 64 64
y 31 15 7 3 1 1
s 0 64 128 192 256 320

stellt euch das als tabelle vor xD

Benutzeravatar
LuBuLegend
Gelbbart-Yeti
Beiträge: 1996
Registriert: 21. Jul 2006, 01:33
Wohnort: In Freiburg (CH)
Kontaktdaten:

Re: infokram

Beitrag von LuBuLegend » 22. Apr 2009, 17:09

Wenn nur unser Infounterricht so wäre..
Manche programmieren Flash-Games, während der Lehrer den anderen erklärt, wie man Passwörter wechselt, Google benutzt oder mit Word umgeht..., und das in einer maturalklasse..
Bild

Benutzeravatar
XanSeS
Nachtgonk
Beiträge: 268
Registriert: 15. Apr 2007, 10:27

Re: infokram

Beitrag von XanSeS » 22. Apr 2009, 18:33

Hi,

1.)
Für die Personen im Raum nimmst du einen Array, beispielsweise personen[]
Desweiteren nimmst du eine Variable, beispielsweise alter.
Du setzt alter=personen[0]
Mit einer for-Schleife ließst du die restlichen Werte aus personen[] aus.
for(var=1;var!=anzahl_personen;var++) {
wenn alter > personen[var]
dann alter = personen[var]
} // Schleifenende
Ausgabe : Die jüngste Person im Raum ist alter Jahre alt.

3.)
Was du machen musst steht ja bereits in der Aufgabenstellung, das müsstest du selbst hinkriegen.

4.)
Du nimmt für die Zahlen wie in 1.) wieder einen Array, beispielsweise zahlen[]
Diesmal nimmst du 3 Variablen, beispielsweise big1, big2 und index_groesste_zahl
Du setzt big1 und big2 gleich 0.
Du machst diesmal 2 for-Schleifen bzw. benutzt eine Funktion, je nachdem, was dir lieber ist. Ich beschreibe hier lieber den Weg mit den 2 Schleifen, da ich mir nicht sicher bin, dass ihr Funktionen bereits behandelt habt.
for(var=0;var!=anzahl_zahlen;var++) {
wenn big1 < zahlen[var]
dann big1 = zahlen[var] und index_groesste_zahl = var
}
zahlen[index_groesste_zahl]=0

Danach die zweite Schleife :

for(var=0;var!=anzahl_zahlen;var++) {
wenn big2 < zahlen[var]
dann big2 = zahlen[var]
}

wenn big1>=0 && big2>=0
dann Ausgabe big1 und big2
wenn nicht Ausgabe "Zu wenig Zahlen"
---

lolo86
Kaklatron
Beiträge: 18
Registriert: 14. Dez 2008, 17:57

Re: infokram

Beitrag von lolo86 » 22. Apr 2009, 18:47

vielen dank für deine mühe, aber kannst du mir bei nummer 1 noch mal helfen?
XanSeS hat geschrieben:Hi,

1.)
Für die Personen im Raum nimmst du einen Array, beispielsweise personen[]
Desweiteren nimmst du eine Variable, beispielsweise alter.
Du setzt alter=personen[0]
Mit einer for-Schleife ließst du die restlichen Werte aus personen[] aus.
for(var=1;var!=anzahl_personen;var++) {
wenn alter > personen[var]
dann alter = personen[var]
} // Schleifenende
Ausgabe : Die jüngste Person im Raum ist alter Jahre alt.
ich seh da nich so ganz durch..also ich verstehe ja, dass ich die personen in felder ablege und ihnen einen wert(alter) gebe. aber deine for-schleife verstehe ich nicht..kannst du mir die nochmal erklären?? was bedeutet (var=1;var!=anzahl_personen;var++)? :oops:

danke :D

Brio
Kriechlapf
Beiträge: 42
Registriert: 17. Feb 2006, 23:14

Re: infokram

Beitrag von Brio » 22. Apr 2009, 19:45

Die for-Schleife geht im Prinzip einfach alle Einträge des Arrays durch (also im Prinzip die Personen).
Die Variable var dient dabei nur als "Zählvariable". Mit var=1 wird gesagt, dass die Variable var am Anfang den Wert 1 hat, also die zweite Person "aufgerufen" und überprüft wird. (bei Arrays wird der erste Eintrag mit der Zahl 0 aufgerufen, was du ja vor der Schleife mit alter=personen[0] gemacht hast)
Die Angabe var!=anzahL_personen sorgt dafür, dass die Schleife solang ausgeführt wird, solange die "Zählvariable" var nicht der Anzahl der Personen entspricht.
Die letzte Angabe var++ sorgt dafür, dass mit jedem Durchlauf der Schleife der Wert von var um eins erhöht wird. Damit vermeidet man, dass jedesmal die gleiche Person aufgerufen wird und eine Endlosschleife entsteht.
Im Endeffekt zählst du also mit der Schleife alle Personen -angefangen mit der zweiten- durch bis du eben alle einmal aufgerufen hast.

Innerhalb der geschweiften Klammern ( { und } ) steht dann der Anweisungsteil der Schleife. Hier wird einfach überprüft, ob das Alter der vorherigen Person größer ist, wie das Alter der derzeit aufgerufenen. Ist dies der Fall ist das neue minimale Alter eben das Alter der derzeitig aufgerufenen Person.

Damit die von XanSes gepostete Schleife exakt der Aufgabenstellung entspricht, solltest du sie leicht abändern:

Code: Alles auswählen

alter=personen[0]
juengste_person=0;
for(var=1;var!=n;var++) {
wenn alter > personen[var]
dann alter = personen[var] und juengste_person = var
}
Ausgabe : Die jüngste Person ist Person var. Sie ist alter Jahre alt.
mfg brio

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 276 Gäste