Versions Compared

Key

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

Du ønsker å digitalisere din dagbokskriving, og har funnet ut at du vil lage et Matlab-program for å la deg skrive inn hva som helst og som lagrer det du skriver i en fil. Du vil også at programmet automatisk skal markere hvilken dag hver del av dagboka er skrevet. For å gjøre dette, bestemmer du deg for å lage funksjonen skriv_dagbok(filnavn), som

  • Skriver dagens dato til filen, omringet av to linjer med bindestreker slik at det blir et tydelig skille i filen.
  • Skriver alt brukeren skriver inn til dagboka.

Det er viktig at funksjonen ikke sletter det som står i dagboka fra før, men legger det du skriver til slutt i filen. Hvis brukeren skriver inn en tom linje, skal funksjonen avslutte.

Tips: bruk date()-funksjonen for å få dagens dato som en tekststreng.

Videoforklaring (13:40

 

 Utdelt kode

Expand
titleopprett_barnesanger.m
Code Block
titleopprett_barnesanger.m
 

 

...

Del 1 (mm8:ss14)Del 2 (mm5:ss)
  
26)
Widget Connector
urlhttps://www.youtube.com/watch?v=V3Yg1gd52NU
Widget Connector
urlhttps://www.youtube.com/watch?v=8VKUrTIEV9M
Oppgaveintroduksjon, og kode for å håndtere skriving av noe til fil.Kode for å produsere teksten som skal skrives til filen.  

Løsningsforslag

Expand
titleHvis du har prøvd selv, trykk her for å se svaret...
Code Block
titletellskriv_ord.mdagbok.m
function skriv_dagbok(filnavn)
    % 1. Åpne filen
    fd = fopen(filnavn, 'a');
    if fd == -1
        error('Kunne ikke åpne filen %s\n', filnavn);
    end
    
    % 2. Bruke filen
    
    fprintf(fd, '----------------------------------------\n');
    fprintf(fd, '%s\n', date());
    fprintf(fd, '----------------------------------------\n');
    linje = input('', 's');
    while ~isempty(linje)
        fprintf(fd, '%s\n', linje);
        linje = input('', 's');
    end
    
    % 3. Lukke filen
    status = fclose(fd);
    if status == -1
        error('Kunne ikke lukke filen %s\n', filnavn);
    end
end