Advertisement
filip710

PROG2 LV6 Z1

Jun 29th, 2016
285
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.46 KB | None | 0 0
  1. /* Napišite C program koji omogućuje unos dva broja n i m. Omogućiti unos n točaka i
  2. m trokuta. Pronaći i ispisati trokut koji ima najveći opseg. Opseg najvećeg trokuta
  3. ispisat će se u funkciji main. Pretpostaviti kako n i m neće biti veći od 10, ali nije
  4. potrebno u kodu testirati njihove veličine. */
  5.  
  6. //MAIN FUNKCIJA
  7.  
  8. #include‬ <math.h>
  9. #include <stdio.h>
  10. #include "myheader.h"
  11.  
  12.  
  13.  
  14. int main(void)
  15. {
  16.   int n, m;
  17.   Tocka tocke[100];
  18.   Trokut trokuti[100];
  19.   float opseg;
  20.  
  21.   printf("Upisi broj tocaka koje zelis unijeti: ");
  22.   scanf("%d", &n);
  23.  
  24.   printf("Upisi broj trokuta koje zelis unijeti: ");
  25.   scanf("%d", &m);
  26.  
  27.   unesiTocke(tocke, n);
  28.   unesiTrokute(trokuti, tocke, m);
  29.  
  30.   opseg = pronadjiNajveciOpseg(trokuti, m);
  31.  
  32.   printf("REZULTATI:\n");
  33.   printf("%.2f", opseg);
  34.  
  35.     return 0;
  36. }
  37.  
  38. //POMOĆNE FUNKCIJE U DRUGOJ DATOTECI
  39.  
  40. #include <math.h>
  41. #include <stdio.h>
  42. #include "myheader.h"
  43.  
  44. void unesiTocke(Tocka *p, int n){
  45.     int i;
  46.     for(int i = 0; i < n; i++)
  47.     {
  48.         scanf("%f", &p[i].x);
  49.         scanf("%f", &p[i].y);
  50.         scanf("%f", &p[i].z);
  51.     }
  52. }
  53. void unesiTrokute(Trokut *t, Tocka *p, int m){
  54.     int i, ind1, ind2, ind3;
  55.     for(int i = 0; i < m; i++){
  56.         scanf("%d%d%d", &ind1, &ind2, &ind3);
  57.         t[i].t1 = &p[ind1];
  58.         t[i].t2 = &p[ind2];
  59.         t[i].t3 = &p[ind3];
  60.     }
  61. }
  62.  
  63. float pronadjiNajveciOpseg(Trokut* t, int m)
  64. {
  65.     float opseg[m],opsegMax=0;
  66.     int i;
  67.    
  68.     for(i=0;i<m;i++)
  69.     {
  70.         opseg[i] = izracunajOpseg(t[i].t1, t[i].t2, t[i].t3);
  71.             if(opsegMax < opseg[i])
  72.                 opsegMax = opseg[i];
  73.     }
  74.     return opsegMax;
  75. }
  76. float izracunajOpseg(Tocka *t1, Tocka *t2, Tocka *t3){
  77.     float a, b, c, opseg;
  78.     a= sqrt(pow(t2->x - t1->x, 2) + pow(t2->y - t1->y, 2) + pow(t2->z - t1->z, 2));
  79.     b = sqrt(pow(t3->x - t2->x, 2) + pow(t3->y - t2->y, 2) + pow(t3->z - t2->z, 2));
  80.     c = sqrt(pow(t1->x - t3->x, 2) + pow(t1->y - t3->y, 2) + pow(t1->z - t3->z, 2));
  81.     opseg = a + b + c;
  82.     return opseg;
  83. }
  84.  
  85. //HEADER
  86. #ifndef MYHEADER_H
  87. #define MYHEADER_H
  88.  
  89. typedef struct tocka {
  90.     float x;
  91.     float y;
  92.     float z;
  93. } Tocka;
  94.  
  95. typedef struct trokut {
  96.     struct tocka *t1;
  97.     struct tocka *t2;
  98.     struct tocka *t3;
  99. } Trokut;
  100.  
  101. void unesiTocke(Tocka* tocke, int n);
  102. void unesiTrokute(Trokut* trokuti, Tocka* tocke, int m);
  103. float pronadjiNajveciOpseg(Trokut* trokuti, int m);
  104. float izracunajOpseg(Tocka*, Tocka*, Tocka*);
  105.  
  106. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement