SparkMonkay
Commander
- Registriert
- Feb. 2013
- Beiträge
- 2.337
Moinsen,
nachdem ich länger mit Java unterwegs war darf ich wieder C Programmieren. Jetzt will ich auch mal wieder in C rein kommen und dachte mir:"Programmierste mal was schönes."
Ein Programm welches Primzahlen "findet" erschien mir als richtig.
Wie habe ich es mir gedacht:
Also: Ein Nutzer gibt eine Zahl ein, die z.B. größer gleich 2 ist.
Dann weise ich der Variable end diesen Wert zu.
dann sollte eine for-Schleife kommen, mit der ich das bis end durchlaufe.
Ich habe ein Array oben, mit dem was ich mir aus dem netten Internet rausgelesen habe, habe ich es jetzt soweit hinbekommen. Der Plan ist: Wenn eine Primzahl gefunden wurde dann soll das Array primes[ ] gemalloct und freet werden, die innreren Array-Elemente ebenfalls. Dann setze ich den Array-Counter um einen höher, dann erstelle ich "int **primes[2]", denn pCounter ist dann auf 2. Ich kopiere dann meine Werte aus "primesBackup" zu "primes" und an die letzte Stelle kommt dann meine Primzahl hin.
Was ist mein Fehlercode:
Habe ich jetzt malloc und free falsch verstanden? Denn so wie ich es verstehe nehmen die das was ich will sozusagen aus dem Speicher raus.
MfG Spark
nachdem ich länger mit Java unterwegs war darf ich wieder C Programmieren. Jetzt will ich auch mal wieder in C rein kommen und dachte mir:"Programmierste mal was schönes."
Ein Programm welches Primzahlen "findet" erschien mir als richtig.
Code:
#include <stdio.h>
#include <stdlib.h>
int main()
{
/***************************************************************************
*@pCounter Zähler für die Anzahl meiner Primzahlen(u.A. größe des Array's)
*@startelement Das erste Element bzw die erste Primzahl
*@end Bis wohin soll das ganze gehen?
***************************************************************************/
int pCounter=1;
int startelement=2;
int end;
/*****************************************************************************
*@primes Haupt-Array wo meine Zahlen drinnen sind
*@primesBackup Backup-Array, wenn es gemalloct und freet werden soll, soll
* hierrüber die Elemente dann in den "neuen" Haupt-Array kopieren
*****************************************************************************/
int **primes[1];
int **primesBackup[1];
*primes[0] =&startelement;
*primesBackup[0]=&startelement;
printf("Bis zu welcher Zahl die Primzahlen ausgeben?");
scanf("%d\n", &end);
printf("The first prime ist %d\n",**primes[0] );
primes=malloc(sizeof(int *));
if(primes==NULL)
{
printf("primes couldn't been malloced ERROR");
return 1;
}
primes[0]=malloc(sizeof(int));
if(primes[1]==NULL)
{
printf("primes at X couldn't been malloced ERROR");
return 1;
}
free(primes);
free(primes[0]);
return 0;
}
Wie habe ich es mir gedacht:
Also: Ein Nutzer gibt eine Zahl ein, die z.B. größer gleich 2 ist.
Dann weise ich der Variable end diesen Wert zu.
dann sollte eine for-Schleife kommen, mit der ich das bis end durchlaufe.
Ich habe ein Array oben, mit dem was ich mir aus dem netten Internet rausgelesen habe, habe ich es jetzt soweit hinbekommen. Der Plan ist: Wenn eine Primzahl gefunden wurde dann soll das Array primes[ ] gemalloct und freet werden, die innreren Array-Elemente ebenfalls. Dann setze ich den Array-Counter um einen höher, dann erstelle ich "int **primes[2]", denn pCounter ist dann auf 2. Ich kopiere dann meine Werte aus "primesBackup" zu "primes" und an die letzte Stelle kommt dann meine Primzahl hin.
Was ist mein Fehlercode:
Code:
primes.c: In function ‘main’:
primes.c:33:8: error: incompatible types when assigning to type ‘int **[1]’ from type ‘void *’
primes=malloc(sizeof(int *));
^
Habe ich jetzt malloc und free falsch verstanden? Denn so wie ich es verstehe nehmen die das was ich will sozusagen aus dem Speicher raus.
MfG Spark