Advertisement
Guest User

Untitled

a guest
Jul 2nd, 2015
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.91 KB | None | 0 0
  1. Unit2.cpp
  2.  
  3. #include <math.h>
  4.  
  5. struct okr {
  6.     float x; float y; float r;
  7. };
  8. struct otr {
  9.     float x1; float y1; float x2; float y2;
  10. };
  11. bool usl(otr ot[], int n, int &k){
  12.     int num = 0;
  13.     float lmin = sqrt(pow((ot[0].x1 - ot[0].x2), 2) + pow((ot[0].y1 - ot[0].y2),2));
  14.     for (int i = 1; i < n; i++) {
  15.         float l = sqrt(pow((ot[i].x1 - ot[i].x2), 2) + pow((ot[i].y1 - ot[i].y2),2));
  16.         if (l < lmin) {
  17.             lmin = l;
  18.             num = i;
  19.         }
  20.     }
  21.     k = num;
  22.     if ((((ot[k].x1 < 0) && (ot[k].y1 > 0)) && (ot[k].x2 < 0)) && (ot[k].y2 > 0))
  23.         return true;
  24.     else return false;
  25. }
  26.  
  27. int da(okr ok[], int n, otr ot){
  28.     int kol = 0;
  29.     for (int i = 0; i < n; i++) {
  30.         float l1 = sqrt(pow(ot.x1 - ok[i].x,2) + pow(ot.y1 - ok[i].y,2));
  31.         float l2 = sqrt(pow(ot.x2 - ok[i].x,2) + pow(ot.y2 - ok[i].y,2));
  32.         if ((l1 <= ok[i].r) && (l2 <= ok[i].r))
  33.             kol++
  34.     }
  35.     return kol;
  36. }
  37.  
  38. float net(okr ok[], int n){
  39.     float s = 0;
  40.     for (int i = 0; i < n; i++) {
  41.         s += 2*3.14*ok[i].r;
  42.     }
  43.     return s;
  44. }
  45.  
  46. unit1.cpp
  47.  
  48. #include <stdio.h>
  49. #include "Unit2.cpp"
  50.  
  51. void __fastcall TForm1::Button1Click(TObject *Sender){
  52.     okr *ok;  otr *ot; char fname[100];
  53.     int n1,n2;
  54.     FILE *fpt;
  55.     int i, k;
  56.    
  57.   if(OpenDialog1->Execute())
  58.  {strcpy(fname,OpenDialog1->FileName.c_str());
  59.   Edit1->Text=fname;
  60.   fpt=fopen(fname,"rt");
  61.   if(fpt==NULL){Label3->Caption="файл не открыт"; return;}
  62.  }
  63. else
  64.  {Label3->Caption="ошибка при открытии OpenDialog1";
  65.   return;}
  66.  
  67.     fscanf(fpt, "%i\n", &n1);
  68.     ok = new okr[n1];
  69.     for(i=0;i<n1;i++)
  70.         fscanf(fpt,"%f %f %f\n",&ok[i].x, &ok[i].y, &ok[i].r);
  71.    
  72.     fscanf(fpt, "%i\n", &n2);
  73.     ot = new otr[n2];
  74.     for(i=0;i<n2;i++)
  75.         fscanf(fpt,"%f %f %f %f\n",&ot[i].x1,&ot[i].y1,&ot[i].x2,&ot[i].y2);
  76.  
  77.  
  78.     if (usl(ot, n2, k)){
  79.         Label2->Caption="kol=";
  80.         Edit2->Text=IntToStr(da(ok, n1, ot[k]));
  81.     }
  82.     else{
  83.         Label2->Caption="sum = ";
  84.         Edit2->Text=FloatToStr(net(ok, n1));
  85.     }
  86.     delete[] ot;
  87.     fclose(fpt);
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement