MATLAB Answers

How do I ask the user for a persons name and output the birthday of the person?

17 ビュー (過去 30 日間)
Nathan Kidd
Nathan Kidd 2018 年 4 月 6 日
回答済み: Elias Gule 2018 年 4 月 6 日
I am working on an assignment where I am given a .csv file with names in column one, birthmonth in column 3, and birthday (day of month) in column 4. I have to do a lot of things but what I am having trouble doing is making a system that allows the user to input a name and receive the birthday.
Eventually I put the birthday in a format that is simply days into the year (jan 5 = 5, Dec 31 = 365) and compare that to today's date to see how many days have passed/have yet to come since/until the persons birthday.
to put it simply, the user must: input a name, receive birthday (in the weird format).
Here is what I have so far, but I can't get it to work and I don't even think I'm on the right track:
input_file='employees.csv'; % in these lines I attempt to read the .csv
file=fopen(input_file); % into the program
data=textscan(file,'%s%s%d%d%f','delimiter',','); % I use a , delimiter
fclose(file); % close the file because that's just what you do
num_rows=size(data{1}); % This finds the number of rows in the .csv
employee.first_name=data{1}; % this creates a structure full of first names?
for i=1:num_rows % This prints out the whole .csv file
fprintf('%s %s, ',data{1}{i},data{2}{i});
fprintf('%d/%d %.2f\n',data{3}(i),data{4}(i),data{5}(i));
end
%this outputs:
%Donald Trump, 6/14 400000.00
%Mickey Mouse, 11/18 10000.00
%Ada Lovelace, 12/10 5000.00
%Justin Bieber, 3/1 125000.00
%Benjamin Franklin, 1/17 15000.00
%Angela Merkel, 7/17 234400.00
%columns 1 through 5 are: firstname, lastname, birthmonth, birthday, income
today=clock %just assigning some values for some obvious variables
year=today(1) % year = what year it is etc
month=today(2)
day=today(3)
%this gives me the amount of days its beensince the start of the year
today_num=datenum(date)-datenum(year,1,0)
d_in_m=[31,28,31,30,31,30,31,31,30,31,30,31] %this is a matrix of the days in each month
employee.first_name=data{1}; %assigning some values to two structures
employee.last_name=data{2};
birth_month=data{3}; %assigning some values to two cell arrays (I think)
birth_dayofmonth=data{4};
%what I'm trying to do here is create an array called "index" that holds
%the birthday in the format of days into the year (jan5=5, Dec31=365) but I
%dont know if this would even help me if it worked.
for i=1:num_rows
index=0;
for j=1:birth_month(i)-1
index=d_in_m(j)+index
end
index=index+birth_dayofmonth
end
%this outputs a lot of similar numbers but the birthdays in the files are
%far away from each other so this shouldn't be the case.
%index =
%6×1 int32 column vector
%195
%199
%191
%182
%198
%198 if true
% code
end

  0 件のコメント

サインインしてコメントする。

回答 (1 件)

Elias Gule
Elias Gule 2018 年 4 月 6 日
I hope the attached files will help.

  0 件のコメント

サインインしてコメントする。

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by