Advertisement
Kostiggig

Untitled

Nov 8th, 2022
918
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.77 KB | None | 0 0
  1. // lab 9
  2.    
  3. #include <stdio.h>
  4. #include <math.h>
  5. #include <stdlib.h>
  6. #include <stdbool.h>
  7. #include <locale.h>
  8.  
  9. void task1() {
  10.     int sum = 0;
  11.     for (int i = 100; i <= 990; i+= 10) sum += i;
  12.    
  13.     printf("\nSum is %d", sum);
  14. }
  15.  
  16. void task2() {
  17.     int A, B, C, r;
  18.     int copyA, n = 0; // for the second part of the task
  19.  
  20.     printf("Введите сумму вклада: ");
  21.     scanf("%d", &A);
  22.     printf("Введите кол-во месяцев: ");
  23.     scanf("%d", &B);
  24.     printf("Введите сумму, которую превысит основной вклад через n месяц(а)(ев): ");
  25.     scanf("%d", &C);
  26.  
  27.     if (A < 0 || B < 0 || C < 0) printf("Src data must be positive or zero"); return;
  28.    
  29.     if (C < A) printf("A must be less or equal C"); return;
  30.    
  31.     copyA = A;
  32.     r = A/100;
  33.     for (int i = 1; i <= B; i++) {
  34.         A += r;
  35.     }
  36.     printf("Через %d месяцев на счету будет находиться следующая сумма: %d", B, A);
  37.  
  38.  
  39.     while(copyA < C) {
  40.         copyA += r;
  41.         n++;
  42.     }
  43.  
  44.     printf("Через %d месяцев основная сумма вклада превысит %d", n, C);
  45. }  
  46.  
  47. void printOnNewLine(char src[]) {
  48.     printf("\n%s", src);
  49. }
  50.  
  51. bool srcDataIsCorrected(int start, int end, int step) {
  52.     bool correted = true;
  53.    
  54.     if (start > end) {
  55.         printOnNewLine("Error! Start must be less or equal to end");
  56.         correted = false;
  57.     }
  58.  
  59.     if (step < 1) {
  60.         printOnNewLine("Error! Step must be more or equal to 1");
  61.         correted = false;
  62.     }
  63.     return correted;
  64. }
  65.  
  66.  
  67. int countOfDigitsInNumber(int number) {
  68.     int count = 0;
  69.     while (number % 10 != 0)
  70.     {
  71.         number /= 10;
  72.         count++;
  73.     }
  74.     return count;
  75. }
  76.  
  77.  
  78. double deriveFirstNDigits(int n, double number) {
  79.     double copyNumber = number;
  80.     double pivot = (double) pow(10, n);
  81.     if(pivot >= copyNumber) return copyNumber;
  82.  
  83.     while (copyNumber > pivot)
  84.     {
  85.         copyNumber /= 10;
  86.     }
  87.    
  88.     return copyNumber;
  89. }
  90.  
  91.  
  92. void task3() {
  93.     setlocale(LC_ALL, "Russian");
  94.     int start, end, step;
  95.     double f;
  96.    
  97.     printOnNewLine("Введите range");
  98.     printOnNewLine("start: ");
  99.     scanf("%d", &start);
  100.  
  101.     printOnNewLine("end: ");
  102.     scanf("%d", &end);
  103.  
  104.     printOnNewLine("Введите step: ");
  105.     scanf("%d", &step);
  106.  
  107.     if (srcDataIsCorrected(start, end, step))
  108.     {
  109.         printOnNewLine("|\tx\t|\tstep\t|\tf\t|");
  110.         for (int x = start; x <= end; x += step)
  111.         {
  112.             if (x <= 5)
  113.             {
  114.                 f = 2 * x;
  115.             } else {
  116.                 if(x < 7) {
  117.                     f = 3 * log(2 * x);
  118.                 } else {
  119.                     f = exp(x);
  120.                 }
  121.             }
  122.  
  123.  
  124.             int derivedNumber = deriveFirstNDigits(5, f);
  125.             if (countOfDigitsInNumber(derivedNumber) == 5)
  126.             {
  127.                 printf("\n|\t%d\t|\t%d\t|\t%d...\t|", x, step, derivedNumber);
  128.             } else {
  129.                 printf("\n|\t%d\t|\t%d\t|\t%d     \t|", x, step, derivedNumber);
  130.             }
  131.         }
  132.        
  133.     }
  134.    
  135. }
  136.  
  137. int main() {
  138.     int numberOfTask = -1;
  139.     do
  140.     {
  141.         printf("\nВведите номер задачи(1, 2 или 3, 0 - для выхода): ");
  142.         scanf("%d", &numberOfTask);
  143.  
  144.         switch(numberOfTask) {
  145.             case 1: task1(); break;
  146.             case 2: task2(); break;
  147.             case 3: task3(); break;
  148.             default: {
  149.                 if (numberOfTask !=0) {
  150.                     printf("\nNumber of task %d doesn't exist!", numberOfTask);
  151.                 }
  152.             }
  153.         }
  154.     } while (numberOfTask != 0);
  155.    
  156.     return 0;
  157. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement