firstblood
10-09-2007, 11:05
Die Funktion „Count…“soll die geraden und ungeraden Zahlen zählen!
Die Funktion „partition“ soll über „call by reference“ 2 neue integer felder zurückliefern, mit den geraden und ungeraden Zahlen.
Wäre froh wenn mir jemand helfen könnte!
Hier mal der Code.Fehlermeldung bei der malloc()-Funktion in der Funktion partition():
#include<stdio.h>
#include<stdlib.h>
void CountEvensAndOdds ( int array[], int n, int *numEvens, int *numOdds);
void Partition (int array[], int n, int **evens, int *numEvens, int **odds, int *numOdds);
int main (void)
{
int array[] = {7,4,13,8};
int *evens, *odds; //Zeiger auf Felder mit den ungeraden und geraden Zahlen.
int numEvens = 0;
int numOdds = 0;
int i = 0;
CountEvensAndOdds(array,4,&numEvens,&numOdds);
printf("\nDas Feld enthaelt %d gerade und %d ungerade Zahlen!", numEvens, numOdds);
printf("\n\n\n");
Partition(array, 4, &evens, &numEvens, &odds, &numOdds);
printf("Ausgabe der geraden Zahlen: \n");
for(i=0; i < numEvens; i++)
{
printf("%d\n", evens[i]);
}
printf("Ausgabe der ungeraden Zahlen: \n");
for(i=0; i < numOdds; i++)
{
printf("%d\n", odds[i]);
}
// Felder für die geraden und ungeraden Zahlen..Heap freigegeben
free(evens);
free(odds);
}
void CountEvensAndOdds(int array[], int n, int *numEvens, int *numOdds)
{
int i;
for(i=0;i<n;i++)
{
if((array[i]%2)==0){
(*numEvens)++;
}
else{
(*numOdds)++;
}
}
}
void Partition (int array[], int n, int **evens, int *numEvens, int **odds, int *numOdds)
{
int i,j,k;
CountEvensAndOdds(array,4,numEvens,numOdds);
evens=(int*) malloc(numEvens * sizeof(int));
odds=(int*) malloc(numOdds * sizeof(int));
for(i=0,j=0,k=0;i<n;i++)
{
if((array[i]%2)==0)
{
*evens[j]=array[i];
j++;
}
else {
*odds[k]=array[i];
k++;
}
}
}
Die Funktion „partition“ soll über „call by reference“ 2 neue integer felder zurückliefern, mit den geraden und ungeraden Zahlen.
Wäre froh wenn mir jemand helfen könnte!
Hier mal der Code.Fehlermeldung bei der malloc()-Funktion in der Funktion partition():
#include<stdio.h>
#include<stdlib.h>
void CountEvensAndOdds ( int array[], int n, int *numEvens, int *numOdds);
void Partition (int array[], int n, int **evens, int *numEvens, int **odds, int *numOdds);
int main (void)
{
int array[] = {7,4,13,8};
int *evens, *odds; //Zeiger auf Felder mit den ungeraden und geraden Zahlen.
int numEvens = 0;
int numOdds = 0;
int i = 0;
CountEvensAndOdds(array,4,&numEvens,&numOdds);
printf("\nDas Feld enthaelt %d gerade und %d ungerade Zahlen!", numEvens, numOdds);
printf("\n\n\n");
Partition(array, 4, &evens, &numEvens, &odds, &numOdds);
printf("Ausgabe der geraden Zahlen: \n");
for(i=0; i < numEvens; i++)
{
printf("%d\n", evens[i]);
}
printf("Ausgabe der ungeraden Zahlen: \n");
for(i=0; i < numOdds; i++)
{
printf("%d\n", odds[i]);
}
// Felder für die geraden und ungeraden Zahlen..Heap freigegeben
free(evens);
free(odds);
}
void CountEvensAndOdds(int array[], int n, int *numEvens, int *numOdds)
{
int i;
for(i=0;i<n;i++)
{
if((array[i]%2)==0){
(*numEvens)++;
}
else{
(*numOdds)++;
}
}
}
void Partition (int array[], int n, int **evens, int *numEvens, int **odds, int *numOdds)
{
int i,j,k;
CountEvensAndOdds(array,4,numEvens,numOdds);
evens=(int*) malloc(numEvens * sizeof(int));
odds=(int*) malloc(numOdds * sizeof(int));
for(i=0,j=0,k=0;i<n;i++)
{
if((array[i]%2)==0)
{
*evens[j]=array[i];
j++;
}
else {
*odds[k]=array[i];
k++;
}
}
}