Advertisement
simov

NRS | Lab 1

Apr 3rd, 2013
182
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.04 KB | None | 0 0
  1. ------- НРС - Лаб. вежби 1 -------
  2. ----------------------------------
  3. 1-ва задача
  4. __________________________________
  5. Да се надополни програмата со следните барања:
  6.  
  7. Да се креира структура на точка во тродимензионален простор и да се напише функција која ќе го пресметува растојанието помеѓу две такви точки.
  8. Да се напише функција која како аргумент прима три точки во дводимензионален простор и ќе проверува дали тие точки лежат на иста права.
  9. __________________________________
  10. #include <stdio.h>
  11. #include <math.h>
  12.  
  13.  
  14. typedef struct tocka2D {
  15. double x;
  16. double y;
  17. } tocka2D;
  18.  
  19.  
  20.  
  21. float rastojanie(tocka2D t1, tocka2D t2) {
  22. return sqrt ((t1.x - t2.x) * (t1.x - t2.x) + (t1.y - t2.y) * (t1.y - t2.y));
  23. }
  24.  
  25. typedef struct tocka3D {
  26. double x;
  27. double y;
  28. double z;
  29. } tocka3D ;
  30.  
  31. float rastojanie3D(tocka3D t1, tocka3D t2) {
  32. return sqrt ((t1.x - t2.x) * (t1.x - t2.x) + (t1.y - t2.y) * (t1.y - t2.y) + (t1.z - t2.z)*(t1.z - t2.z));
  33. }
  34.  
  35. int ista_prava(tocka2D t1, tocka2D t2, tocka2D t3) {
  36.  
  37. return ((t1.y-t2.y)/(t1.x - t2.x)) == ((t2.y-t3.y)/(t2.x - t3.x));
  38.  
  39. }
  40. int main() {
  41. float x1, y1, x2, y2;
  42. scanf("%f %f", &x1, &y1);
  43. scanf("%f %f", &x2, &y2);
  44. tocka2D t1 = { x1, y1 };
  45. tocka2D t2 = { x2, y2 };
  46. printf("%.2f\n", rastojanie(t1, t2));
  47. float z1, z2;
  48. scanf("%f %f", &z1, &z2);
  49. tocka3D t3 = {x1, y1, z1};
  50. tocka3D t4 = {x2, y2, z2};
  51. printf("%.2f\n", rastojanie3D(t3, t4));
  52. tocka2D t5 = {z1, z2};
  53. printf("%d\n", ista_prava(t1, t2, t5));
  54. return 0;
  55. }
  56.  
  57. __________________________________
  58. 2-ра задача
  59. __________________________________
  60. Да се напише структура која ќе опишува отсечка во дводимензионален простор (две точки). Потоа да се напише функција која ќе проверува дали две отсечки се сечат.
  61. __________________________________
  62. #include <stdio.h>
  63.  
  64. typedef struct tocka {
  65. float x;
  66. float y;
  67. } tocka;
  68.  
  69. typedef struct otsecka {
  70. tocka prva;
  71. tocka vtora;
  72.  
  73. } otsecka;
  74.  
  75. int se_secat(otsecka o1, otsecka o2) {
  76. int seSecat = 0;
  77.  
  78. float k1 = (o1.prva.y - o1.vtora.y)/(o1.prva.x - o1.vtora.x);
  79. float k2 = (o2.prva.y - o2.vtora.y)/(o2.prva.x - o2.vtora.x);
  80.  
  81. // printf("%f %f\n", k1, k2);
  82.  
  83.  
  84.  
  85. float b1 = o1.prva.y - k1*o1.prva.x;
  86. float b2 = o2.vtora.y - k2*o2.vtora.x;
  87. //printf("%f %f\n", b1, b2);
  88.  
  89. if(k1 == k2)
  90. {
  91. // printf("vleze");
  92. float levaTocka = o1.prva.x;
  93. float des = o2.vtora.x;
  94.  
  95. return levaTocka >= des;
  96. }
  97.  
  98.  
  99. float finalno_k = k1-k2;
  100. float finalno_b = b1-b2;
  101.  
  102. float res = -finalno_b/finalno_k;
  103.  
  104. // printf("%f ", k1*res + b1);
  105.  
  106. seSecat = ((res>=o1.prva.x&&res <= o1.vtora.x)&&(res>= o2.prva.x && res <= o2.vtora.x));
  107. return seSecat;
  108. }
  109.  
  110. int main() {
  111. float x1, y1, x2, y2;
  112. scanf("%f %f %f %f", &x1, &y1, &x2, &y2);
  113. tocka t1 = { x1, y1 };
  114. tocka t2 = { x2, y2 };
  115. otsecka o1 = { t1, t2 };
  116. scanf("%f %f %f %f", &x1, &y1, &x2, &y2);
  117. t1.x = x1;
  118. t1.y = y1;
  119. t2.x = x2;
  120. t2.y = y2;
  121.  
  122. otsecka o2 = { t1, t2 };
  123. printf("%d", se_secat(o1, o2));
  124. return 0;
  125. }
  126.  
  127. __________________________________
  128. 3-та задача
  129. __________________________________
  130. Да се напише програма во која од стандарден влез се вчитува N (бројот на производи), а потоа се вчитуваат податоците за N производи (име, цена, количина). Програмата треба на стандарден излез да ја отпечати листата на купени производи и вкупната сума која треба да се плати во следниот облик (пример):
  131.  
  132. 1. Flips 10.00 x 3 = 30.00
  133. 2. CocaCola 75.00 x 2 = 150.00
  134. 3. ChokoBanana 5.00 x 10 = 50.00
  135. Total: 230.00
  136. __________________________________
  137. #include <stdio.h>
  138. #define MAX 100
  139.  
  140. typedef struct proizvodi{
  141. char ime[20];
  142. float cena;
  143. int kolicina;
  144. }proizvod;
  145.  
  146. int main(){
  147. int N, i;
  148. float total=0.0;
  149. proizvod produkt[MAX];
  150. scanf("%d", &N);
  151.  
  152.  
  153. for(i=0; i<N; i++){
  154. scanf("%s", &produkt[i].ime);
  155. scanf("%f", &produkt[i].cena);
  156. scanf("%d", &produkt[i].kolicina);
  157. }
  158.  
  159. for(i=0; i<N; i++) {
  160. printf("%d. ", i+1);
  161. printf("%s\t", produkt[i].ime);
  162. printf("%.2f x %d = %.2f\n", produkt[i].cena, produkt[i].kolicina, produkt[i].cena*produkt[i].kolicina);
  163. total+=produkt[i].cena*produkt[i].kolicina;
  164.  
  165. }
  166. printf("Total: %.2f\n", total);
  167. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement