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.