mirror of https://github.com/acanas/swad-core.git
Version19.78.3
This commit is contained in:
parent
9974f5ea4d
commit
5073200f8e
|
@ -490,7 +490,7 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - *
|
|||
En OpenSWAD:
|
||||
ps2pdf source.ps destination.pdf
|
||||
*/
|
||||
#define Log_PLATFORM_VERSION "SWAD 19.78.2 (2019-11-27)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 19.78.3 (2019-11-27)"
|
||||
#define CSS_FILE "swad19.78.1.css"
|
||||
#define JS_FILE "swad19.70.js"
|
||||
/*
|
||||
|
@ -498,6 +498,7 @@ ps2pdf source.ps destination.pdf
|
|||
// TODO: Impedir la creación y edición de proyectos si no son editables.
|
||||
// TODO: En cada juego, poder listar los resultados en una tabla como la de resultados globales
|
||||
|
||||
Version 19.78.3: Nov 27, 2019 Getting maximum grade from game form. Not finished. (247159 lines)
|
||||
Version 19.78.2: Nov 27, 2019 New field maximum grade in game form. Not finished. (247168 lines)
|
||||
Version 19.78.1: Nov 27, 2019 Changes in edition of games, attendance, events, assignments. (247123 lines)
|
||||
Version 19.78: Nov 25, 2019 Filtering of match results by games. (247106 lines)
|
||||
|
|
|
@ -3811,7 +3811,7 @@ static void Fig_GetAndShowFollowStats (void)
|
|||
|
||||
/***** Get average *****/
|
||||
row = mysql_fetch_row (mysql_res);
|
||||
Average = Str_GetDoubleNumFromStr (row[0]);
|
||||
Average = Str_GetDoubleFromStr (row[0]);
|
||||
|
||||
/***** Free structure that stores the query result *****/
|
||||
DB_FreeMySQLResult (&mysql_res);
|
||||
|
|
13
swad_game.c
13
swad_game.c
|
@ -1223,7 +1223,7 @@ static void Gam_PutFormsEditionGame (struct Game *Game,bool ItsANewGame)
|
|||
|
||||
HTM_TD_Begin ("class=\"LM\"");
|
||||
HTM_INPUT_FLOAT ("MaxGrade",(double) 0.0,(double) DBL_MAX,(double) 0.01,(double) 10.0,false,
|
||||
NULL);
|
||||
"required=\"required\"");
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TR_End ();
|
||||
|
@ -1273,6 +1273,8 @@ void Gam_RecFormGame (void)
|
|||
struct Game NewGame;
|
||||
bool ItsANewGame;
|
||||
bool NewGameIsCorrect = true;
|
||||
char MaxGradeStr[64];
|
||||
double MaxGrade;
|
||||
char Txt[Cns_MAX_BYTES_TEXT + 1];
|
||||
|
||||
/***** Get the code of the game *****/
|
||||
|
@ -1294,6 +1296,11 @@ void Gam_RecFormGame (void)
|
|||
/***** Get game title *****/
|
||||
Par_GetParToText ("Title",NewGame.Title,Gam_MAX_BYTES_TITLE);
|
||||
|
||||
/***** Get maximum grade *****/
|
||||
Par_GetParToText ("MaxGrade",MaxGradeStr,sizeof (MaxGradeStr) - 1);
|
||||
MaxGrade = Str_GetDoubleFromStr (MaxGradeStr);
|
||||
Ale_ShowAlert (Ale_INFO,"DEBUG: MaxGrade = %lg",MaxGrade); // TODO: Remove this line
|
||||
|
||||
/***** Get game text and insert links *****/
|
||||
Par_GetParToHTML ("Txt",Txt,Cns_MAX_BYTES_TEXT); // Store in HTML format (not rigorous)
|
||||
|
||||
|
@ -2570,9 +2577,9 @@ double Gam_GetNumQstsPerCrsGame (Hie_Level_t Scope)
|
|||
break;
|
||||
}
|
||||
|
||||
/***** Get number of courses *****/
|
||||
/***** Get average number of questions per game *****/
|
||||
row = mysql_fetch_row (mysql_res);
|
||||
NumQstsPerGame = Str_GetDoubleNumFromStr (row[0]);
|
||||
NumQstsPerGame = Str_GetDoubleFromStr (row[0]);
|
||||
|
||||
/***** Free structure that stores the query result *****/
|
||||
DB_FreeMySQLResult (&mysql_res);
|
||||
|
|
|
@ -1715,8 +1715,8 @@ void Prf_GetAndShowRankingClicksPerDay (void)
|
|||
Usr_GetAllUsrDataFromUsrCod (&UsrDat,Usr_DONT_GET_PREFS);
|
||||
ItsMe = (UsrDat.UsrCod == Gbl.Usrs.Me.UsrDat.UsrCod);
|
||||
|
||||
/* Get number of clicks per day (row[1]) */
|
||||
NumClicksPerDay = Str_GetDoubleNumFromStr (row[1]);
|
||||
/* Get average number of clicks per day (row[1]) */
|
||||
NumClicksPerDay = Str_GetDoubleFromStr (row[1]);
|
||||
if (NumClicksPerDay < NumClicksPerDayHigh)
|
||||
{
|
||||
Rank = NumUsr;
|
||||
|
|
|
@ -1866,7 +1866,7 @@ static void Sta_ShowNumHitsPerUsr (unsigned long NumRows,MYSQL_RES *mysql_res)
|
|||
HTM_TD_End ();
|
||||
|
||||
/* Write the number of clicks */
|
||||
Hits.Num = Str_GetDoubleNumFromStr (row[1]);
|
||||
Hits.Num = Str_GetDoubleFromStr (row[1]);
|
||||
if (NumRow == 1)
|
||||
Hits.Max = Hits.Num;
|
||||
if (Hits.Max > 0.0)
|
||||
|
@ -1948,7 +1948,7 @@ static void Sta_ShowNumHitsPerDay (unsigned long NumRows,MYSQL_RES *mysql_res)
|
|||
Lay_ShowErrorAndExit ("Wrong date.");
|
||||
|
||||
/* Get number of pages generated (in row[1]) */
|
||||
Hits.Num = Str_GetDoubleNumFromStr (row[1]);
|
||||
Hits.Num = Str_GetDoubleFromStr (row[1]);
|
||||
|
||||
Dat_AssignDate (&Date,&LastDate);
|
||||
NumDaysFromLastDateToCurrDate = Dat_GetNumDaysBetweenDates (&ReadDate,&LastDate);
|
||||
|
@ -2158,7 +2158,7 @@ static void Sta_ShowDistrAccessesPerDayAndHour (unsigned long NumRows,MYSQL_RES
|
|||
Lay_ShowErrorAndExit ("Wrong hour.");
|
||||
|
||||
/* Get number of pages generated (in row[2]) */
|
||||
Hits.Num = Str_GetDoubleNumFromStr (row[2]);
|
||||
Hits.Num = Str_GetDoubleFromStr (row[2]);
|
||||
|
||||
/* If this is the first read date, initialize PreviousReadDate */
|
||||
if (NumRow == 1)
|
||||
|
@ -2523,7 +2523,7 @@ static void Sta_ShowNumHitsPerWeek (unsigned long NumRows,
|
|||
Lay_ShowErrorAndExit ("Wrong date.");
|
||||
|
||||
/* Get number of pages generated (in row[1]) */
|
||||
Hits.Num = Str_GetDoubleNumFromStr (row[1]);
|
||||
Hits.Num = Str_GetDoubleFromStr (row[1]);
|
||||
|
||||
Dat_AssignDate (&Date,&LastDate);
|
||||
NumWeeksBetweenLastDateAndCurDate = Dat_GetNumWeeksBetweenDates (&ReadDate,&LastDate);
|
||||
|
@ -2623,7 +2623,7 @@ static void Sta_ShowNumHitsPerMonth (unsigned long NumRows,
|
|||
Lay_ShowErrorAndExit ("Wrong date.");
|
||||
|
||||
/* Get number of pages generated (in row[1]) */
|
||||
Hits.Num = Str_GetDoubleNumFromStr (row[1]);
|
||||
Hits.Num = Str_GetDoubleFromStr (row[1]);
|
||||
|
||||
Dat_AssignDate (&Date,&LastDate);
|
||||
NumMonthsBetweenLastDateAndCurDate = Dat_GetNumMonthsBetweenDates (&ReadDate,
|
||||
|
@ -2723,7 +2723,7 @@ static void Sta_ShowNumHitsPerYear (unsigned long NumRows,
|
|||
Lay_ShowErrorAndExit ("Wrong date.");
|
||||
|
||||
/* Get number of pages generated (in row[1]) */
|
||||
Hits.Num = Str_GetDoubleNumFromStr (row[1]);
|
||||
Hits.Num = Str_GetDoubleFromStr (row[1]);
|
||||
|
||||
Dat_AssignDate (&Date,&LastDate);
|
||||
NumYearsBetweenLastDateAndCurDate = Dat_GetNumYearsBetweenDates (&ReadDate,
|
||||
|
@ -2827,7 +2827,7 @@ static void Sta_ShowNumHitsPerHour (unsigned long NumRows,
|
|||
H++, Hour++)
|
||||
Sta_WriteAccessHour (H,&Hits,ColumnWidth);
|
||||
|
||||
Hits.Num = Str_GetDoubleNumFromStr (row[1]) / (float) NumDays;
|
||||
Hits.Num = Str_GetDoubleFromStr (row[1]) / (float) NumDays;
|
||||
Sta_WriteAccessHour (ReadHour,&Hits,ColumnWidth);
|
||||
|
||||
Hour++;
|
||||
|
@ -2917,7 +2917,7 @@ static void Sta_ShowAverageAccessesPerMinute (unsigned long NumRows,MYSQL_RES *m
|
|||
if (sscanf (row[0],"%02u%02u",&ReadHour,&MinuteRead) != 2) // In row[0] is the date in formato HHMM
|
||||
Lay_ShowErrorAndExit ("Wrong hour-minute.");
|
||||
/* Get number of pages generated */
|
||||
Hits.Num = Str_GetDoubleNumFromStr (row[1]);
|
||||
Hits.Num = Str_GetDoubleFromStr (row[1]);
|
||||
MinuteDayRead = ReadHour * 60 + MinuteRead;
|
||||
for (i = MinuteDay;
|
||||
i < MinuteDayRead;
|
||||
|
@ -3150,7 +3150,7 @@ static void Sta_ShowNumHitsPerAction (unsigned long NumRows,
|
|||
HTM_TD_End ();
|
||||
|
||||
/* Draw bar proportional to number of hits */
|
||||
Hits.Num = Str_GetDoubleNumFromStr (row[1]);
|
||||
Hits.Num = Str_GetDoubleFromStr (row[1]);
|
||||
Sta_DrawBarNumHits ('o', // orange background
|
||||
Hits.Num,Hits.Max,Hits.Total,500);
|
||||
|
||||
|
@ -3205,7 +3205,7 @@ static void Sta_ShowNumHitsPerPlugin (unsigned long NumRows,
|
|||
HTM_TD_End ();
|
||||
|
||||
/* Draw bar proportional to number of hits */
|
||||
Hits.Num = Str_GetDoubleNumFromStr (row[1]);
|
||||
Hits.Num = Str_GetDoubleFromStr (row[1]);
|
||||
Sta_DrawBarNumHits ('o', // orange background
|
||||
Hits.Num,Hits.Max,Hits.Total,500);
|
||||
|
||||
|
@ -3257,7 +3257,7 @@ static void Sta_ShowNumHitsPerWSFunction (unsigned long NumRows,
|
|||
HTM_TD_End ();
|
||||
|
||||
/* Draw bar proportional to number of hits */
|
||||
Hits.Num = Str_GetDoubleNumFromStr (row[1]);
|
||||
Hits.Num = Str_GetDoubleFromStr (row[1]);
|
||||
Sta_DrawBarNumHits ('o', // orange background
|
||||
Hits.Num,Hits.Max,Hits.Total,500);
|
||||
|
||||
|
@ -3297,7 +3297,7 @@ static void Sta_ShowNumHitsPerBanner (unsigned long NumRows,
|
|||
row = mysql_fetch_row (mysql_res);
|
||||
|
||||
/* Get number of pages generated */
|
||||
NumClicks = Str_GetDoubleNumFromStr (row[1]);
|
||||
NumClicks = Str_GetDoubleFromStr (row[1]);
|
||||
if (NumRow == 1)
|
||||
MaxClicks = NumClicks;
|
||||
TotalClicks += NumClicks;
|
||||
|
@ -3326,7 +3326,7 @@ static void Sta_ShowNumHitsPerBanner (unsigned long NumRows,
|
|||
HTM_A_End ();
|
||||
|
||||
/* Draw bar proportional to number of clicks */
|
||||
NumClicks = Str_GetDoubleNumFromStr (row[1]);
|
||||
NumClicks = Str_GetDoubleFromStr (row[1]);
|
||||
Sta_DrawBarNumHits ('o', // orange background
|
||||
NumClicks,MaxClicks,TotalClicks,500);
|
||||
|
||||
|
@ -3385,7 +3385,7 @@ static void Sta_ShowNumHitsPerCountry (unsigned long NumRows,
|
|||
Sta_WriteCountry (CtyCod);
|
||||
|
||||
/* Draw bar proportional to number of hits */
|
||||
Hits.Num = Str_GetDoubleNumFromStr (row[1]);
|
||||
Hits.Num = Str_GetDoubleFromStr (row[1]);
|
||||
Sta_DrawBarNumHits ('o', // orange background
|
||||
Hits.Num,Hits.Max,Hits.Total,375);
|
||||
|
||||
|
@ -3475,7 +3475,7 @@ static void Sta_ShowNumHitsPerInstitution (unsigned long NumRows,
|
|||
Sta_WriteInstitution (InsCod);
|
||||
|
||||
/* Draw bar proportional to number of hits */
|
||||
Hits.Num = Str_GetDoubleNumFromStr (row[1]);
|
||||
Hits.Num = Str_GetDoubleFromStr (row[1]);
|
||||
Sta_DrawBarNumHits ('o', // orange background
|
||||
Hits.Num,Hits.Max,Hits.Total,375);
|
||||
|
||||
|
@ -3567,7 +3567,7 @@ static void Sta_ShowNumHitsPerCentre (unsigned long NumRows,
|
|||
Sta_WriteCentre (CtrCod);
|
||||
|
||||
/* Draw bar proportional to number of hits */
|
||||
Hits.Num = Str_GetDoubleNumFromStr (row[1]);
|
||||
Hits.Num = Str_GetDoubleFromStr (row[1]);
|
||||
Sta_DrawBarNumHits ('o', // orange background
|
||||
Hits.Num,Hits.Max,Hits.Total,375);
|
||||
|
||||
|
@ -3659,7 +3659,7 @@ static void Sta_ShowNumHitsPerDegree (unsigned long NumRows,
|
|||
Sta_WriteDegree (DegCod);
|
||||
|
||||
/* Draw bar proportional to number of hits */
|
||||
Hits.Num = Str_GetDoubleNumFromStr (row[1]);
|
||||
Hits.Num = Str_GetDoubleFromStr (row[1]);
|
||||
Sta_DrawBarNumHits ('o', // orange background
|
||||
Hits.Num,Hits.Max,Hits.Total,375);
|
||||
|
||||
|
@ -3792,7 +3792,7 @@ static void Sta_ShowNumHitsPerCourse (unsigned long NumRows,
|
|||
HTM_TD_End ();
|
||||
|
||||
/* Draw bar proportional to number of hits */
|
||||
Hits.Num = Str_GetDoubleNumFromStr (row[1]);
|
||||
Hits.Num = Str_GetDoubleFromStr (row[1]);
|
||||
Sta_DrawBarNumHits ('o', // orange background
|
||||
Hits.Num,Hits.Max,Hits.Total,375);
|
||||
|
||||
|
@ -3821,7 +3821,7 @@ void Sta_ComputeMaxAndTotalHits (struct Sta_Hits *Hits,
|
|||
row = mysql_fetch_row (mysql_res);
|
||||
|
||||
/* Get number of hits */
|
||||
Hits->Num = Str_GetDoubleNumFromStr (row[Field]);
|
||||
Hits->Num = Str_GetDoubleFromStr (row[Field]);
|
||||
if (Divisor > 1)
|
||||
Hits->Num /= (double) Divisor;
|
||||
|
||||
|
|
|
@ -929,24 +929,30 @@ void Str_ConvertStrFloatCommaToStrFloatPoint (char *Str)
|
|||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/************** Read a number in floating point from a string ****************/
|
||||
/************************ Get a double from a string *************************/
|
||||
/*****************************************************************************/
|
||||
// This function may change Str on wrong double
|
||||
|
||||
double Str_GetDoubleNumFromStr (const char *Str)
|
||||
double Str_GetDoubleFromStr (char *Str)
|
||||
{
|
||||
double Num;
|
||||
double DoubleNum;
|
||||
|
||||
if (Str)
|
||||
{
|
||||
Str_SetDecimalPointToUS (); // To get the decimal point as a dot
|
||||
if (sscanf (Str,"%lf",&Num) != 1)
|
||||
Lay_ShowErrorAndExit ("Bad floating point format.");
|
||||
Str_SetDecimalPointToLocal (); // Return to local system
|
||||
/***** Trivial check *****/
|
||||
if (Str == NULL) // If no string...
|
||||
return 0.0; // ...the number is reset to 0
|
||||
|
||||
/***** The string is "scanned" in floating point
|
||||
(it must have a point, not a comma as decimal separator) *****/
|
||||
Str_ConvertStrFloatCommaToStrFloatPoint (Str);
|
||||
Str_SetDecimalPointToUS (); // To get the decimal point as a dot
|
||||
if (sscanf (Str,"%lg",&DoubleNum) != 1)
|
||||
{ // If the string does not hold a valid number...
|
||||
DoubleNum = 0.0; // ...the number is reset to 0
|
||||
Str[0] = '\0'; // ...and the string is reset to ""
|
||||
}
|
||||
else // Str == NULL
|
||||
Num = 0.0;
|
||||
Str_SetDecimalPointToLocal (); // Return to local system
|
||||
|
||||
return Num;
|
||||
return DoubleNum;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -94,7 +94,7 @@ char Str_ConvertToLowerLetter (char Ch);
|
|||
void Str_WriteDoubleNumToFile (FILE *FileDst,double Number);
|
||||
void Str_DoubleNumToStr (char **Str,double Number);
|
||||
void Str_ConvertStrFloatCommaToStrFloatPoint (char *Str);
|
||||
double Str_GetDoubleNumFromStr (const char *Str);
|
||||
double Str_GetDoubleFromStr (char *Str);
|
||||
void Str_SetDecimalPointToUS (void);
|
||||
void Str_SetDecimalPointToLocal (void);
|
||||
|
||||
|
|
|
@ -4103,9 +4103,9 @@ double Svy_GetNumQstsPerCrsSurvey (Hie_Level_t Scope)
|
|||
break;
|
||||
}
|
||||
|
||||
/***** Get number of courses *****/
|
||||
/***** Get average number of questions per survey *****/
|
||||
row = mysql_fetch_row (mysql_res);
|
||||
NumQstsPerSurvey = Str_GetDoubleNumFromStr (row[0]);
|
||||
NumQstsPerSurvey = Str_GetDoubleFromStr (row[0]);
|
||||
|
||||
/***** Free structure that stores the query result *****/
|
||||
DB_FreeMySQLResult (&mysql_res);
|
||||
|
|
38
swad_test.c
38
swad_test.c
|
@ -3318,7 +3318,7 @@ void Tst_WriteAnswersEdit (long QstCod)
|
|||
i++)
|
||||
{
|
||||
row = mysql_fetch_row (mysql_res);
|
||||
FloatNum[i] = Tst_GetFloatAnsFromStr (row[1]);
|
||||
FloatNum[i] = Str_GetDoubleFromStr (row[1]);
|
||||
}
|
||||
HTM_SPAN_Begin ("class=\"TEST_EDI\"");
|
||||
HTM_TxtF ("([%lg; %lg])",FloatNum[0],FloatNum[1]);
|
||||
|
@ -4611,7 +4611,7 @@ static void Tst_WriteFloatAnsAssessTest (struct UsrData *UsrDat,
|
|||
i++)
|
||||
{
|
||||
row = mysql_fetch_row (mysql_res);
|
||||
FloatAnsCorr[i] = Tst_GetFloatAnsFromStr (row[1]);
|
||||
FloatAnsCorr[i] = Str_GetDoubleFromStr (row[1]);
|
||||
}
|
||||
if (FloatAnsCorr[0] > FloatAnsCorr[1]) // The maximum and the minimum are swapped
|
||||
{
|
||||
|
@ -4632,7 +4632,7 @@ static void Tst_WriteFloatAnsAssessTest (struct UsrData *UsrDat,
|
|||
/***** Write the user answer *****/
|
||||
if (Gbl.Test.StrAnswersOneQst[NumQst][0]) // If user has answered the question
|
||||
{
|
||||
FloatAnsUsr = Tst_GetFloatAnsFromStr (Gbl.Test.StrAnswersOneQst[NumQst]);
|
||||
FloatAnsUsr = Str_GetDoubleFromStr (Gbl.Test.StrAnswersOneQst[NumQst]);
|
||||
if (Gbl.Test.StrAnswersOneQst[NumQst][0]) // It's a correct floating point number
|
||||
{
|
||||
HTM_TD_Begin ("class=\"%s CM\"",
|
||||
|
@ -5722,7 +5722,7 @@ static void Tst_GetQstDataFromDB (char Stem[Cns_MAX_BYTES_TEXT + 1],
|
|||
case Tst_ANS_FLOAT:
|
||||
if (Gbl.Test.Answer.NumOptions != 2)
|
||||
Lay_ShowErrorAndExit ("Wrong answer.");
|
||||
Gbl.Test.Answer.FloatingPoint[NumOpt] = Tst_GetFloatAnsFromStr (row[1]);
|
||||
Gbl.Test.Answer.FloatingPoint[NumOpt] = Str_GetDoubleFromStr (row[1]);
|
||||
break;
|
||||
case Tst_ANS_TRUE_FALSE:
|
||||
if (Gbl.Test.Answer.NumOptions != 1)
|
||||
|
@ -6176,7 +6176,7 @@ bool Tst_CheckIfQstFormatIsCorrectAndCountNumOptions (void)
|
|||
for (i = 0;
|
||||
i < 2;
|
||||
i++)
|
||||
Gbl.Test.Answer.FloatingPoint[i] = Tst_GetFloatAnsFromStr (Gbl.Test.Answer.Options[i].Text);
|
||||
Gbl.Test.Answer.FloatingPoint[i] = Str_GetDoubleFromStr (Gbl.Test.Answer.Options[i].Text);
|
||||
if (Gbl.Test.Answer.FloatingPoint[0] >
|
||||
Gbl.Test.Answer.FloatingPoint[1])
|
||||
{
|
||||
|
@ -6328,32 +6328,6 @@ long Tst_GetIntAnsFromStr (char *Str)
|
|||
return LongNum;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/************ Get a float number from a string in floating point *************/
|
||||
/*****************************************************************************/
|
||||
|
||||
double Tst_GetFloatAnsFromStr (char *Str)
|
||||
{
|
||||
double DoubleNum;
|
||||
|
||||
if (Str == NULL)
|
||||
return 0.0;
|
||||
|
||||
/***** Change commnas to points *****/
|
||||
Str_ConvertStrFloatCommaToStrFloatPoint (Str);
|
||||
|
||||
/***** The string is "scanned" in floating point (it must have a point, not a colon as decimal separator) *****/
|
||||
Str_SetDecimalPointToUS (); // To get the decimal point as a dot
|
||||
if (sscanf (Str,"%lg",&DoubleNum) != 1) // If the string does not hold a valid floating point number...
|
||||
{
|
||||
DoubleNum = 0.0; // ...the number is reset to 0
|
||||
Str[0] = '\0'; // ...and the string is reset to ""
|
||||
}
|
||||
Str_SetDecimalPointToLocal (); // Return to local system
|
||||
|
||||
return DoubleNum;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/***************** Check if this tag exists for current course ***************/
|
||||
/*****************************************************************************/
|
||||
|
@ -6732,7 +6706,7 @@ static void Tst_InsertAnswersIntoDB (void)
|
|||
Gbl.Test.Answer.Integer);
|
||||
break;
|
||||
case Tst_ANS_FLOAT:
|
||||
Str_SetDecimalPointToUS (); // To print the floating point as a dot
|
||||
Str_SetDecimalPointToUS (); // To print the floating point as a dot
|
||||
for (i = 0;
|
||||
i < 2;
|
||||
i++)
|
||||
|
|
|
@ -195,7 +195,6 @@ Tst_AnswerType_t Tst_ConvertFromStrAnsTypDBToAnsTyp (const char *StrAnsTypeBD);
|
|||
void Tst_ReceiveQst (void);
|
||||
bool Tst_CheckIfQstFormatIsCorrectAndCountNumOptions (void);
|
||||
long Tst_GetIntAnsFromStr (char *Str);
|
||||
double Tst_GetFloatAnsFromStr (char *Str);
|
||||
void Tst_RequestRemoveQst (void);
|
||||
void Tst_RemoveQst (void);
|
||||
void Tst_ChangeShuffleQst (void);
|
||||
|
|
|
@ -328,7 +328,7 @@ static void TsI_WriteAnswersOfAQstXML (long QstCod)
|
|||
i++)
|
||||
{
|
||||
row = mysql_fetch_row (mysql_res);
|
||||
FloatNum[i] = Tst_GetFloatAnsFromStr (row[1]);
|
||||
FloatNum[i] = Str_GetDoubleFromStr (row[1]);
|
||||
}
|
||||
fprintf (Gbl.Test.XML.FileXML,"%s"
|
||||
"<lower>%lg</lower>%s"
|
||||
|
@ -753,7 +753,7 @@ static bool TsI_CheckIfQuestionExistsInDB (void)
|
|||
i++)
|
||||
{
|
||||
row = mysql_fetch_row (mysql_res_ans);
|
||||
IdenticalAnswers = (Tst_GetFloatAnsFromStr (row[0]) == Gbl.Test.Answer.FloatingPoint[i]);
|
||||
IdenticalAnswers = (Str_GetDoubleFromStr (row[0]) == Gbl.Test.Answer.FloatingPoint[i]);
|
||||
}
|
||||
IdenticalQuestionFound = IdenticalAnswers;
|
||||
break;
|
||||
|
|
|
@ -9604,9 +9604,9 @@ double Usr_GetNumCrssPerUsr (Rol_Role_t Role)
|
|||
break;
|
||||
}
|
||||
|
||||
/***** Get number of courses *****/
|
||||
/***** Get averga number of courses per user *****/
|
||||
row = mysql_fetch_row (mysql_res);
|
||||
NumCrssPerUsr = Str_GetDoubleNumFromStr (row[0]);
|
||||
NumCrssPerUsr = Str_GetDoubleFromStr (row[0]);
|
||||
|
||||
/***** Free structure that stores the query result *****/
|
||||
DB_FreeMySQLResult (&mysql_res);
|
||||
|
@ -9763,9 +9763,9 @@ double Usr_GetNumUsrsPerCrs (Rol_Role_t Role)
|
|||
break;
|
||||
}
|
||||
|
||||
/***** Get number of users *****/
|
||||
/***** Get average number of users per course *****/
|
||||
row = mysql_fetch_row (mysql_res);
|
||||
NumUsrsPerCrs = Str_GetDoubleNumFromStr (row[0]);
|
||||
NumUsrsPerCrs = Str_GetDoubleFromStr (row[0]);
|
||||
|
||||
/***** Free structure that stores the query result *****/
|
||||
DB_FreeMySQLResult (&mysql_res);
|
||||
|
|
Loading…
Reference in New Issue