You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

a)

For dato:

function serialized = serializeDate ( date )
	d = int2str ( date . day );
	m = int2str ( date . month );
	y = int2str ( date . year );
	datestring = sprintf('%02i.%02i.%02i', d,m,y);
end

Eller:

 function serialized = serializeDate ( date )
    d = int2str ( date . day );
    m = int2str ( date . month );
    y = int2str ( date . year );
    if date . day < 10
        d = strcat ('0', d);
    end
    if date . month < 10
        m = strcat ('0', m);
    end
    serialized = strcat (d, '.', m, '.', y);
end

 

For person:

function [ personSerial ] = serialize_person( person )
	personSerial = sprintf('%s#%s#%s',person.name, serializeDate(person.dateOfBirth), person.phone);
end

Eller:

function serialized = serializePerson ( person )
	n = person. name ;
	d = serializeDate (person.dateOfBirth);
	p = int2str(person.phone);
	serialized = strcat(n, '#', d, '#', p);
end


b)

Har mange løsninger. Deriblant: 

function deserialized = deserializeDate ( date )
	[tok, rest] = strtok(date, '.');
	d = str2num(tok);
	[tok, rest] = strtok(rest, '.');
	m = str2num(tok);
	tok = strtok(rest, '.');
	y = str2num(tok);
	deserialized = struct('day', d, 'month', m, 'year', y);
end 
function deserialized = deserializePerson ( person )
	[tok, rest] = strtok(person, '#');
	n = tok ;
	[tok, rest] = strtok(rest, '#');
	d = deserializDate(tok);
	tok = strtok(rest, '#');
	p = str2num(tok);
	deserialized = struct('name', n, 'dateOfBirth', d, 'phone', p);
end

Eller:

function [ dStruct ] = deserializeDate( datestring )
	[day, month, year] = strsplit(datestring, '.');
	dStruct=struct('day', day, 'month', month, 'year', year);
end
 function deserialized = deserializePerson ( person )
	[name, dateSerial, phone] = strsplit(person, '#');
	date = deserializDate(dateSerial);
	deserialized = struct('name', name, 'dateOfBirth', date, 'phone', phone);
end

c)

function store ( filename , persons )
	fileID = fopen ( filename , 'w');
	for p = persons
		fprintf ( fileID , '%s\n', serializePerson (p));
	end
	fclose ( fileID );
end

d)

function listOfPersons = loadfile ( filename )
	listOfPersons = [];
	fileID = fopen ( filename , 'r');
	line = fgets ( fileID );
 
	while ischar ( line )
		person = deserializePerson ( line );
		listOfPersons = [ listOfPersons person ];
		line = fgets ( fileID );
	end
	fclose ( fileID );
end
  • No labels