Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

дз 1 семестр / ДЗ 5

.docx
Скачиваний:
0
Добавлен:
11.05.2024
Размер:
119.15 Кб
Скачать

Домашняя работа №5

Задание 1-3

Условие задачи:

Отладить программы для алгоритмов 1-3.

Текст программы:

#include<conio.h>

#include<locale.h>

#include<math.h>

#include <stdio.h>

int* f1(int n, int q) {

int k = 0, a[10], i;

while (n > 0) {

a[k] = n % q;

n = n / q;

k++;

}

for (i = k - 1; i >= 0; i--) {

printf("%d", a[i]);

}

return a;

}

int* f2(float d, int q) {

int b[5], i;

float dp;

b[0] = 0;

printf(",");

for (i = 1; i < 5; i++) {

dp = d * q;

d = dp - int(dp);

b[i] = int(dp);

printf("%d", b[i]);

if (d == 0) return b;

}

}

float f3(float x, int q) {

float xp, a[10], x10 = 0, v;

int t = 0, i = 0, xs, n = 0;

xp = x - int(x);

while (xp != 0) {

xp = x - int(x);

x = x * 10;

t++;

}

xs = int(x);

while (xs > 0) {

a[n] = xs % 10;

xs = xs / 10;

n++;

}

v = pow(q, -t);

for (i = 0; i < n; i++) {

x10 = x10 + a[i] * v;

v = v * q;

}

return x10;

}

int main() {

setlocale(LC_ALL, "ru");

int p, q;

float x, z, xp;

printf("Введите число:\n");

scanf_s("%f", &x);

printf("Введите систему счисления числа:\n");

scanf_s("%d", &p);

printf("Введите новую систему счисления:\n");

scanf_s("%d", &q);

printf("Число в новой системе счисления:\n");

if (p != 10) z = f3(x, p);

if (q == 10) printf("%f", z);

else {

xp = x - int(x);

x = x - xp;

if (x > 0) int* a = f1(x, q);

if (xp > 0) int* b = f2(xp, q);

}

return 0;

}

Результаты выполнения программы:

Задание 4

Условие задачи:

Разработать алгоритмы и программу с подпрограммами для сдвига элементов в массиве влево (вправо).

Схема алгоритма:

Текст программы:

#include <conio.h>

#include <stdio.h>

#include <locale.h>

#include <math.h>

int* f1(int x[10]) {

int i, m, k, j, q;

printf("Сколько смещений вправо сделать ");

scanf_s("%d", &q);

k = 10 - q % 10;

for (j = 0; j < k; j++) {

m = x[0];

for (i = 0; i < 9; i++) {

x[i] = x[i + 1];

}

x[9] = m;

}

return x;

}

int* f2(int x[10]) {

int i, m, k, j;

printf("Сколько смещений влево сделать ");

scanf_s("%d", &k);

for (j = 0; j < k; j++) {

m = x[0];

for (i = 0; i < 9; i++) {

x[i] = x[i + 1];

}

x[9] = m;

}

return x;

}

int main() {

setlocale(LC_ALL, "RU");

int i, a[10];

int* m;

for (i = 0; i < 10; i++) {

printf("Введите элемент массива a: ");

scanf_s("%d", &a[i]);

}

printf("Введите направление сдвига: вправо-0, влево-1. ");

scanf_s("%d", &i);

if (i == 0) m = f1(a);

else m = f2(a);

for (i = 0; i < 10; i++) {

printf(" %d ", m[i]);

}

return 0;

}

Результаты выполнения программы:

Соседние файлы в папке дз 1 семестр