# Project 5 Comments

## Announcements:

• The ScanFraction function has a parameter fptr that is a pointer to a fraction. If you want to access the top and bottom fields of the fraction that fptr points to, you need to use the following syntax:
```	   (*fptr).top = 3 ;
```
The statement
```	   *fptr.top = 3 ;
```
creates a syntax error because the . operator has a higher precedence than the * dereference operator. The compiler thinks that in the second statement, fptr is a record with a field called top that is a pointer which you want to dereference. Since fptr is not a record, you get a syntax error.

Prof. Chang,
I have a question about project 5. You said that fractions cannot have spaces within the numerator and the denominator. I have written code to ensure that there is no white space within the numerator with no problem. The problem I'm having is thinking of how to write code to prevent from thinking that a fraction like:
```   24/  1 35
```
is not 24/1. Do we just assume that the user will not enter an illegal denominator or should I keep trying to think of a safeguard?

Dear Student,
In this case, your function should store 24/1 as the result and return the index of the space after the 1. The point is that if ScanFraction is included as part of Project 4, then the error will be detected when the main program looks for an operator and finds "35" instead.

Prof. Chang,
For project 5, can we use a second function to take out spaces, or do you want everything in ScanFraction???

Dear Student,
You can use a second function, but you probably don't want to take out the spaces, because you have to report the new position in the original string.

For example:

```  ScanFraction ("abc  12/34  xyz", 4, &f)
```
must return the index 10, because it is the position of the space after 12/34. If you take out all of the spaces, you won't know what the position is. Note that there may be several spaces between "abc" and "12/34".

Prof. Chang,
I was wondering for project 5 what was considered a fraction. Is it the presense of a '/' character?

Dear Student,
A fraction is a sequence of spaces, followed by a sequence of digits, followed by a sequence of spaces, followed by a '/', followed by a sequence of spaces, followed by a sequence of digits. The spaces are optional, but your function must correctly calculate the new position.

Prof. Chang,
What is ScanFraction suppose to do when there is more than 1 fraction in the string? For example, given the string
```  "    3/8    3/9 bec"
```
and the index 0, should ScanFraction take both fractions?

Dear Student,
How can ScanFraction take both fractions? where would it store the resutlts? ScanFraction should take the first fraction after the index given by the parameter and return the position after that fraction. So, in your example, you should store 3/8 in the pointer and return 7.

Last Modified: Fri Dec 1 08:28:00 EST 1995

Richard Chang, chang@gl.umbc.edu