I need to debug the following 2 codes in C Programming: 1. #include <stdio.h> //
ID: 3847532 • Letter: I
Question
I need to debug the following 2 codes in C Programming:
1.
#include <stdio.h>
// days enumeration
enum days
{
MON = 0, TUE, WED, THU, FRI, SAT, SUN
}
int main(void)
{
const char *dayName[] = { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", Sunday" };
for (enum days day = MON; day <= SUN; day++)
{
printf("%2d%11s ", day, dayName[day]);
}
return 0;
}
2.
#include <stdio.h>
// days enumeration
enum days
{
MON = 1, TUE, WED, THU, FRI, SAT, SUN
};
int main(void)
{
const char *dayName[] = { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", Sunday" };
for (enum days day = MON; day <= SUN; day++)
{
printf("%2d%11s ", day, dayName[day]);
}
return 0;
Explanation / Answer
//Note :
//Error will mentioned in the form of comments
//SOLUTION 1
//---------------------------------------------------
#include <stdio.h>
// days enumeration
//Error 1:
//enum definition must be ended with semicolon
enum days
{
MON = 0, TUE, WED, THU, FRI, SAT, SUN
};//Here semi colon was missing
int main(void)
{
//Error 2
//in last element i.e sunday begining quote is missing
const char *dayName[] = { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" };
//Error 3
//Declaration of variable in for loop is not allowed;
//So initialize it outside before using it in for loop
enum days day;
for (day = MON; day <= SUN; day++)
{
printf("%2d%11s ", day, dayName[day]);
}
return 0;
}
//---------------------------------------------------------
//SOLOTION 2
//-----------------------------------------------------
#include <stdio.h>
// days enumeration
enum days
{
MON = 1, TUE, WED, THU, FRI, SAT, SUN
};
int main(void)
{
//Error 1:
//in last element i.e sunday begining quote is missing
const char *dayName[] = { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" };
//Error 2:
//Declaration of variable in for loop is not allowed,
//So initialize it outside before using it in for loop
enum days day;
//Error 3:
//Notice that in enum definition you have initialize, first member initialize with value 1
//hence rest of member will be initialize with subsequent number
//i.e TUE by 2,
//WED by 3
//.
//.
//SUN by 7.
//In array, element is stored from the subscript 0
//i.e first element at array[0]
//second at array[1] etc.
//In the for loop day is initialize with MON i.e 1 ,
//hence for loop run from MON = 1 upto SUN = 7.
//but our array dayname has 7 element stored at pos 0,1,2,3,4,5,6
//i.e
//dayname[0] contain Monday
//dayname[1] contain Tuesday
//.
//.
//dayname[6] contain Sunday
//So our array subscript start from 0 and end at 6
//but our loop start from index 1 and end at index 7
//and our array store element from index 0 to 6
//so when our loop variable day value become 7 and we want to print dayName[7]
//it will result in illegal access because our array has only element upto 6
//So to correct the code edit the day print code as dayName[day-1]
//Now our code will run fine and it wont complain
for (day = MON; day <= SUN; day++)
{
printf("%2d%11s ", day, dayName[day-1]);
}
return 0;
}
//-----------------------------------------------------------------
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.