C Dynamische Speicherverwaltung Anwendung mittels Strukturen?

azdr

Lieutenant
Registriert
Feb. 2005
Beiträge
685
Hi

Ich habe da ein Problem bezüglich der Dynamischen Speicherverwaltung.

Wie stelle ich die Reservierung des Speichers bei 2 Dimensionalen Arrays mittels Strukturen an.

bzw. wie müsste ich das hier in meinem Programm umschreiben, ich hab mal was versucht aber ich bekomme ne Errormeldung raus. ("`FloatNumbers' in something not a structure or union ")
die relevanten Sachen sind rot makiert.

sonst funktioniert das Programm abgesehen von der Speicherverwaltung.




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

enum
{ 
    MAX=1000,
    Generiere=0,
    LeseSortiere=1
};

struct SortiereFloatZahlen
{[COLOR="Red"]
    double *FloatNumbers[MAX];[/COLOR]
    long Lenge;   
};


struct SortiereFloatZahlen Floats[MAX];


[COLOR="Red"]long dynamische_speicher(struct SortiereFloatZahlen Floats[]);[/COLOR]
double GenerateFloat();
long ReadFile(struct SortiereFloatZahlen Floats[]);
long Sortiere (struct SortiereFloatZahlen Floats[],long y);

int main(int argc, char *argv[])
{ 
    long y=0;

   [COLOR="red"] dynamische_speicher(Floats);[/COLOR]
    
    #if Generiere
    GenerateFloat();
    #endif
    
    #if LeseSortiere
    y=ReadFile(Floats);
    Sortiere(Floats,y);
    #endif
  
  system("PAUSE");	
  return 0;
}

[COLOR="red"]long dynamische_speicher(struct SortiereFloatZahlen Floats[])
{
    
    Floats.FloatNumbers=malloc( MAX*sizeof(int)); [B]--> FEHLERMELDUNG[/B]
    if (Floats.FloatNumbers==NULL)
    {
        printf("Allozieren fehlgeschlagen");

    }else printf("alloziert!!!");
    
}[/COLOR]

double GenerateFloat()
{
    double zufall,erg;
    long i,y=0,w=0,p=0,enter=0;
    char ch[100];
    double x[100];
    FILE *datei;
    datei=fopen("SORT.txt", "w");
	
    do
    {   p++;
        enter++;
        zufall=(rand()%100)+1;
        erg=zufall/1.456;
        printf("%.2lf, ",erg);
        fprintf(datei,"%.2lf;",erg);
        if(enter==4){fprintf(datei,"\n");enter=0;}
    }while (p<15);
    fclose(datei);

}


long ReadFile(struct SortiereFloatZahlen Floats[])
{
    FILE *datei;
    datei=fopen("SORT.txt", "r");
    char zeichen[MAX],tmpz;
    long y=0,x=1,lenge=0,z=0,LEERZ=0,i,pos,len=0;
    
    //Ermittlung der Zeilenlenge
    for (i=0;tmpz!=EOF;i++)
    {
        tmpz=fgetc(datei);
        if (tmpz=='\n'){y++;x=1;}
        if (tmpz==';')Floats[y].Lenge=x++;
    }
    
    
fclose(datei);
x=0;
y=0; 
datei=fopen("SORT.txt", "r");

    
    do
    {
         

        if (Floats[y].Lenge==x){y++;z++;x=0;}
        fscanf (datei,"%[^;]s ",&zeichen);
        Floats[y].FloatNumbers[x]=atof(zeichen);
        x++;
        fseek(datei,1, SEEK_CUR);

    }while(fscanf (datei,"%[^;]s ",&zeichen)!=EOF);
 
 
    for  (z=0;z<=y;z++)
    {
        printf("POS[%ld]:",z);   
        for (x=0;Floats[z].FloatNumbers[x]!=0;x++)
        {
            printf("%lg ",Floats[z].FloatNumbers[x]);    
        }
        printf("\n");
    }
    return(y);
    
}
long Sortiere (struct SortiereFloatZahlen Floats[],long y)
{
   long a=0,b=0,c=0,z=0,x=0;
   double Zwischenspeicher= 0;
   
  do
  {
        for (a=0;Floats[c].FloatNumbers[a]!=0;a++)
        {   
            
            while(1)
            {
                for (b=0;Floats[z].FloatNumbers[b]!=0;b++)
                {
                    if (Floats[c].FloatNumbers[a]>Floats[z].FloatNumbers[b])
                    {
                        Zwischenspeicher=Floats[c].FloatNumbers[a];  
                        Floats[c].FloatNumbers[a]=Floats[z].FloatNumbers[b];
                        Floats[z].FloatNumbers[b]=Zwischenspeicher;
                    }   
                }
                if (y==z) {z=0;break;}
                z++;
            }
        }
        c++;
    }while(y+1!=c);

printf("\n\nSORTIERT\n");
    for  (z=0;z<=y;z++)
    {
        printf("POS[%ld]:",z);   
        for (x=0;Floats[z].FloatNumbers[x]!=0;x++)
        {
            printf("%lg ",Floats[z].FloatNumbers[x]);    
        }
        printf("\n");
    }
}
 
Du hast Floats als ein Array von SortiereFloatZahlen deklariert. Dementsprechend hat Floats auch kein Element FloatNumbers.
 

Ähnliche Themen

D
Antworten
19
Aufrufe
3.353
deep90sravioli
D
Zurück
Oben