C program
Hey I need help modyfing my code to add these functions
----------------------------------------------------------------
CODE
#include <stdio.h>#include <string.h>#include <stdlib.h>typedef enum { NONE =0, UP =1, DOWN=2, LEFT =4, RIGHT =8}Direction;
typedef struct { int x,y;}Vertex;typedef struct { int numberOfVertices; Direction shiftDirection; Vertex* vertexList;}Polygon;int main(int argc, char** argv)//./main 12{ int max_num_of_polygons = 100;//sscanf(argv[1], "%d", &max_num_of_polygons); Polygon* list = (Polygon*) malloc(max_num_of_polygons * sizeof(Polygon)); char command[1000]; char tokentemp[20]; char firsttoken[20]; char rest[1000]; char *token [3]; int polygonindex = 0; Vertex tempVertexList[100]; //first polygon is at list[0] //second one is at list[1] //strcpy(command, "turn 3 right-up\n"); //strcpy(command, "shift 3 20\n"); strcpy(command, "add 3 4 1 2 3 4 5 6 7 8 9 1\n"); //strcpy(command, "summary\n"); //strcpy(command, "quit\n"); sscanf(command, "%s %[^\n]\n", firsttoken, rest); if(!strcmp(firsttoken, "quit")){ printf("rest is %s", rest); } if(!strcmp(firsttoken, "summary")){ printf("rest is %s", rest); } if(!strcmp(firsttoken, "shift")){ printf("rest is %s", rest); } if(!strcmp(firsttoken, "turn")){ printf("rest is %s", rest); } if(!strcmp(firsttoken, "add")){ printf("rest is %s\n", rest); int n = strlen(rest), x, y; rest[n] = '\n'; rest[n+1] = '0'; int rv = 0; int counter = 0; while((rv = sscanf(rest, "%d %d %[^\n]\n", &x, &y, rest)) >= 2){ printf("coordinate of the first point is (%d, %d), and the rest is %s, rv = %d\n", x, y, rest, rv); tempVertexList[counter].x = x; tempVertexList[counter++].y = y; if(rv == 2) break; } list[polygonindex].numberOfVertices = counter; list[polygonindex].shiftDirection = NONE; list[polygonindex].vertexList = (Vertex*) malloc(counter * sizeof(Vertex)); for(int i = 0; i < counter;i++) list[polygonindex].vertexList.x = tempVertexList.x, list[polygonindex].vertexList.y = tempVertexList.y; polygonindex++; }
return 0;}
There are five valid input commands: • add x₁ 3₁ 22 Y2 ... In yn: adds an n-gon with vertices located at coordinates (2₁, 31), (x2, y2),... (En. Yn) to the list of all polygons. The newly added polygon must have its shift Direction set to NONE. • summary: prints the program's list of polygons. For each polygon, you need to print the number of vertices and the x-y coordinates of the polygon's centroid. To avoid the complications of calculating the centroid, you can assume that the x-coordinate (y-coordinate) of a polygon's centroid is equal to the average of x-coordinates (y- coordinates) of the polgyon's vertices. • (15 % bonus) turn k x: updates the shift Direction of polygon stored at index k of the program's list of polygons. The shift Direction has to be updated based on the value of that can be equal to one of the following strings: - left - right . - up - down -right-up or up-right -left-up or up-left - right-down or down-right - left-down or down-left 1 . (15% bonus) shift k s: updates the x-y coordinates of vertices of polygon stored at index k of the program's list of polygons. To update the vertices' coordinates of a polygon, you need to check its shift Direction. If the direction is NONE, then the shift command has no side effect. If the direction is RIGHT(LEFT), then s has to be added to(subtracted from) the x-coordinate of every vertex of the polygon. If the direction is UP(DOWN), then s has to be added to(subtracted from) the y-coordinate of every vertex of the polygon. If the direction is RIGHT and UP, then s has to be added to both the x- coordinate and y-coordinate of every vertex of the polygon, etc. quit: ends the program
In this assignment, you are asked to write a program that stores and manipulates a list of at-most n polygons where n is given as a command-line argument when running the program. Each polygon must be stored in a structure like this: typedef struct { int numberOfVertices; Direction shift Direction; Vertex* vertexList; }Polygon; where Direction and Vertex are defined like this: typedef enum { NONE = 0, UP = 1, DOWN = 2, LEFT = 4, RIGHT = 8 }Direction; typedef struct { int x, y; }Vertex; 1 Program Input Commands There are five valid input commands: add ₁ ₁ 2 2 In Yn: adds an n-gon with vertices located at coordinates (1, Y₁), (2, 2),..., (n. Yn) to the list of all polygons. The newly added polygon must have its shift Direction set to NONE. summary: prints the program's list of polygons. For each polygon, you need to print the number of vertices and the x-y coordinates of the polygon's centroid. To avoid the complications of calculating the centroid, you can assume that the x-coordinate (y-coordinate) of a polygon's centroid is equal to the average of x-coordinates (y- coordinates) of the polgyon's vertices.
C program Hey I need help modyfing my code to add these functions ------------------------------------------------------
-
- Site Admin
- Posts: 899603
- Joined: Mon Aug 02, 2021 8:13 am