}else{
if(array[i]>array[i-1]){el++;}
else{
cycle=0;
if(el>el_max){ el_max=el; pos_max=pos; }
}
}
}
if(el>el_max){ el_max=el; pos_max=pos; }
printf("\nMaximalnaya posledovatelnost is %d elementov nachalo %d",el_max,pos_max);
}
3.1.12. Написать функцию, преобразовывающую дробную часть переменной типа double в строку символов (путем последовательного умножения дробной части на 10).
Постановка задачи : Дана переменная типа double.Задача: преобразовать дробную часть переменной в строку символов. при
Алгоритм: В функцию передается переменная (типа double) и указатель на начало результирующей строки. От числа отнимаем его целую часть. Полученное число умножаем на 10 и находим остаток от деления на 10 (предварительно преобразовав нецелое число в целое) и записываем остаток в массив. Теперь от нашего числа отнимаем целую часть. Делаем до тех пор пока наше число не будет равно нулю.
/*в функцию передается переменная (num) и указатель на начало результирующей строки (*str1)*/
int func(double num, char *str1){
int len = 2;
int index = 0;
double tmp;
char c;
num -= floor(num); //от числа отнимаем его целую часть, floor() – выделяет у числа целую часть не округляя его
while(num != 0.0){ //цикл, до тех пор пока наше число не будет =0
num *= 10; //умножаем наше число на 10
tmp = (long) num % 10; //преобразовав его в целое находим остаток от деления на 10
str1[index ++] = tmp; //записываем полученный остаток в строку
str1=realloc(len); //динамически увеличиваем массив до длины len
len++; //увеличиваем длину строки
num = num - floor(num); //от полученного числа отнимаем его целую часть
}
return 0;
}
3.1.13. Написать
функцию, выполняющую поиск наименьшего общего кратного для всех элементов
массива - минимальное число, которое делится на все элементы массива без
остатка.
Постановка задачи : Дан массив целых чисел (типа integer). Задача: найти наименьше кратное для всех элементов массива.
Описание алгоритма: В функцию передаётся указатель на массив и кол-во элементов.Берём за Наименьшее Общее Кратное (НОК) единицу, делаем цикл по всему массивуи смотрим делится ли текущий НОК на каждый элемент массива, если да , то оно и есть искомый НОК иначе увеличиваем его на единицу и запускаем цикл заново.
Текст:
int krat(int *array,int kol)
{
int rez=-1;
for(i=1;i<65535;i++) //перебираем НОК от 1 до 65535
{
for(j=0;j<kol;j++) //смотрим делится ли текущий нок
//на все элементы массива
if(i%array[j]!=0)break; //проверяем делится ли НОК
//на текущий элемент массива
if(j==kol){rez=i; break;} //если кол-во делящихся
//Эл. Массива = кол-во Эл. Массива НОК
// присваиваем НОК = i
}
return rez; // возвращаем найденный НОК или -1.
}
3.1.14. Написать функцию, формирующую массив простых чисел в диапазоне от 2 до заданного. Очередное простое число определяется попыткой деления нацело числа на все уже накопленные простые числа.
Постановка задачи: Задается целое число. Наша задача сформировать массив простых чисел в диапазоне от 2 до заданного.
|
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.