GCC-Error beim Compilen

...komplette Frage anzeigen Coding! Wo ist der Fehler? - (programmieren, Error, GC)

2 Antworten

Wenn du den Code hier auch mal als Text (in Code-Tags, wie die Fehlermeldung!) reinschreiben würdest, dann könnte man das ja mal selber ausprobieren... die Fehlermeldung sagt nur, dass die main-Funktion nicht gefunden wird.

Wollte ich anfangs vermeiden, da meine uni spezielle software nutzt um plagiate zu finden, aber was solls ist ja eh meiine Code

#include <stdio.h>
#include <math.h>

//prime_upper_limit = digit sum of 1231284
double prime_upper_limit = 21.000;
//actual number to check
double check_number = 0.000;
double output_variable = 0;

int main()
{

  while(check_number < prime_upper_limit)
  {
    check_number = check_number + 1;

    if (check_number/1 = check_number && check_number/check_number = 1);
    {
      output_variable = check_number * check_number;
      printf("%d\n",output_variable);
      return 0;
    }
    else
    {
      output_variable = sqrt(check_number);
      printf("%d\n",output_variable);
      return 0;
    }
  }
}
0
@BackUpboy

Hinter dem ersten if muss das Semikolon weg, deine Bedingungsüberprüfungen in den ifs sind alle falsch (== statt =).

Davon mal abgesehen wird die erste Bedingung immer erfüllt sein, da eine Zahl x/1 immer x und x/x immer 1 ergibt (x heißt in deinem Fall "checknumber"). Das printf und das return wird in beiden Zweigen ausgeführt, das kannst du auch einmal ausserhalb des if-else-Blockes schreiben.

0
@ceevee

achja, und beim compilen musst du darauf achten, dass du den Parameter -lm angibst (wegen math.h), also

gcc ./gf.c -lm

Und wegen der returns in der while-Schleife wird diese auch sofort abgebrochen...

0
@ceevee

Danke! Funktioniert noch immer nicht! Diese verdammte Probedivision arggggg

#include <stdio.h>
#include <math.h>

//prime_upper_limit = digit sum of 1231284
double prime_upper_limit = 21.000;
//actual number to check
double check_number = 0.000;
double output_variable = 0;

int main()
{

  while(check_number < prime_upper_limit)
  {
    check_number = check_number + 1;

    if (check_number % 1 == check_number && check_number % check_number == 1)
    {
      output_variable = check_number * check_number;
      printf("%d\n",output_variable);
    }
    else
    {
      output_variable = sqrt(check_number);
      printf("%d\n",output_variable);
    }
    return 0;
  }
}
0
@ceevee
#include <stdio.h>
#include <math.h>

//prime_upper_limit = digit sum of 1231284
double prime_upper_limit = 21.000;
//actual number to check
double check_number = 0.000;
double output_variable = 0;

int main()
{

  while(check_number < prime_upper_limit)
  {
    check_number = check_number + 1;

    if (check_number % 1 == check_number && check_number % check_number == 1)
    {
      output_variable = check_number * check_number;
      printf("%d\n",output_variable);
    }
    else
    {
      output_variable = sqrt(check_number);
      printf("%d\n",output_variable);
      return 0;
    }

  }
} 

doesnt work!!! (Ich bin ein komplettter Anfänger (mein zweites Programm überhaupt!!!!

0
@BackUpboy

Funktioniert zwar auch nicht aber ich glaube ich komme der Sache näher! Noch irgendwelche Ratschläge?

#include <stdio.h>
#include <math.h>

//prime_upper_limit = digit sum of 1231284
double prime_upper_limit = 21.000;
//actual number to check
double check_number = 0.000;
double output_variable = 0;

int main()
{

  while(check_number < prime_upper_limit)
  {
    check_number = check_number + 1;

    if (check_number % 1 == check_number && check_number % check_number == 1)
    {
      output_variable = check_number * check_number;
    }
    else
    {
      output_variable = sqrt(check_number); 
    }
    printf("%d\n",output_variable); 
  }
return 0;
}
0
@BackUpboy

Nochmal, das return muss raus aus der While-Schleife! Am besten setzt du das ans Ende der Main-Funktion (also vor die letzte geschweifte Klammer). Und die if-Bedingung ist auch mit Modulo immer erfüllt. Wie du mit dem Programm Primzahlen ermitteln willst, ist mir auch ein Rätsel, ein einfacher Primzahltest sieht so aus:

#include <stdio.h>

//prime_upper_limit = digit sum of 1231284
int prime_upper_limit = 21;

int main()
{
  int checknumber = 2;
  int temp = 0;
  int isPrim = 1;

  for(checknumber = 2;checknumber<=prime_upper_limit;checknumber++)
  {
    isPrim = 1;
    for(temp = 2;temp<checknumber;temp++)
    {
      if(checknumber % temp == 0)
      {
    printf("%i ist keine Primzahl\n",checknumber);
    isPrim = 0;
    break;
      }
    }
    if(isPrim == 1)
    {
      printf("%i ist eine Primzahl\n",checknumber);
    }
  }
  return 0;
}
0

Was genau soll dein Programm überhaupt bewirken? Wenn Niemand weiß, was dein Programm machen soll, kann dir auch Niemand helfen

;) sorry

Es soll sämtliche von 0(bzw. 2) bis zu primeupperlimit auf primzahlen untersuchen mithilfe der Probedivision. Sollte es sich um eine Primzahl handeln wird diese quadriert, wenn nicht wird die wurzel aus dieser zahl ausgegeben.

0
@BackUpboy

Jetzt ergibt alles einen Sinn XD

Ich würde sagen es handelt sich um einen Formalen Fehler, in deiner Rechnung kann ich keinen erkennen. Worin genau dein Fehler besteht kann ich dir leider nicht sagen.

0

Was möchtest Du wissen?