Why is this fprintf not wprking correctly?

studentNames = ["Amy", "Flynn", "Barbara", "George", "Jonathan", "Isaac", "Cindy", "Hank", "Elaine", "Debbie"];
Test1 = [79, 71, 98, 68, 65, 97, 72, 68, 68, 82];
Test2 = [61, 94, 98, 66, 91, 90, 76, 86, 67, 88];
Final = [68, 84, 85, 90, 91, 85, 88, 80, 51, 72];
fileID = fopen('Students.txt','w');
%% A.
for i = 1: length(studentNames)
Avg1 = Test1 * .3;
Avg2 = Test2 * .3;
Avg3 = Final * .4;
TotalAvg = Avg1 + Avg2 + Avg3;
end
fprintf(fileID, '%s has an average of %g \r\n', studentNames,TotalAvg);

2 comentarios

Daniel M
Daniel M el 28 de Oct. de 2019
Editada: Daniel M el 28 de Oct. de 2019
But it is working correctly. Just because you want it to work a certain way, and don't know how to achieve that, doesn't mean there is a bug in the code. fprintf prints in column order.
Hunter Steele
Hunter Steele el 28 de Oct. de 2019
I want it to print a name as %s and the average at %g and it is not doing that.

Iniciar sesión para comentar.

Respuestas (2)

Daniel M
Daniel M el 28 de Oct. de 2019
array = [studentNames;string(TotalAvg)];
fprintf('%s has an avg of %g\r\n',array);
Walter Roberson
Walter Roberson el 28 de Oct. de 2019

0 votos

You are already using string objects so you might as well use compose() to format the text, possibly fwrite() the results

Categorías

Etiquetas

Preguntada:

el 28 de Oct. de 2019

Respondida:

el 28 de Oct. de 2019

Community Treasure Hunt

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

Start Hunting!

Translated by