CNC mašina¶
Autor zadatka: Rade Radišić <radisic.rade@uns.ac.rs>
CNC mašina seče materijal tako što se glava mašine sa sečivom kreće po zadatim koordinatama.
Napisati program u kom korisnik učitava po n
elemenata u dva niza od 30 realnih elemenata.
Prvi predstavlja x
, a drugi niz y
koordinate tačaka po kojima se glava mašine kreće pravolinijski.
Glava mašine kreće se od tačke do tačke, u zadatom redosledu.
Ispisati xy parove koordinata, gde je svaki odgovarajući par oivičen zagradama, a parovi predstavljeni kao niz elemenata.
Izračunati ukupnu distancu koju glava mašine pređe za zadate tačke i rezultat ispisati na ekran Terminala.
Napraviti zaštitu unosa broja elemenata, tako da n
bude u zadatim granicama veličine niza.
Euklidsko rastojanje između dve tačke u dvodimenzionalnom prostoru:
Primer rada programa:
Ucitati zeljeni broj koordinata: 5
1. tacka
x[0] = 0
y[0] = 0
2. tacka
x[1] = 2
y[1] = 3
3. tacka
x[2] = 3
y[2] = 7
4. tacka
x[3] = 0
y[3] = 3
5. tacka
x[4] = 0
y[4] = 0
[(0.00, 0.00), (2.00, 3.00), (3.00, 7.00), (0.00, 3.00), (0.00, 0.00)]
Ukupno predjena distanca glave masine: 15.73
Primer rešenja¶
1#include <stdio.h>
2#include <math.h>
3
4#define MAX_NIZ 30
5
6int main() {
7 double x[MAX_NIZ], y[MAX_NIZ];
8 int i, n;
9
10 do {
11 printf("Ucitati zeljeni broj koordinata: ");
12 scanf("%d", &n);
13 } while(n <= 0 || n > MAX_NIZ);
14
15 for(i = 0;i < n;i++) {
16 printf("%d. tacka\n", i + 1);
17 printf("x[%d] = ", i);
18 scanf("%lf", &x[i]);
19 printf("y[%d] = ", i);
20 scanf("%lf", &y[i]);
21 printf("\n");
22 }
23
24 printf("[");
25 for(i = 0;i < n;i++) {
26 if(i > 0) {
27 printf(", ");
28 }
29 printf("(%.2lf, %.2lf)", x[i], y[i]);
30 }
31 printf("]\n");
32
33 double predjeno = 0;
34
35 for(i = 1;i < n;i++) {
36 predjeno += sqrt(pow(x[i - 1] - x[i], 2) + pow(y[i - 1] - y[i], 2));
37 }
38
39 printf("Ukupno predjena distanca glave masine: %.2lf\n", predjeno);
40
41 return 0;
42}
43