дз 1 семестр / ДЗ 5
.docxДомашняя работа №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;
}
Результаты выполнения программы: