myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Computer & Technik > Programmierung
Seite neu laden

Hilfe bei Funktionen in C mit Primfaktorzerlegung

Willkommen

myGully

Links

Forum

 
 
 
Themen-Optionen Ansicht
Prev Vorheriger Beitrag   Nächster Beitrag Next
Ungelesen 06.12.13, 16:17   #1
Fre4krider
Fragger
 
Benutzerbild von Fre4krider
 
Registriert seit: Nov 2010
Ort: BW
Beiträge: 48
Bedankt: 11
Fre4krider ist noch neu hier! | 0 Respekt Punkte
Standard 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
  • -1 wenn die letzte mögliche Primzahl errechnet wurde solange bis neue zahl eingegeben wird
  • -2 Im Fehlerffall (zahl<2)

Code:
#include <stdio.h>
#include <stdlib.h> //entfernen

int primfaktor(int);

int main()
{
    int pf ;
    while ((pf = primfaktor(12))>1)
          printf("%d\n", pf) ;
    while((pf = primfaktor(7))>1)
              printf("%d\n", pf) ;
              printf( "%d\n", primfaktor(1));
  
  system("PAUSE");	//entfernen
  return 0;
}





int primfaktor (int wert)
{  //int zahl=wert;
     int n;
     static int zahl;
while (n<1)
{
   zahl=wert;
}
 
 
  int erg, t, x;
  
  if (zahl<2)
  {
  return -2;
  }
  else
  {
       t=2;
       erg=zahl;

       while (zahl>t)
       {
             x=erg%t;
             while (x==0)
             {
                   erg=erg/t;
                   x=erg%t;     
                   return t;
                     
             }
             while (x>0)
             {
                   t=t+1; 
                   x=erg%t;
                   if (t==zahl) 
                   {
                        x=0;
                   }
             }
       }
       
           
   }
  return -1;     //test falls Funktion mal durchläuft
           
}
So kommt nur -2 raus, aber eigentlich sollte return t; doch einen Teiler ausgeben!?!?
Hoffe mir kann jemand helfen
Fre4krider ist offline   Mit Zitat antworten
 


Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:39 Uhr.


Sitemap

().