Avatar billede akilleuz Nybegynder
14. november 2006 - 23:18 Der er 5 kommentarer og
1 løsning

Array og funktion

Hej

Jeg har et lille problem med at få sendt nogle værdier fra et array over i min funktion som ligger i klassen:

klassen ser således ud:

#include "FilProgram.h"

void FilProgram::skrivVardi()
{   
    ofstream myfile;
    myfile.open ("2.txt");
    myfile << vardier[0] << "\n";
    myfile << vardier[1] << "\n";
    myfile << vardier[2] << "\n";
    myfile << vardier[3] << "\n";
    myfile << vardier[4] << "\n";
    myfile << vardier[5] << "\n";
    myfile << vardier[6] << "\n";
    myfile << vardier[7] << "\n";
    myfile.close();
}





og main således:

int main()
{
    FilProgram vis;

    int vardi1 = 1;
    int vardi2 = 2;
    int vardi3 = 3;
    int vardi4 = 4;
    int vardi5 = 5;
    int vardi6 = 6;
    int vardi7 = 7;
    int vardi8 = 8;

    int vardier[] = { vardi1, vardi2, vardi3, vardi4, vardi5,  vardi6, vardi7, vardi8 };

Nogen der ved hvordan man "sender" hele arrayet over i funktionen så ledes at hvis vardi1 ændres til 567 så bliver det smidt over i funktionen igennem arrayet?

Håber i forstår :-)
Avatar billede akilleuz Nybegynder
14. november 2006 - 23:21 #1
glemte lige:

vis.skrivVardi()

i main under arrayet.
Avatar billede bertelbrander Novice
15. november 2006 - 00:43 #2
Du kan sende array'et med over til skrivVardi:
void FilProgram::skrivVardi(int *aArray)
{
  ...
  myfile << aArray[0] << endl;

Men vardier[] er kopier af vardix ikke variablen selv.

Du kan så lave:
int* vardier[] = { &vardi1, &vardi2, ...};

Og
void FilProgram::skrivVardi(int **aArray)
{
  ...
  ...
  myfile << *aArray[0] << endl;
  myfile << *aArray[1] << endl;

Det er ikke kønt, en køn løsning vil afhænge af context.
Avatar billede kenneth_gorking Nybegynder
15. november 2006 - 05:12 #3
Hvis du var villig til at gemme dine værdier i et array istedet, og så lave dine vardi1-vardi8 om til referencer ind i array'et:

    int vardier[] = { 1, 2, 3, 4, 5, 6, 7, 8 };

    int &vardi1 = vardier[0];
    int &vardi2 = vardier[1];
    int &vardi3 = vardier[2];
    int &vardi4 = vardier[3];
    int &vardi5 = vardier[4];
    int &vardi6 = vardier[5];
    int &vardi7 = vardier[6];
    int &vardi8 = vardier[7];

    vis.skrivVardi(vardier);

På denne måde bliver værdien i array'et ændret når du ændrer f.eks. vardi1 til 567, og du kan stadig bruge bertelbrander's forslag om at sende array'et som en pointer:

void FilProgram::skrivVardi(int *aArray)
{
  ...
  myfile << aArray[0] << endl;
  ...
Avatar billede akilleuz Nybegynder
16. november 2006 - 21:39 #4
Jeg er ikke kommet videre, har droppet projektet midlertidigt.

Kan i ikke begge lave et svar så deler i bare points?
Avatar billede bertelbrander Novice
16. november 2006 - 22:05 #5
Jeg samler ikke på  point.
Avatar billede kenneth_gorking Nybegynder
16. november 2006 - 23:23 #6
Joo
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester