Typumschreibung eines Arrays



  • hallo,
    ich befülle ein Array mit Integer Werten, möchte jedoch für eine weitere Verwendung später Kommazahlen haben.
    Wie ist eine Konvertierung möglich?

    bei diesem Versuch, klappt es leider nicht:

    for (z = 0; z < size; z++) 
       { 
          array[z].key = z; 
          array[z].val = (double((konvArray[z])); 
       } 
    
       /* 'array' sortieren */ 
       qsort(array, size, sizeof (entry), compare_entry);
    

    ich habe zuvor das konvArray als double deklariert, dennoch erhalte ich keine Kommazahlen...



  • mach aus array[z].val ein union{int i,double d}val;



  • union{int i :warning: ; :warning: double d;}val;
    


  • Wie heißt den die Definition/Deklaration von der Variablen array.



  • Das ist als entry deklariert, damit es sortiert wird.
    muss es gleich zu beginn schon ein double sein, damit es funktioniert?
    wie mache ich denn generell aus einem Array mit integereinträgen ein Array mit DoubleEinträgen`?



  • Hilfe22 schrieb:

    Das ist als entry deklariert, damit es sortiert wird.

    Das sagt uns nichts. Wir hätten so etwas wie int array[size]; erwartet.

    Generell:

    /* 1. Variante: 2 verschiedene Arrays */
    int array[size];
    double double_array[size];
    int i;
    ... /* hier array befüllen */
    for (i = 0; i<size; ++i)
      double_array[i] = array[i];
    
    /* 2. Variante: Mit union (schneller und RAM-schonender) */
    union my_union {int i; double d;};
    
    union my_union array[size], *p;
    ... /* hier array befüllen */
    for (i = size; i>=0; --i, ++p)
      p->d = p->i;
    


  • efli schrieb:

    for (i = size; i>=0; --i, ++p)
      p->d = p->i;
    

    hier muss ein i>0 hin, anstatt ein i>=0 .


Log in to reply