Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Theoretische Informatik (http://www.informatikerboard.de/board/board.php?boardid=5)
--- Analyse eines Codes (http://www.informatikerboard.de/board/thread.php?threadid=689)


Geschrieben von Scope am 16.04.2010 um 17:22:

  Analyse eines Codes

hallo zusammen,

ich habe eine kleine Frage.
Ich habe einen kleinen Code:
code:
1:
2:
3:
4:
5:
6:
7:
for (int i = 2; i <= n; i++){
    for (int j = i; j <= n; j = j*i){
        print "Answeisung";
    }
}


Das ist jetzt keine bestimmte Programmiersprache oder so. Ich möchte jetzt gerne analyisieren, wie oft
code:
1:
print "Anweisung"
aufgerufen wird.

Vielen Dank im voraus

Gruß

Scope



Geschrieben von ed209 am 18.04.2010 um 15:25:

 

Ich würde erst herausfinden wie oft die innere Schleife abhängig von i und n aufgerufen wird, das Ergebnis dann c(i,n) nennen und dann mittels Summenzeichen das ganze für die äussere Schleife abhängig von n machen.

Gruß,
ED



Geschrieben von zw3rgy am 30.05.2010 um 14:32:

 

Vielleicht schon was her aber trotzdem Augenzwinkern

erstens das sieht mir sehr nach c++ aber egal schon allein der inkrementoperator ++

naja...

also um das rausfinden zu können müsste man schon wissen welchen wert n hätte

weil n die zählervairable für die erste for schleife ist und diese wird nur solange ausgeführt WIE i kleiner gleich n ist wäre also n z.b. 0 und i = 1 dann würde wohl garnichts ausgeführt .

und es ist ganz simpel die frage generell zu beantworten:

du hast es ja schon schön mit den geschweiften klammern dargestellt...


{main funktion
{erste anweisung -> schleife -> ein schleifendurchgang okay ...
{ hier kommt noch ne schleife die sagt ich führe meine unteranweisung solange aus bis ich fertig bin und ERST wenn ich hier printf so und solange ausgeführt habe dann gebe ich der mich aufrufenden schleife zurück ich bin fertig und dann sagt die aufrufende schleife halt! stopp! aber ich muss mich noch n mal aufrufen und solange geht das dann halt weiter bis die oberste schleife zu ende gelaufen ist dann springt sie letztendlich zu dem sternchen mit der nummer 1 und führt noch das aus was da ist in unserem fall jetzt nichts, also stände dort bloß... return 0; und so bekommt die main funktion dann den wert 0 zurück und beendet sich ENDE
}
}
*1
return 0; <- HIER IST ENDE
}

der lange text zwischen den klammern erklärt auch ein paar dinge außerhalb der klammern also nicht verwirren lassen. Augenzwinkern

mfg zw3rgy

editiert: grund zu viele smileys lol


Forensoftware: Burning Board, entwickelt von WoltLab GmbH