C program Hey I need help modyfing my code to add these functions ------------------------------------------------------

Business, Finance, Economics, Accounting, Operations Management, Computer Science, Electrical Engineering, Mechanical Engineering, Civil Engineering, Chemical Engineering, Algebra, Precalculus, Statistics and Probabilty, Advanced Math, Physics, Chemistry, Biology, Nursing, Psychology, Certifications, Tests, Prep, and more.
Post Reply
answerhappygod
Site Admin
Posts: 899603
Joined: Mon Aug 02, 2021 8:13 am

C program Hey I need help modyfing my code to add these functions ------------------------------------------------------

Post by answerhappygod »

C program
Hey I need help modyfing my code to add these functions
C Program Hey I Need Help Modyfing My Code To Add These Functions 1
C Program Hey I Need Help Modyfing My Code To Add These Functions 1 (105.24 KiB) Viewed 45 times
----------------------------------------------------------------
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.
Join a community of subject matter experts. Register for FREE to view solutions, replies, and use search function. Request answer by replying!
Post Reply