jazykc  2013.3
upoljazykc
 All Classes Files Functions Variables Typedefs Macros Pages
objemy-a-povrchy.c
Go to the documentation of this file.
1 
40 //Povolené knihovny:
41 #include <stdio.h>
42 #include <stdlib.h>
43 #include <math.h>
44 
45 #include "vypocet.h"
46 
47 int main(int argc, char *argv[]) {
48  long n;// op kod, resp. pocet stran n-uhelnika
49  char *endptr;//pro strtol()
50  double r;//polomer nebo velikost strany
51  double h;//vyska
52  double objem;
53  double povrch;
54  if (argc <= 3) {
55 Usage:
56  printf("Usage: %s 0|3|4|6 vyska polomer|strana\n", argv[0]);
57  exit(EXIT_FAILURE);
58  }
59 //atoi(argv[1]);//pouzijeme strtol(), atoi() nedetekuje chybu!
60 //note: lze i sscanf(), format cteni ze stringu
61  n = strtol(argv[1], &endptr, 10);
62  if (*endptr) {
63  printf("%s: spatny opkod/pocet\n", argv[1]);
64  goto Usage;
65  }
66 
67  h = strtod(argv[2], &endptr);
68  if (*endptr) {//precteno beze zbytku?
69  printf("%s: spatna vyska\n", argv[2]);
70  goto Usage;
71  }
72 
73  r = strtod(argv[3], &endptr);
74  if (*endptr) {
75  printf("spatny polomer/velikost strany\n");
76  goto Usage;
77  }
78 
79  switch (n) {
80  case 0:
81  objem = valec_objem(r, h); povrch = valec_povrch(r, h);
82  printf("Valec s vyskou %g a polomerem podstavy %g ma povrch %g a objem %g\n", h, r, povrch, objem);
83  break;
84 
85  case 1://nobreak!
86  case 2: goto Usage;
87  case 3:
88  case 4:
89  case 6:
90  default:
91  objem = hranol_objem(n, r, h); povrch = hranol_povrch(n, r, h);
92  printf("%ld-uhelnik s vyskou %g a stranou podstavy %g ma povrch %g a objem %g\n", n, h, r, povrch, objem);
93  ;
94  }
95  exit(EXIT_SUCCESS);
96 }