Avatar billede shj Nybegynder
26. oktober 1999 - 13:02 Der er 4 kommentarer og
1 løsning

en lille udfordring til jer profer

Opgave 6

I et program foreligger funktionen endevend der kan "vende" et array, så den værdi, der før stod sidst nu står først, den der stod næstsidst står nummer 2 osv. Programmet kan også anvendes så indholdet af et array kopieres over i et andet, bare endevendt.

#define limit 10000

struct vektor_type
{
  int vektor[limit];
};

void endevend(vektor_type fra,vektor_type til)
{
  int i;
  for (i=0;i<limit;i++) fra.vektor[i]=til.vektor[limit-i-1];
}


Opgave 6.1 Forsøg på optimering
Firmaet ansætter en håbefuld programmør, der ønsker at effektivisere programmet. Da det kræver en større kopiering at have et array n vektor som valueparameter (dvs alle parametre kopieres på en stak), ændrer han proceduren således (begge parametre er nu pointere).

#define limit 10000

struct vektor_type
{
  int vektor[limit];
};

void endevend(vektor_type *fra,vektor_type *til)
{
  int i;
  for (i=0;i<limit;i++) fra->vektor[i]=til->vektor[limit-i-1];
}


Proceduren er nu hurtigere og kræver mindre plads, men virker ikke længere i alle tilfælde.
Hvad har han overset?

Jeg har ikke selv gennemskuet opgaven endnu, det er ikke meningen har man skal bruge kompiler, men blot besvare spørgsmålet. Da dette ikke er et direkte problem vil jeg ikke sætte mere en 15 point på højkant

Hilsen Simon
Avatar billede soepro Nybegynder
26. oktober 1999 - 13:34 #1
Han har glemt at "de-referere" sine overførte pointere, sådan at det er VÆRDIEN af pointeren og ikke INDHOLDET af det som den peger på han ændrer.

Skidtet skal ændres til:

#define limit 10000

struct vektor_type
{
  int vektor[limit];
};

void endevend(vektor_type *fra,vektor_type *til)
{
  int i;
  for (i=0;i<limit;i++) *fra->vektor[i]=*til->vektor[limit-i-1];
}

'*' betyder indholdet af det som pointeren peger på.
Avatar billede soepro Nybegynder
26. oktober 1999 - 13:35 #2
P.S. Hvad er de vi "profer" er ved at uddanne os til ??? Jeg mener, vi er begyndt at løse opgaver også !?!
Avatar billede shj Nybegynder
26. oktober 1999 - 13:41 #3
soepro<<Jeg læser datmatiker grundlæggende programmering i c++ via fjernundervisning. Jeg satte egentligt  opgaven på eksperten lidt for sjov, men selfølgelig også fordi jeg ikke selv umiddelbart kunne gennemskue den. Og ja du har da fuldstændigt ret, jeg kunne jo have kigget i tidligere besvarelser her på eksperten vedr. "find tekst i fil"
Avatar billede lrj Nybegynder
27. oktober 1999 - 04:56 #4
Jeg mener det er en generel trend at folk kommer med hele problemer, som de forventer løst. Det er sikkert også ok, men man må da kunne forvente at spørgsmål-stilleren har prøvet på at løse problemet selv, og så kommer og spørger om det der bare ikke dutter.

Eller er det mig der er gammeldags?
Avatar billede shj Nybegynder
27. oktober 1999 - 13:53 #5
tænk at jeg for sjov skyld lagde denne lille opgave ind på eksperten og endda satte 15 point på. Når det så er sagt synes jeg det er en smule underligt at begynde at dømme om hvad der er rigtigt og forkert. Man kan jo lade være med at  svare på spørgsmålet og bare konstatere at dette ikke er en opgave central. Er man yderligere irreterere over spørgsmål her på eksperten kan man vel anmode webmasteren om at give den formastelige der har stillet et ukorrekt spørgsmål en næse. Helt ærligt
er det ikke ved at være lidt langt ude.
Jeg kan jo kun sige UNDSKYLD UNDSKYLD UNDSKYLD.
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