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 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++; 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]; } printf("%d ",xStart[k]); printf("%d ",yStart[k]); printf("%d ",xEnd[k]); printf("%d ",yEnd[k]); printf("%f ",red); printf("%f ",green); printf("%f \n",blue); k++; } if(grammar=='f'){ 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]; } } return (0);}