1. ## Homework Help (array)

I have to write a program that reads in from a sample schedule.txt file that looks like so:
2
10
0 8 12
1 8 12
2 8 12
3 8 12
4 8 12
5 8 12
6 8 12
3 12 15
4 20 22
5 18 20
3
1 13 18
2 8 17
1 17 20

The first number 2 indicates the number of schedules. The next integer 10 indicates how many bookings are in the week. The following 10 lines state when the appointments are books, 0 being sunday to 6 being saturday followed by the hours of the appointment. So, 0 8 12 is an appointment on sunday from 8-12. What i have to do is read in this information and output to the user the number of hours booked for each week disregarding the double booked hours. For example the 2nd schedule for the second week has a double booking on 1 (monday) one for 13-18 and another at 17-20 so the 17-20 is voided and the total hours for that week is 14. Any help would be greatly appreciated.

2. Yep... first start by reading our Homework Policy

Then you need to sit down and do 4 simple steps that every good programmer does...

1) Analyse the problem (or task, if you prefer) until you understand it well enough to describe it in small detail.
2) Plan out a step by step way to solve the problem, in words. (the smaller the steps the better)
3) Write your code based upon the plan you created.
4) Test your code ... first in small steps as you write, then the whole program. (Compiles does not mean Works)

If you run into trouble with the code... post it here, using code tags and we'll see what we can do.

3. Code:
```#include <stdio.h>
#include <stdlib.h>
const int HoursPerWeek = 168;
const int HoursPerDay = 24;
int main() {
int schedule[HoursPerWeek];
int num_schedule, events, day, start, end, day_hours, i, count = 0;
FILE* ifp;
ifp = fopen("schedule.txt", "r");
fscanf(ifp, "%d", &num_schedule);
while (count < num_schedule) {
for (i=0; i<HoursPerWeek; i++)
schedule[i] = 0;
fscanf(ifp, "%d", &events);
for (i=0; i<events; i++) {
fscanf(ifp, "%d%d%d", &day, &start, &end);
day_hours = 0;
day_hours = day * HoursPerDay;
int h = start + day_hours;
int t = 0;
if(schedule[h] < 1 || schedule[end+day_hours] < 1)
while (h < end + day_hours) {
schedule[h] ++;
if((schedule[h]) > 1) {
while(t >= 0){
schedule[h-t]--;
t--;
}
break;
}
h++;
t++;
}
}
count++;
int sum = 0;
for (i=0; i<HoursPerWeek; i++)
sum += schedule[i];
printf("Schedule %d contains %d hours of scheduled activity\n", count, sum);
}

return 0;
}```
A friend helped but can somebody please comment on the code so i can understand what its doing.

4. I've got a better idea. How about you go line by line adding comments until you get stuck. When you do get stuck, make a comment saying what you think it's doing.

Quzah.

5. the first for loop initializes the array to all zeroes. Im confused on the second for loop as to what is actually going on after the information is scanned in from the file.

6. Why does no one ever listen to me? Oh I know, because I don't just and out answers, I make them actually think.

Quzah.

7. Do you think id be asking if i havent already thought about it myself? i got the code its written i dont need the answer just need help comprehending the code.

8. Thinking about it, and doing it are two entirely different things. For example, if you had actually done what I suggested, I would be able to see what you were stuck on specifically, instead of "I'm confused on the second part".

clack clack clackyclack... (I seem to be doing a lot of this lately...)

Quzah.

9. part of the second for loop:

While i < number events that week, i++
(for example the first week there are 10 events)

Use an example from your text file to try out the next part:

(The first line is 0 8 12)

day_hrs = 0*24 = 0
h = 8 + 0
(This is the index (8) that accounts for Sunday 8 am)

end + day_hours = 12
(This is the index (12) that accounts for sunday 12 pm)

10. Originally Posted by IamTheCarter
Do you think id be asking if i havent already thought about it myself? i got the code its written i dont need the answer just need help comprehending the code.
Here's your problem in a nutshell... You "got the code its written" ... BUT *you* didn't write it. I can tell just be looking at it that it wasn't written by a beginner... and so will your teacher.

There are 4 steps to writing a program... Analyse the requirment until you understand it. Plan a step by step solution to solve the problem. Write your code based on your plan. Test your code in small steps as you work and then in total when done.... Every programmer, follows these 4 steps for every program, no matter how simple or complex, for the simple reason that you cannot solve a problem that you do not understand.

Tell me... how much real thought did you give this? Did you stare at the assignment and go "Oh crap!" and head off to find someone to do it for you... or did you actually sit down and write out exactly what had to be done and at least try to get it going on your own? 2/3 of programming understanding what has to be done... the rest is writing and testing code.

Seriously... Quzah was giving you some really sound advice... he enjoins you to *think*...

Now, do yourself a favour... scrap your friend's code, sit down and figure this out for yourself.