All pastes #894867 Raw Edit

concentric circles

public c v1 · immutable
·published 2008-02-07 11:08 UTC
rendered paste body
#include <stdio.h>#include <string.h>#define INPUTLEN 5/* This program asks the user for one of three actions: push, pull or turn.   It then does those actions and spits out a result in degrees, of where   the arrows on three concentric circles are pointing.   North is 0 degrees; East is 90 degrees, etc.*//* function prototypes */void push(int *outer, int *inner);void pull(int *outer, int *middle);void turn(int *outer, int *middle);int smallnums(int degrees);int main(int argc, char *argv[]){   char input_s[INPUTLEN];   int outer = 0;   int middle = 90;   int inner = 270;   while (1)   {      printf("\npush, pull or turn the angel? ");      /* read in 4 characters from the keyboard */      if (strcasecmp(fgets(input_s, INPUTLEN, stdin), "\n")==0)      {         fgets(input_s, INPUTLEN, stdin);      }      printf("\nYou inputted: %s\n", input_s);      /* figure out what the user wants to do, and do it */      if (strcasecmp("push", input_s)==0)      {         push(&outer, &inner);      }      else if (strcasecmp("pull", input_s)==0)      {         pull(&outer, &middle);      }      else if (strcasecmp("turn", input_s)==0)      {         turn(&outer, &middle);      }      /* print the result */      printf("\nOuter: %i | Middle: %i | Inner: %i\n", outer, middle, inner);      printf("\n-------------------------------\n");   }   return 0;}void push(int *outer, int *inner){   printf("\nIn push(); outer is %i, inner is %i\n", *outer, *inner);   *inner = *inner + 90;   *outer = *outer - 90;   /* let's keep the numbers in the smaller degrees */   *inner = smallnums(*inner);   *outer = smallnums(*outer);   return;}void pull(int *outer, int *middle){   printf("\nIn pull(); outer is %i, middle is %i\n", *outer, *middle);   *middle = *middle - 180;   *outer = *outer + 90;   /* smaller degrees! */   *middle = smallnums(*middle);   *outer = smallnums(*outer);   return;}void turn(int *outer, int *middle){   printf("\nIn turn(); outer is %i, middle is %i\n", *outer, *middle);   *outer = *outer + 180;   *middle = *middle - 90;   /* smaller degrees */   *outer = smallnums(*outer);   *middle = smallnums(*middle);   return;}int smallnums(int degrees){   if (degrees >= 360 || degrees <= -360)   {      degrees = degrees / 360;   }   if (degrees == 1 || degrees == -1)   {      degrees = 0;   }   return degrees;}