All pastes #506996 Raw Edit

Miscellany

public c v1 · immutable
·published 2007-05-24 09:32 UTC
rendered paste body
#include <stdio.h>#include <stdlib.h>#include <math.h>#define Pi 3.141592654#define MAXARRAY 20int main (int argc, char ** argv) {   int lineLength=0;   double direction[MAXARRAY];   double ddirection=0;   char grammar;   double aangle;   int k=0;   int h=0;   int z=0;   int xStart[MAXARRAY];   int yStart[MAXARRAY];   int xEnd[MAXARRAY];   int yEnd[MAXARRAY];   float red=1; //red   float green=0; //green   float blue=0; //blue   /*      int noOfIterations;   if (argc < 2) {                                                                    printf ("you need to provide the number of iterations as arguments\n");      exit (EXIT_FAILURE);   }   noOfIterations = (int)(*argv[1]) - '0';*/     scanf("%d", &lineLength);   scanf("%lf", &ddirection);   scanf("%lf", &aangle);     direction[k]=ddirection;   xStart[k]= 0;   yStart[k]= 0;   while ((grammar = getchar()) !=EOF){      if (grammar!='\n'){       if (grammar=='G'){         green=green+0.1;      }      if (grammar=='B'){         blue=blue+0.1;      }      if (grammar=='R'){         red=red+0.1;      }      if (grammar=='g'){         green=green-0.1;      }      if (grammar=='b'){         blue=blue-0.1;      }      if (grammar=='r'){         red=red-0.1;      }      if (green<0 || green>1){        printf("Error, your green is out of range");      }        if (blue<0 || blue>1){        printf("Error, your blue is out of range");      }        if (red<0 || red>1){        printf("Error, your red is out of range");      }              if (grammar=='+'){         ddirection=ddirection+aangle;         direction[k]=ddirection;         if (direction[k]<0){            direction[k]=direction[k]+2*Pi;         }           if (direction[k]<=Pi/2){                       xEnd[k] = lineLength*sin(direction[k]);            yEnd[k] = lineLength*cos(direction[k]);               }         if (direction[k] > Pi/2 && direction[k]<=Pi){                       xEnd[k] = lineLength*sin(direction[k]);            yEnd[k] = lineLength*cos(direction[k]);               }           if (direction[k]>Pi && direction[k]<=3*Pi/2){            xEnd[k] = lineLength*sin(direction[k]);            yEnd[k] = lineLength*cos(direction[k]);                 }           if (direction[k]>3*Pi/2){            xEnd[k] = lineLength*sin(direction[k]);            yEnd[k] = lineLength*cos(direction[k]);         }      }         if (grammar=='-'){           ddirection=ddirection-aangle;           direction[k]=ddirection;             if (direction[k]<0){               direction[k]=direction[k]+2*Pi;            }           if (direction[k]<=Pi/2){                       xEnd[k] = lineLength*sin(direction[k]);            yEnd[k] = lineLength*cos(direction[k]);               }         if (direction[k] > Pi/2 && direction[k]<=Pi){                       xEnd[k] = lineLength*sin(direction[k]);            yEnd[k] = lineLength*cos(direction[k]);               }           if (direction[k]>Pi && direction[k]<=3*Pi/2){            xEnd[k] = lineLength*sin(direction[k]);            yEnd[k] = lineLength*cos(direction[k]);                 }           if (direction[k]>3*Pi/2){            xEnd[k] = lineLength*sin(direction[k]);            yEnd[k] = lineLength*cos(direction[k]);         }         }         if (grammar=='F'){            h++;            printf("Current direction: %lf\n",direction[k]);            printf("Move forward in current direction.\n");            direction[k]=ddirection;            if (direction[k]<0){               direction[k]=direction[k]+2*Pi;            }          if (direction[k]<=Pi/2){            xEnd[k] = lineLength*sin(direction[k]) + xStart[k];            yEnd[k] = lineLength*cos(direction[k]) + yStart[k];               }         if (direction[k] > Pi/2 && direction[k]<=Pi){                       xEnd[k] = lineLength*sin(direction[k])+ xStart[k];            yEnd[k] = lineLength*cos(direction[k])+ yStart[k];         }           if (direction[k]>Pi && direction[k]<=3*Pi/2){            xEnd[k] = lineLength*sin(direction[k])+ xStart[k];            yEnd[k] = lineLength*cos(direction[k])+ yStart[k];         }           if (direction[k]>3*Pi/2){            xEnd[k] = lineLength*sin(direction[k])+ xStart[k];            yEnd[k] = lineLength*cos(direction[k])+ yStart[k];         }       k++;           }            if(grammar=='f'){            printf("Put in coordinates, just don't print them out.\n");            h++;            direction[k]=ddirection;            if (direction[k]<0){               direction[k]=direction[k]+2*Pi;            }             if (direction[k]<=Pi/2){               xEnd[k] = lineLength*sin(direction[k]) + xStart[k];               yEnd[k] = lineLength*cos(direction[k]) + yStart[k];                  }            if (direction[k] > Pi/2 && direction[k]<=Pi){               xEnd[k] = lineLength*sin(direction[k])+ xStart[k];               yEnd[k] = lineLength*cos(direction[k])+ yStart[k];            }              if (direction[k]>Pi && direction[k]<=3*Pi/2){               xEnd[k] = lineLength*sin(direction[k])+ xStart[k];               yEnd[k] = lineLength*cos(direction[k])+ yStart[k];            }              if (direction[k]>3*Pi/2){               xEnd[k] = lineLength*sin(direction[k])+ xStart[k];               yEnd[k] = lineLength*cos(direction[k])+ yStart[k];            }            k++;           }            yStart[k] = yEnd[k-1];         xStart[k] = xEnd[k-1];         //k++;               }                  }      while (z<h){      printf("%d ",xStart[z]);      printf("%d ",yStart[z]);         printf("%d ",xEnd[z]);         printf("%d ",yEnd[z]);            printf("%f ",red);      printf("%f ",green);      printf("%f \n",blue);            z++;   }   return (0);}