Pascalilla olen tehnyt liikevaihto -ohjelman ja nyt koitan kääntää sitä C:lle, mutta joitain epäkohtia on jotka on jäänyt tunneilla käymättä. Oletettavasti nämä kuitenkin C:lläkin onnistuvat.
Ongelma tuossa kuinka saan C:llä määritettyä intTaulukko tyyppisen muuttujan?
Pascal -versio:
type intTaulukko = array[1..12] of integer; tietueLiikevaihto = record Vuosi : Integer; Esimies : String[20]; liikevaihtoKK : intTaulukko; end; lTaulukko = array[1..lmax] of tietueliikevaihto;
C -versio: ???
struct tietueliikevaihto
{
int vuosi;
char esimies[nimi_max+1];
// intTaulukko liikevaihtoKK; ???
}h;
struct tietueliikevaihto lTaulukko[lmax];Määritä liikevaihtoKK suoraan taulukkona
typedef struct{
int vuosi;
char esimies[nimi_max+1];
int liikevaihtoKK[12];
}tietueliikevaihto;Tai jos haet tapaa, jolla voi määritellä sen useaan paikkaan mutta muuttaminen vain yhdestä paikasta, niin käytä vaikka toista structia tai makroa:
/* struct */
typedef struct{
int arvot[12];
}intTaulukko;
typedef struct{
int vuosi;
char esimies[nimi_max+1];
intTaulukko liikevaihtoKK;
}tietueliikevaihto;
/* ..jolloin osoittaminen tapahtuu sitten esim.
ITaulukko[x].liikevaihtoKK.arvo[0]...
*/
/* Makro */
#define intTaulukko(nimi) (int nimi[12])
typedef struct{
int vuosi;
char esimies[nimi_max+1];
intTaulukko(liikevaihtoKK);
}tietueliikevaihto;
/* Jolloin rakenteessa on liikevaihtoKK-taulukko, jossa on 12 alkiota. */Aihe on jo aika vanha, joten et voi enää vastata siihen.