C/C++

Написать программу на языке С.

Задан массив А из k целых чисел. Найти минимальный среди отрицательных элементов (min) и сформировать массив B умножением элементов массива A на (10+min).

Для каждого варианта реализовать два способа задания массивов:
ввод значений с клавиатуры и заполнение случайными числами. Для каждого
способа реализовать вывод получившегося массива на экран в виде функции.
Память для массива выделяется динамически.

Примечание. При защите лабораторной работы уметь выделять
память функциями malloc и calloc.
?J
?aniyaz Jorayew
128
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<unistd.h>

//функция вывода значений массива:
void out(int *arr, int k)
{
for(int i = 0; i < k; i++)
{
printf("\n");
printf("[%d]=%2d ",i+1,arr[i]);
}
return 0;
}

//функция ввода значений массива:
void in(int *arr, int k)
{
printf("\nInput your array:\n");
for(int i = 0; i < k; i++)
{
printf("[%d]=",i+1);
scanf("%d",&arr[i]);
}
return 0;
}

//функция генерации значений массива:
void gen(int *arr, int k)
{
srand(time(NULL));
for(int i = 0; i < k; i++)
{
if(rand()%2 == 0)
arr[i]=(-1)*(rand()%10);
else arr[i]=rand()%10;
}
return 0;
}

//функция поиска минимального значения:
int minfind(int *arr, int k)
{
int min=0;
for(int i = 0; i < k; i++)
if(arr[i]<0 && arr[i]<min)
min=arr[i];
return min;
}

//функция создания массива B:
void mult(int *a, int *b, int k, int min)
{
for(int i = 0; i < k; i++)
b[i]=a[i]*(10+min);
return 0;
}

int main()
{
int *A,*B,k=0;
int s=0, min=0;
printf("Enter count of array: k=");
scanf("%d",&k);
A=(int*)malloc(k*sizeof(int));
B=(int*)malloc(k*sizeof(int));
if(!A || !B)
{
printf("\nError. Array no created.");
exit(1);
};
printf("\nVariant of array making:");
printf("\n1 - generation, 2 - hands inputing: ");
scanf("%d", &s);

switch (s)
{
case 2: in(A,k);break;
case 1: gen(A,k); break;
default: exit(0);
};

printf("\nArray A:");
out(A,k);
min=minfind(A,k);
if(min==0)
{
printf("\n\n\t min!<0 ");
exit(0);
}
mult(A,B,k,min);//формируем массив B
printf("\nArray B:");
out(B,k);
fflush(stdout);//сброс буфера для паузы
sleep(10);//пауза
return 0;
}
Валерий Вижунов
Валерий Вижунов
37 945
Лучший ответ