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

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

Задание 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;

}

Примеры:

30

2942

0,75

0,35

Задание 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 main() {

setlocale(LC_ALL, "ru");

int i, a[10];

int* m;

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

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

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

}

m = f1(a);

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

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

}

return 0;

}

Б) Сдвиг массива влево

#include <conio.h>

#include <stdio.h>

#include <locale.h>

#include <math.h>

int* f1(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]);

}

m = f1(a);

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

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

}

return 0;

}

Соседние файлы в папке 5