Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

...

Del 1 (5:36)Del 2 (6:38)Del 3 (8:34)
Widget Connector
urlhttps://www.youtube.com/watch?v=MqQV9YVEyCI
Widget Connector
urlhttps://www.youtube.com/watch?v=O7Tpj-7ndpI
Widget Connector
urlhttps://www.youtube.com/watch?v=qGhENw4UKrk
Oppgaveintroduksjon, og litt om lesing av oppgavetekst på
eksamen.

Opprett struct fra bruker-innputt (oppgave 2a).

Lesing og konvertering av linjer i fil til struct-verdier
(oppgave 2b, del 1).
   
Del 4 (6:41)Del 5 (9:39)Del 6 (13:29)
Widget Connector
urlhttps://www.youtube.com/watch?v=nIdrrfd12go
Widget Connector
urlhttps://www.youtube.com/watch?v=oHyB0gcTiSQ
Widget Connector
urlhttps://www.youtube.com/watch?v=SsgtEzXIpbA
Kode for å lage en struct-vektor gradvis i en while-løkke
(oppgave 2b, del 2).
Kode for formattert utskrift av struct-verdier, og for-løkke for å
gå gjennom alle element i en struct-vektor (oppgave 2c).
Kode for å skrive en struct-verdi som tekst til fil (oppgave 2d).   

Løsningsforslag

Expand
titleHvis du har prøvd selv, trykk her for å se svaret...
Expand
titleOppgave 2a)
Code Block
titleinputPerson.m
 function retur = inputPerson()
    retur.name = input('Name: ', 's');
    retur.id = input('ID: ', 's');
    retur.weight = input('Kg: ');
    retur.size = input('Size: ');
end 
Expand
titleOppgave 2b)
Code Block
titlereadDbFile.m
 function retur = readDbFile(filename)
    % 1. Åpne filen
    fd = fopen(filename, 'r');
    
    retur = struct('name', {}, 'id', {}, 'weight', {}, 'size', {});
    % 2. Bruk filen
    linje = fgetl(fd);
    while ischar(linje)
        % Behandle linjen
        felt = strsplit(linje, ';');
        medlem.name = felt{1};
        medlem.id = felt{2};
        medlem.weight = str2double(felt{3});
        medlem.size = str2double(felt{4});
        retur(end + 1) = medlem;
        linje = fgetl(fd);
    end
    
    % 3. Lukk filen
    fclose(fd);
end 
Expand
titleOppgave 2c)
Code Block
titleprintMemberList.m
 function printMemberList(db)
    fprintf('%15s%9s VEKT kg. SKJERMSTØRRELSE\n', 'NAVN', 'ID-NR');
    for i = 1:length(db)
        p = db(i);
        fprintf('%15s%9s%5d kg. %4d kvadratfot\n', p.name, p.id, p.weight, p.size);
    end
end 
Expand
titleOppgave 2d)
Code Block
titleaddPerson.m
 function retur = addPerson(filename)
    person = inputPerson();
    db = readDbFile(filename);
    db(end + 1) = person;
    retur = db;
    
    % 1. Åpne filen
    fd = fopen(filename, 'a');
    % 2. Bruk filen
    
    fprintf(fd, '%s;%s;%d;%d\n', person.name, person.id, person.weight, person.size);
    
    % 3. Lukk filen
    fclose(fd);
end