![]() |
Hilfe bei Funktionen in C mit Primfaktorzerlegung
Hi
ich soll eine Funktion schreiben welche vom Hauptprogramm aufgerufen wird und eine Primfaktorzerlegung durchfüht. Die Primfaktorzerlegung habe ich bereits geschrieben und funktioniert auch, jetzt muss ich das vorhandene Programm in meine Funktion einbauen. ABER! so dass es unabhängig von der main funktioniert. D.h. die main() wird leer abgegeben. Das Problem ist dass sich meine Funktion eine variable merken muss ohne globale Variable, da die Funktion nach jeder Primzahl wieder "neu startet". Hab das versucht mit einem Zähler der beim ersten aufruf hochzählt, aber es stimmt troztdem hinten und vorne nicht =( Ich hab hier mal mein Code: Die int main ist durch den Prof zum testen vorgegeben
Code:
#include <stdio.h> Hoffe mir kann jemand helfen |
Also so wie die funkton schon anfängt kann es nie funktionieren:
Code:
int n; Falls n mit 0 initialisiert wird hast du da ne endlosschleife |
Zitat:
[Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...] Die rot makierte stelle ist sehr wichtig in C da man Variablen initilisieren muss, sonst kann dort irgendetwas drin stehen und somit wird deine while schleife nicht einmal ausgeführt. In deinem Fall könnte n z.B 3568422 sein sieht man vorallem gut wenn man in Eclipse /VS den Debugger benutzt. Und nur als Tipp der Debugger ist dein bester Freund beim Programmieren!!! Die restlichen Farben sind Anmerkungen. Code:
#include <stdio.h> |
Zitat:
|
sorry ihr habt recht, das n war ein überbleibsel von einem vorherigem test mit einem zähler.
die while hab ich auch nur als Test, sinvoller wär ein if. Etwas durcheinander der Code hätte ihn vorher nochmal schön machen sollen Hier nochmal der Code etwas schöner und leicht verändert: Alles Hinter // ist das entscheidennde Ich suche nach einer Lösung um zahl nur einmal den Wert aus "wert" zuzuweisen. Wenn ich n=0 mache wird n jedes mal beim aufrufen der Funktion 0, und dann funktioniert meine Funktion ja nicht richtig oder? // Ok bei static wird immer mit 0 inizialisiert also ist beim ersten aufruf zahl=0, beim 2ten 6 (sollte zumindest), es kommt aber dauerschleife 2 raus !!!!! WARUM!?!? |
Zitat:
Hier eine rekursive Lösung von mir die läuft wenn ihr math.h verwenden dürft. Dann muss man keine global variable nutzen. iterativ sieht das dann schon wieder anders aus da ist das wesentlich komplizierter. Code:
#include <stdio.h> |
wow cool danke auch gleich ein neuer algorithmus für die primzahlen.
ich weis nicht ob math.h erlaubt ist da der Compiler vom Prof etwas zickig ist. Ich habe seit grade auch eine funktionierende Lösung (wenn auch deutlich komplizierter) Aber viele Dank =) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:29 Uhr. |
Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.