Løsningsforslag for øving 9 TDT4105 IT Grunnkurs Oppgave 1 a) Trådløse Trondheim er et MAN (Metropolitan Area Network) fordi det kun dekker en by, ikke et større område slik som et WAN. b) Båndbredde brukes som et mål på overføringshastighet i et nettverk. En 10MB l overføres på 10 1024 2 8/(1.5 10 6 ) 56 sekunder om man har en forbindelse på 1,5 Mb. c) Et eksempel: Epost kan ofte ha vedlegg som inneholder malware. Brukere kan gjerne være mer skeptiske på ting man åpner av vedlegg, selv om avser er en man kjenner. Flere eksempler nnes i boka på s. 344 og 345. d) Kryptering er prosessen med å gjøre informasjon "uleselig" for en tredjepart. Hensikten er å hindre at en tredjepart kan få sensitive opplysninger de ikke skulle hatt tilgang til, selv om de lytter på kommunikasjonskanalen som er brukt. Symmetrisk kryptering har samme nøkler for både kryptering og dekryptering. Public key encryption bruker en egen nøkkel for kryptering, som gjerne er kjent og delt av mange parter, og en privat nøkkel for dekryptering, som da er hemmelig. Oppgave 2 a) function rows = rowsinfile(filename) file = load(filename); rows = size(file, 1); b) function Numbers = numberstofile(filename) % Lesing fra og analysering av filen file = load(filename); Numbers = zeros(1, 9); for i=1:size(file, 2) for j=1:size(file,1) Numbers(1, file(j, i)) = Numbers(1, file(j, i)) + 1; % Skriving til filen med lavniv? filbehandling 1
output_file = fopen('output.txt', 'w'); for i=1:size(numbers, 2) fprintf(output_file, '%d: %d\n', i, Numbers(1, i)); Oppgave 3 % Thanks to Adrian Kirkeby for contributions to the following solutions. % Read the file fid = fopen('poenggrenser_2011.csv'); if (fid == -1) error('the file cannot be read') % Parse the file input = textscan(fid, '%q %q', 'delimiter', ','); % Create an array where we store all the NTNU grades ntnu_grades = []; accepted_all = 0; % Traverse the parsed results for i=1:length(input{2}) % Get the course grade and name and convert to a string course_grade = char(input{2}(i)); course_name = char(input{1}(i)); % Task a, check total schools which accepted all students if strcmpi(course_grade,'alle'); accepted_all = accepted_all + 1; % Task b, find the average score on NTNU % Check if the course_name starts with NTNU if strncmp(course_name, 'NTNU', 4) % Check if it is possible to convert to double course_grade = str2double(course_grade); if isnan(course_grade) % Do nothing. else % The grade is not 'Alle' and therefore add to the grade array ntnu_grades = [ntnu_grades;course_grade]; 2
% Print the results fprintf('\nantall fag som tok inn alle: %d \n', total); fprintf('gjennomsnittskarakter på NTNU: %f \n', mean(ntnu_grades)); % Close the opened file fclose(fid); Oppgave 4 a) function Timeplan = lestimeplan(filnavn) Timeplan = []; fil_id = fopen(filnavn); linje = fgetl(fil_id); for dag=1:5 dagens_emner = regexp(linje, ',', 'split'); Timeplan = [Timeplan;dagens_emner]; linje = fgetl(fil_id); b) function timeplan = setttidspunkt(timeplan, dag, slot, fag) if strcmp(dag, 'Mandag') dag_index = 1; elseif strcmp(dag, 'Tirsdag') dag_index = 2; elseif strcmp(dag, 'Onsdag') dag_index = 3; elseif strcmp(dag, 'Torsdag') dag_index = 4; elseif strcmp(dag, 'Fredag') dag_index = 5; timeplan{dag_index, slot} = fag; c) function fil = lagretimeplan(timeplan, filnavn ) fil = fopen(filnavn, 'w'); for dag=1:size(timeplan, 1) for emne=1:size(timeplan, 2) fprintf(fil, '%s,', Timeplan{dag, emne}); fprintf(fil, '\n'); fclose(fil); 3
d) function [] = printtimeplan(timeplan) disp(timeplan); for dag=1:size(timeplan, 1) if dag == 1 disp('mandag:'); elseif dag == 2 disp('tirsdag:'); elseif dag == 3 disp('onsdag:'); elseif dag == 4 disp('torsdag:'); elseif dag == 5 disp('fredag:'); for slot=1:size(timeplan, 2) if strcmp(timeplan{dag, slot}, '') continue; klokkeslett = ''; if slot == 1 klokkeslett = '0800'; elseif slot == 2 klokkeslett = '0900'; elseif slot == 3 klokkeslett = '1000'; elseif slot == 4 klokkeslett = '1100'; elseif slot == 5 klokkeslett = '1200'; elseif slot == 6 klokkeslett = '1300'; elseif slot == 7 klokkeslett = '1400'; elseif slot == 8 klokkeslett = '1500'; fprintf('%s - %s\n', klokkeslett, Timeplan{dag, slot}); e) function [] = meny() Timeplan = 0; valg = 1; while valg > 0 disp('0) Avslutt'); 4
disp('1)?pne timeplan fra fil'); disp('2) Lagre timeplan til fil'); disp('3) Vis timeplan'); disp('4) Legg til/fjern time'); valg = input('ditt valg: '); if valg == 0 break; elseif valg == 1 filnavn = input('skriv inn filnavnet du vil laste: '); Timeplan = lestimeplan(filnavn); elseif valg == 2 filnavn = input('skriv inn filnavnet du vil lagre: '); lagretimeplan(timeplan, filnavn); elseif valg == 3 printtimeplan(timeplan); elseif valg == 4 dag = input('ukedag: '); slot = input('time slot (1-8): '); fag = input('skriv inn fagkode (tom streng for fri): '); Timeplan = setttidspunkt(timeplan, dag, slot, fag); 5