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, 22:18   #3
Matze500
Student der Informatik
 
Registriert seit: Jul 2010
Ort: NRW nähe Münster ;)
Beiträge: 355
Bedankt: 261
Matze500 ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
n wurde nicht initialisiert also dürfte das programm überhaupt nicht kompiliert werden.
natürllich wir kompiliert ist kein "Fehler" an sich jedoch kann irgendetwas in n stehen.

[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu 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>
#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 n = 0; //wichtig sonst kann irgendetwas darin stehen in C!!!
     int zahl; // static braucht man eigentlich nicht
while (n<1)  //while Schleife bis jetzt auch noch unsinnig da du nichts mit n machst bring auch nur was bei arrays also int primfaktor(int *werte)
{
   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; //kann man auch so schreiben t+=1; oder t++;(Inkrementation um 1)
                   x=erg%t;
                   if (t==zahl) 
                   {
                        x=0;
                   }
             }
       }
       
           
   }
  return -1;     //test falls Funktion mal durchläuft
           
}
__________________
[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]
Powered by Windows 7
Matze500 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 22:47 Uhr.


Sitemap

().