Лабароторная работа по "Программированию"
Автор: Egor_Belopukhov • Январь 8, 2023 • Лабораторная работа • 949 Слов (4 Страниц) • 135 Просмотры
Страница 1 из 4
Задание 1-3.
Отладить программы для алгоритмов 1-3. Выполнить перевод следующих чисел в тетради и протестировать на них программы: 30, 2042, 0.75, 0.35.
[pic 1]
- #include <iostream>
- #include <string>
- #include <stdio.h>
- #include <math.h>
- void alg1() {
- int A[10], N, q;
- printf("Ввод N и q: ");
- scanf("%d%d", &N, &q);
- int i = 0;
- do {
- A[i] = N % q;
- N = N / q;
- i++;
- } while (N > 0);
- i--;
- while (i >= 0) {
- printf("%i ", A[i]);
- i--;
- }
- printf("\n");
- }
- int alg2() {
- float B[10], D;
- int q, t;
- printf("Ввод D, q, t: ");
- scanf("%f%d%d", &D, &q, &t);
- for (int i = 0; i < t; i++) {
- float DP;
- D = modf(D * (float)q, &DP);
- B[i] = DP;
- if (D == 0.0f)
- break;
- }
- for (int i = 0; i < t; i++) {
- printf("%i ", (int)B[i]);
- }
- printf("\n");
- }
- int alg3() {
- int q;
- std::string A;
- std::cout << "Ввод q:";
- std::cin >> q;
- std::cout << "Ввод A:";
- std::cin >> A;
- int declen = A.find('.');
- if (declen == std::string::npos)
- declen = A.length();
- int fraclen = A.length() - declen;
- float x10 = 0, v = -fraclen;
- for (int i = A.length() - 1; i >= 0; i--) {
- if (A[i] == '.')
- continue;
- std::string as(1, A[i]);
- int a = std::stoi(as, nullptr, q);
- x10 += a*pow(q, v);
- v++;
- }
- std::cout << x10 << std::endl;
- }
- int main() {
- alg1();
- alg2();
- alg3();
- return 0;
- }
[pic 2]
Задание 4.
Разработать алгоритмы и программу с подпрограммами:
- для сдвига элементов в массиве вправо,
- для циклического сдвига элементом в массиве влево.
- #include <stdio.h>
- #include <stdlib.h>
- // Сдвиг вправо
- void rshiftiarr(int shift, int *arr, int len) {
- int *cpy = (int*)malloc(sizeof(int) * (shift % len));
- for (int i = 0; i < shift; i++) {
- cpy[i] = arr[(i + len - shift) % len];
- }
- for (int i = len - 1; i >= shift; i--) {
- arr[i] = arr[i - (shift % len)];
- }
- for (int i = 0; i < shift; i++) {
- arr[i] = cpy[i];
- }
- }
- // Сдвиг влево
- void lshiftiarr(int shift, int *arr, int len) {
- int *cpy = (int*)malloc(sizeof(int) * (shift % len));
- for (int i = 0; i < shift; i++) {
- cpy[i] = arr[i % len];
- }
- for (int i = 0; i < len - shift; i++) {
- arr[i] = arr[(i + shift) % len];
- }
- for (int i = 0; i < shift; i++) {
- arr[(i + len - shift) % len] = cpy[i];
- }
- }
- int main() {
- int A[5] = {
- 1, 2, 3, 4, 5
- };
- lshiftiarr(3, A, 5);
- rshiftiarr(1, A, 5);
- for (int i = 0; i < 5; i++) {
- printf("%i ", A[i]);
- }
- printf("\n");
- return 0;
- }
[pic 3]
...
Доступно только на Essays.club