Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Circle Calculator */
- #define _CRT_SECURE_NO_WARNINGS
- #include <stdio.h>
- #include <windows.h>
- #include <math.h>
- #define PI 3.1415
- void main_menu();
- void clear();
- void circler();
- void triangle();
- void rectangle();
- void proceed(int instruction);
- void(*f[3])() = { circler, triangle, rectangle };
- int main() {
- main_menu();
- return 0;
- }
- void proceed(int instruction)
- {
- int menu;
- printf("\n\n 0 Continue\n"
- " 1 Main menu...\n"
- " Instruction: ");
- scanf("%d", &menu);
- if (menu == 0) {
- (*f[instruction])();
- }
- else {
- main_menu();
- }
- }
- void rectangle()
- {
- clear();
- printf("Rectangle\n");
- proceed(2);
- }
- void triangle()
- {
- clear();
- printf("Triangle\n");
- proceed(1);
- }
- void circler()
- {
- void calc_cicler(double r, double d, double U, double A);
- clear();
- int instruction;
- printf("\t\tCircles\n\n"
- " * * 0\tRadius\n"
- " * * 1\tDiameter\n"
- " * * 2\tPerimeter\n"
- " * * 3\tArea\n"
- " * * 4\tMain menu\n"
- " * * \n"
- " Instruction: ");
- scanf("%d", &instruction);
- double radius = 0;
- double diameter = 0;
- double perimeter = 0;
- double area = 0;
- switch (instruction) {
- case 0:
- printf("\n\n\tInform the radius: ");
- scanf("%lf", &radius);
- break;
- case 1:
- printf("\n\n\tInform the diameter: ");
- scanf("%lf", &diameter);
- break;
- case 2:
- printf("\n\n\tInform the perimeter: ");
- scanf("%lf", &perimeter);
- break;
- case 3:
- printf("\n\n\tInform the area: ");
- scanf("%lf", &area);
- break;
- default:
- main_menu();
- }
- calc_cicler(radius, diameter, perimeter, area);
- proceed(0);
- }
- void calc_cicler(double r, double d, double U, double A) {
- clear();
- if (d != 0) {
- r = d / 2;
- printf("\n Radius:"
- "\t\tr = d : 2\n"
- "\t\tr = %.2lf : 2\n"
- "\t\tr = %.2f\n", d, r);
- }
- else if (U != 0) {
- r = U / (2 * PI);
- printf("\n Radius:"
- "\t\tr = U : (2pi)\n"
- "\t\tr = %.2lf : (2pi)\n"
- "\t\tr = %.2f\n", U, r);
- }
- else if (A != 0) {
- r = sqrt(A / PI);
- printf("\n Radius:"
- "\t\tr^2 = A : pi\n"
- "\t\tr^2 = %.2lf : pi\n"
- "\t\tr = %.2f\n", A, r);
- }
- A = r * r * PI;
- printf("\n Area:\t\tA = pi * r^2\n"
- "\t\tA = pi * %.2lf^2\n"
- "\t\tA = %.2f\n", r, A);
- U = r * PI * 2;
- printf("\n Perimeter:"
- "\tU = 2 * pi * r\n"
- "\t\tU = 2 * pi * %.2lf\n"
- "\t\tU = %.2f\n", r, U);
- d = r * 2;
- printf("\n Diameter:"
- "\td = 2 * r\n"
- "\t\td = 2 * %.2lf\n"
- "\t\td = %.2f\n", r, d);
- printf("\n\n Radius = %.2lf\n"
- " Diameter = %.2lf\n"
- " Perimeter = %.2lf\n"
- " Area = %.2lf\n", r, d, U, A);
- }
- void clear() {
- DWORD n; /* Número de caracteres escritos */
- DWORD size; /* número de caracteres visíveis */
- COORD coord = { 0, 0 }; /* Posição superior esquerda da tela */
- CONSOLE_SCREEN_BUFFER_INFO csbi;
- /* Obter um identificador para o console */
- HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);
- GetConsoleScreenBufferInfo(h, &csbi);
- /* Encontre o número de caracteres a serem sobrescritos */
- size = csbi.dwSize.X * csbi.dwSize.Y;
- /* Sobrescrever o buffer de tela com espaços em branco */
- FillConsoleOutputCharacter(h, TEXT(' '), size, coord, &n);
- GetConsoleScreenBufferInfo(h, &csbi);
- FillConsoleOutputAttribute(h, csbi.wAttributes, size, coord, &n);
- /* Redefine o cursor para a posição superior esquerda */
- SetConsoleCursorPosition(h, coord);
- }
- void main_menu() {
- clear();
- int instruction;
- printf("\tCalculator:\n\n"
- "\t0 \tCircle\n"
- "\t1 \tTriangle\n"
- "\t2 \tRectangle\n"
- "\t3 \tExit\n\n"
- "\tInstruction: ");
- scanf("%d", &instruction);
- if (instruction >= 0 && instruction < 3) {
- (*f[instruction])();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement