Лаба4 Программирование
.docxЗадание 3. Ввести массив натуральных чисел a[N] размера N≤40 (все числа a[i]<10000), вывести его на экран монитора. Написать функцию, преобразующую натуральное число в число, равное произведению цифр, представляющих исходное число в M-ичной системе счисления (1<M≤9). Вывести на консоль в десятичной системе счисления исходный массив, предварительно заменив в нем числа, все цифры M-ичного представления которых отличны от нуля, на произведение цифр их четверичного представления, а остальные оставив без изменений.
Псевдокод:
Блок-схема:
#include "MY_MATH.h"
#include <stdio.h>
#include <stdlib.h>
int main(){
char logo[] =
"*********************************************************************\n"
"* *** *** *** ***** *\n"
"* * * * * * Nizhniy Novgorid Technical University *\n"
"* * *** * * Study work number 4. Task number 3. *\n"
"* *** * * *** * Performed student 17-IVT-3 Anisimova E.S *\n"
"* *\n"
"*********************************************************************\n";
printf("%s", logo);
int n, i;
int *arr;
printf("Vvedite kolichestvo elementov:");
while(scanf("%d",&n)!=1){
printf("Error!\n");
return 0;
}
arr=(int*)malloc(sizeof(int)*n);
for (i=0;i<=(n-1);i++){
printf("arr[%d]=", i);
scanf("%d",&arr[i]);
}
printf ("Ishodniy massiv: \n");
for (i=0; i<=(n-1); i++){
printf ("%d \n", arr[i]);
}
for(i=0; i<=(n-1); i++){
arr[i]=my_func(arr[i]);
}
printf("Nov.massiv:\n");
for (i=0; i<=(n-1); i++){
printf ("%d\n ", arr[i]);
}
return 0;
}
#if !defined MY_MATH
#define MY_MATH
#include <stdlib.h>
int my_func (int num){
int bin=0, sys, ss=0, mult=1, k=1, n1, n2;
printf("Vvedite SS: ");
/*Перевод в N систему счисления*/
scanf("%d", &sys);
n1=num;
while (n1>0){
bin += (n1 % sys)*k ;
k *= 10;
n1 /= sys;
}
printf ("%d\n", bin);
/*Вычисление произведения цифр*/
while (bin>0){
mult*=(bin % 10);
bin=bin/10;
}
n2=mult;
/*Либо перевод в 4 сс, либо оставить без изменений*/
if (n2>0){
k=1;
while(num>0){
ss += (num % 4) * k;
k *= 10;
num /= 4;
}
num=ss;
}
return num;
}
#endif