Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <stdio.h>
- #include <math.h>
- #include <stdlib.h>
- #include <time.h>
- #include <iostream>
- #include <fstream>
- #define n 50 //tutaj zdefiniowałem liczbe punktów do wylosowania
- int tabA[n][2]; //tablica ze współrzędnymi może być globalna
- int x_min, x_max, y_min, y_max;
- void filling();
- void printing();
- void extremes();
- void fun();
- int main()
- {
- filling();
- printing();
- extremes();
- fun();
- return 0;
- }
- void filling() {
- srand((unsigned)time(NULL));
- for (int i = 0; i < n; i++) {
- for (int j = 0; j < 2; j++) {
- tabA[i][j] = (50)*rand() / (double)RAND_MAX;
- }
- }
- }
- void printing() {
- for (int i = 0; i < n; i++) {
- printf("\n");
- for (int j = 0; j < 2; j++) {
- printf("%d ", tabA[i][j]);
- }
- }
- printf("\n\n\n");
- }
- void extremes() {
- int x_min = tabA[0][0];
- int x_max = tabA[0][0];
- int y_min = tabA[0][1];
- int y_max = tabA[0][1];
- for (int i = 0; i < n; i++) {
- if (x_min > tabA[i][0]) {
- x_min = tabA[i][0];
- }
- if (x_max < tabA[i][0]) {
- x_max = tabA[i][0];
- }
- }//znajdywanie największych i najmniejszych xów
- for (int j = 0; j < n; j++) {
- if (y_min > tabA[j][1]) {
- y_min = tabA[j][1];
- }
- if (y_max < tabA[j][1]) {
- y_max = tabA[j][1];
- }
- }//znajdowanie największych i najmniejszych yków
- printf("x_min = %d, x_max = %d\ny_min = %d y_max = %d\n\n", x_min, x_max, y_min, y_max);
- int area;
- area = (x_max - x_min)*(y_max - y_min);
- printf("Pole pierwszego prostokata to :%d\n\n\n", area);
- }
- void fun() {
- int x1boku = -10000;
- int y1boku;
- int w1;
- for (int i = n; i >= -n; i--) {
- for (int j = 0; j < n; j++) {
- if(tabA[j][0] + i == tabA[j][1]) {
- x1boku = tabA[j][0];
- y1boku = tabA[j][1];
- w1 = i;
- printf("x1boku = %d y1boku = %d\n\n", x1boku, y1boku);
- printf("Rownanie pierwszego boku to x+%d\n\n\n", w1);
- break;
- }
- }
- if (x1boku != -10000) {
- break;
- }
- }//funkcja licząca licząca lewy górny bok
- int x2boku = -10000;
- int y2boku;
- int w2;
- for (int i = -n; i <= n; i++) {
- for (int j = 0; j < n; j++) {
- if (tabA[j][0] + i == tabA[j][1]) {
- x2boku = tabA[j][0];
- y2boku = tabA[j][1];
- w2 = i;
- printf("x2boku = %d y2boku = %d\n\n", x2boku, y2boku);
- printf("Rownanie drugiego boku to x+%d\n\n\n", w2);
- break;
- }
- }
- if (x2boku != -10000) {
- break;
- }
- }//funkcja licząca prawy dolny bok
- int x3boku = -10000;
- int y3boku;
- int w3;
- for (int i = 0; i <= 2*n; i++) {
- for (int j = 0; j < n; j++) {
- if (-tabA[j][0] + i == tabA[j][1]) {
- x3boku = tabA[j][0];
- y3boku = tabA[j][1];
- w3 = i;
- printf("x3boku = %d y3boku = %d\n\n", x3boku, y3boku);
- printf("Rownanie trzeciego boku to -x+%d\n\n\n", w3);
- break;
- }
- }
- if (x3boku != -10000) {
- break;
- }
- }//funkcja licząca lewy dolny bok
- int x4boku = -10000;
- int y4boku;
- int w4;
- for (int i = 2*n; i >= 0; i--) {
- for (int j = 0; j < n; j++) {
- if (-tabA[j][0] + i == tabA[j][1]) {
- x4boku = tabA[j][0];
- y4boku = tabA[j][1];
- w4 = i;
- printf("x4boku = %d y4boku = %d\n\n", x4boku, y4boku);
- printf("Rownanie czwartego boku to -x+%d\n\n\n", w4);
- break;
- }
- }
- if (x4boku != -10000) {
- break;
- }
- }//funkcja licząca prawy górny róg
- //zabieramy się za wierzchołki mogą one znaleść się maksymalnie x<-25,75> but to be on a safe side sprawdzimy <-2*n,2*n>
- double xw1, yw1;
- for (double i = -100; i < 100; i = i + 0.5) {
- if (i + w1 == -i + w3) {
- xw1 = i;
- yw1 = i + w1;
- printf("Wspolrzedne pierwszego wierzcholka to x:%.2lf y:%.2lf\n\n", xw1, yw1);
- break;
- }
- }
- double xw2, yw2;
- for (double i = -100; i < 100; i=i+0.5) {
- if (i + w2 == -i + w3) {
- xw2 = i;
- yw2 = i + w2;
- printf("Wspolrzedne drugiego wierzcholka to x:%.2lf y:%.2lf\n\n", xw2, yw2);
- break;
- }
- }
- double xw3, yw3;
- for (double i = -100; i < 100; i = i + 0.5) {
- if (i + w2 == -i + w4) {
- xw3 = i;
- yw3 = i + w2;
- printf("Wspolrzedne trzeciego wierzcholka to x:%.2lf y:%.2lf\n\n", xw3, yw3);
- break;
- }
- }
- double xw4, yw4;
- for (double i = -100; i < 100; i = i + 0.5) {
- if (i + w1 == -i + w4) {
- xw4 = i;
- yw4 = i + w1;
- printf("Wspolrzedne czwartego wierzcholka to x:%.2lf y:%.2lf\n\n", xw4, yw4);
- break;
- }
- }
- double pole;
- double bok1, bok2;
- bok1 = sqrt((xw2 - xw1)*(xw2 - xw1) + (yw2 - yw1)*(yw2 - yw1));
- bok2 = sqrt((xw3 - xw2)*(xw3 - xw2) + (yw3 - yw2)*(yw3 - yw2));
- pole = bok1*bok2;
- printf("Pole drugiego prostokata to %.2lf\n\n", pole);
- }
Advertisement
Add Comment
Please, Sign In to add comment