Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #define SIZE 50
- typedef int bool;
- #define true 1
- #define false 0
- int getMaxRange();
- int getMileMarker();
- void getMarkerPositions(int* markerPositions);
- int getCurrentIndex(int* markerPositions, int startingMileMarker);
- int getNumOfUnreachablePoints(int* markerPositions, int startingIndex, int maxRange);
- int main() {
- int maxRange = getMaxRange();
- int startingMileMarker = getMileMarker();
- int markerPositions[SIZE];
- getMarkerPositions(markerPositions);
- int startingIndex = getCurrentIndex(markerPositions, startingMileMarker);
- int numOfUnreachablePoints = getNumOfUnreachablePoints(markerPositions, startingIndex, maxRange);
- printf("A total of %d points cannot be reached.", numOfUnreachablePoints);
- }
- int getNumOfUnreachablePoints(int* markerPositions, int startingIndex, int maxRange) {
- int numOfUnreachablePoints = -1;
- bool unreachable = false;
- int currentIndex;
- for (currentIndex = startingIndex; currentIndex < SIZE; currentIndex++) {
- if (markerPositions[currentIndex] == -1) break;
- int nextIndex = currentIndex + 1;
- if (abs(markerPositions[currentIndex] - markerPositions[nextIndex]) > maxRange)
- unreachable = true;
- if (unreachable) numOfUnreachablePoints++;
- }
- unreachable = false;
- for (currentIndex = startingIndex; currentIndex > 0; currentIndex--) {
- int nextIndex = currentIndex - 1;
- if (abs(markerPositions[currentIndex] - markerPositions[nextIndex]) > maxRange)
- unreachable = true;
- if (unreachable) numOfUnreachablePoints++;
- }
- return numOfUnreachablePoints;
- }
- int getCurrentIndex(int *markerPositions, int startingMileMarker) {
- int i = 0;
- int currentIndex = -1;
- while (i < SIZE && markerPositions[i] != -1) {
- if (markerPositions[i] == startingMileMarker) {
- currentIndex = i;
- }
- i++;
- }
- return currentIndex;
- }
- int getMaxRange() {
- int maxRange = -1;
- while (maxRange < 1) {
- printf("Enter maximum fuel range: ");
- scanf("%d", &maxRange);
- if (maxRange < 1)
- printf("Error! Positive values only!!\n");
- }
- return maxRange;
- }
- int getMileMarker() {
- int mileMarker = -1;
- while (mileMarker < 0) {
- printf("Enter starting mile marker location: ");
- scanf("%d", &mileMarker);
- if (mileMarker < 0)
- printf("Error! Non-negative values only!!\n");
- }
- return mileMarker;
- }
- void getMarkerPositions(int* markerPositions) {
- int count = 0;
- int currentNumber;
- printf("Enter mile marker positions:");
- do {
- scanf("%d", ¤tNumber);
- markerPositions[count] = currentNumber;
- count++;
- } while(count < SIZE && currentNumber != -1);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement