barbos01

loga.c

Apr 24th, 2021
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.81 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5.  
  6.  
  7. int main(int argc, char *argv[])
  8. {   double value, base = 2, result;
  9.     if(argc == 2) {
  10.         if(atoi(argv[1]) == 0 || atoi(argv[1]) < 0) {
  11.             fprintf(stderr, "Value error: %s\n", argv[1]);
  12.             exit(0);
  13.         }
  14.         else {
  15.             if(strcmp(argv[1], "e") == 0) {
  16.                 value = 2.71828;
  17.                 result = log(value) / log(2);
  18.             }
  19.             else {
  20.                 value = atoi(argv[1]);
  21.                 result = log(value) / log(2);
  22.             }
  23.         }
  24.     }
  25.     else {
  26.             if(atoi(argv[1]) == 0 || atoi(argv[1]) < 0 || atoi(argv[2]) == 0 || atoi(argv[2]) < 0) {
  27.                 fprintf(stderr, "Value error: %s, %s\n", argv[1], argv[2]);
  28.                 exit(0);
  29.             }
  30.             else {
  31.                 if ((strcmp(argv[1], "e") != 0) && (strcmp(argv[2], "e") != 0)){
  32.                     value = atoi(argv[1]);
  33.                     base = atoi(argv[2]);
  34.                     result = log(value) / log(base);
  35.                 }
  36.                 else if ((strcmp(argv[1], "e") == 0) && (strcmp(argv[2], "e") == 0)) {
  37.                     value = 2.71828;
  38.                     base = 2.71828;
  39.                     result = log(value);
  40.                 }
  41.                 else if (strcmp(argv[1], "e") == 0) {
  42.                     value = 2.71828;
  43.                     base = atoi(argv[2]);
  44.                     result = log(value) / log(base);
  45.                 }
  46.                 else if ((strcmp(argv[2], "e") == 0)) {
  47.                     value = atoi(argv[1]);
  48.                     base = 2.71828;
  49.                     result = log(value) / log(base);
  50.                 }
  51.         }
  52.     }
  53.  
  54.     printf("log%.1f(%.1f) = %.2f\n", base, value, result);
  55.     return 0;
  56. }
Advertisement
Add Comment
Please, Sign In to add comment