Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Лабароторная работа по "Программированию"

Автор:   •  Январь 8, 2023  •  Лабораторная работа  •  949 Слов (4 Страниц)  •  135 Просмотры

Страница 1 из 4
  1.         Задание 1-3.

        Отладить программы для алгоритмов 1-3. Выполнить перевод следующих чисел в тетради и протестировать на них программы: 30, 2042, 0.75, 0.35.

[pic 1]

  1. #include <iostream>
  2. #include <string>
  3. #include <stdio.h>
  4. #include <math.h>
  5. void alg1() {
  6.     int A[10], N, q;
  7.     printf("Ввод N и q: ");
  8.     scanf("%d%d", &N, &q);
  9.     int i = 0;
  10.     do {
  11.         A[i] = N % q;
  12.         N = N / q;
  13.         i++;
  14.     } while (N > 0);
  15.     i--;
  16.     while (i >= 0) {
  17.         printf("%i ", A[i]);
  18.         i--;
  19.     }
  20.     printf("\n");
  21. }
  22. int alg2() {
  23.     float B[10], D;
  24.     int q, t;
  25.     printf("Ввод D, q, t: ");
  26.     scanf("%f%d%d", &D, &q, &t);
  27.     for (int i = 0; i < t; i++) {
  28.         float DP;
  29.         D = modf(D * (float)q, &DP);
  30.         B[i] = DP;
  31.         if (D == 0.0f)
  32.             break;
  33.     }
  34.     for (int i = 0; i < t; i++) {
  35.         printf("%i ", (int)B[i]);
  36.     }
  37.     printf("\n");
  38. }
  39. int alg3() {
  40.     int q;
  41.     std::string A;
  42.     std::cout << "Ввод q:";
  43.     std::cin >> q;
  44.     std::cout << "Ввод A:";
  45.     std::cin >> A;
  46.     int declen = A.find('.');
  47.     if (declen == std::string::npos)
  48.         declen = A.length();
  49.     int fraclen = A.length() - declen;
  50.     float x10 = 0, v = -fraclen;
  51.     for (int i = A.length() - 1; i >= 0; i--) {
  52.         if (A[i] == '.')
  53.             continue;
  54.         std::string as(1, A[i]);
  55.         int a = std::stoi(as, nullptr, q);
  56.         x10 += a*pow(q, v);
  57.         v++;
  58.     }
  59.     std::cout << x10 << std::endl;
  60. }
  61. int main() {
  62.     alg1();
  63.     alg2();
  64.     alg3();
  65.     return 0;
  66. }

[pic 2]

  1.         Задание 4.

        Разработать алгоритмы и программу с подпрограммами:

  1. для сдвига элементов в массиве вправо,
  2. для циклического сдвига элементом в массиве влево.

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. // Сдвиг вправо
  4. void rshiftiarr(int shift, int *arr, int len) {
  5.     int *cpy = (int*)malloc(sizeof(int) * (shift % len));
  6.     for (int i = 0; i < shift; i++) {
  7.         cpy[i] = arr[(i + len - shift) % len];
  8.     }
  9.     for (int i = len - 1; i >= shift; i--) {
  10.         arr[i] = arr[i - (shift % len)];
  11.     }
  12.     for (int i = 0; i < shift; i++) {
  13.         arr[i] = cpy[i];
  14.     }
  15. }
  16. // Сдвиг влево
  17. void lshiftiarr(int shift, int *arr, int len) {
  18.     int *cpy = (int*)malloc(sizeof(int) * (shift % len));
  19.     for (int i = 0; i < shift; i++) {
  20.         cpy[i] = arr[i % len];
  21.     }
  22.     for (int i = 0; i < len - shift; i++) {
  23.         arr[i] = arr[(i + shift) % len];
  24.     }
  25.     for (int i = 0; i < shift; i++) {
  26.         arr[(i + len - shift) % len] = cpy[i];
  27.     }
  28. }
  29. int main() {
  30.     int A[5] = {
  31.         1, 2, 3, 4, 5
  32.     };
  33.     lshiftiarr(3, A, 5);
  34.     rshiftiarr(1, A, 5);
  35.     for (int i = 0; i < 5; i++) {
  36.         printf("%i ", A[i]);
  37.     }
  38.     printf("\n");
  39.     return 0;
  40. }

[pic 3]

...

Скачать:   txt (3.5 Kb)   pdf (239 Kb)   docx (189.7 Kb)  
Продолжить читать еще 3 страниц(ы) »
Доступно только на Essays.club