Ü11

Moderator: Eingebettete Systeme 1

.jar Head
Erstie
Erstie
Beiträge: 19
Registriert: 2. Dez 2008 21:42

Ü11

Beitrag von .jar Head » 20. Feb 2011 13:18

Ich konnte nicht in zur 11.Übung anwesend sein und habe noch ein paar Fragen. Erst mal zur 2.c)...

Ich bin mit den Zahlen der + und der := Operation bei "4.schleife2" nicht einverstanden.

In der Zelle des + Operator steht: 100+149. Die 100 beziehen sich wohl auf das int i; wobei mMn hier schon 101 stehen müsste. Einmal die Zuweisung i=100 und 100mal die Dekrementierung i--.
Und die 149, weiß ich nicht, wie die zustande kommen. Gehe ich vom Worst-Case aus, ist m=0, und ich laufe 51mal in den else-Zweig und 49mal in den then-Teil. Da aber in dem then- und else-Zweig je nur eine +Operation steht (Zeile 15, 18), müsste es statt 149 doch schlicht 100 heißen, oder?
Gleiches bei der := Zuweisung. Dort steht "101 + 2*100". 101 sind wohl wieder die int i Zuweisungen. Aber warum 2*100? Ich würde sagen: 51mal den Else-Teil mit je zwei Zuweisungen, und 49mal den Then-Teil mit einer Zuweisung. Macht: 101 + 51*2 + 49*1.

H. Gregor Molter
Moderator
Moderator
Beiträge: 169
Registriert: 16. Dez 2004 20:17
Kontaktdaten:

Re: Ü11

Beitrag von H. Gregor Molter » 20. Feb 2011 19:50

.jar Head hat geschrieben: In der Zelle des + Operator steht: 100+149. Die 100 beziehen sich wohl auf das int i; wobei mMn hier schon 101 stehen müsste. Einmal die Zuweisung i=100 und 100mal die Dekrementierung i--.
Und die 149, weiß ich nicht, wie die zustande kommen. Gehe ich vom Worst-Case aus, ist m=0, und ich laufe 51mal in den else-Zweig und 49mal in den then-Teil. Da aber in dem then- und else-Zweig je nur eine +Operation steht (Zeile 15, 18), müsste es statt 149 doch schlicht 100 heißen, oder?
Addition/Subtraktion:

100x in Zeile 13
49x in Zeile 15
100x in Zeile 18

Gesamt: 100+49+100=249

Notfalls einfach mal selbst ausprobieren, z.B. mit folgendem Minimalbeispiel:

Code: Alles auswählen

#include <stdio.h>
#include <iostream>

int main(void) {
        int additionen=0,m=0;
        for (int i=100; i>0; i--,additionen++) {
                if (m>50)
                        additionen++;
                additionen++;
                m++;
        }
        std::cout << "Add: " << additionen << std::endl;
        return 0;
}
.jar Head hat geschrieben:Gleiches bei der := Zuweisung. Dort steht "101 + 2*100". 101 sind wohl wieder die int i Zuweisungen. Aber warum 2*100? Ich würde sagen: 51mal den Else-Teil mit je zwei Zuweisungen, und 49mal den Then-Teil mit einer Zuweisung. Macht: 101 + 51*2 + 49*1.
Zuweisungen:
1x für das i=100 in Zeile 13, 100x für das i-- was ja i=i-1 ist.
49x für Zeile 15
51x für Zeile 17
100x für Zeile 18

Gesamt: 1+100+49+51+100=101+2*100=301

.jar Head
Erstie
Erstie
Beiträge: 19
Registriert: 2. Dez 2008 21:42

Re: Ü11

Beitrag von .jar Head » 20. Feb 2011 20:09

ach herrje, ich habe gedacht, der else-Teil sei geklammert {n=n*m; m++;}.
Peinlich...

Antworten

Zurück zu „Eingebettete Systeme 1“