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

Лаба4 Программирование

.docx
Скачиваний:
24
Добавлен:
18.02.2018
Размер:
45.82 Кб
Скачать

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]