Автор: Пользователь скрыл имя, 13 Апреля 2012 в 21:54, лабораторная работа
1. Найдите произведение всех простых делителей заданного числа.
2. Дана последовательность из N целых чисел. Определите коли-
чество чисел в наиболее длинной подпоследовательности из подряд идущих нулей.
3. Не используя стандартных функций (за исключением abs) вычислить с точностью y=ln (1+x)/(1-x)=2(x+(x^3/3)+(x^5/5)+...+(x^2n+1)/(2n+1)+...) при (|x|<1). Считается, что требуемая точность достигнута, если очередное слагаемое по модулю меньше abs.
1. Найдите произведение
всех простых делителей
2. Дана последовательность из N целых чисел. Определите коли-
чество чисел в наиболее длинной подпоследовательности из подряд идущих нулей.
3. Не используя
стандартных функций (за исключением abs)
вычислить с точностью y=ln (1+x)/(1-x)=2(x+(x^3/3)+(x^5/
Ответы:
№1
№2 (Дано натуральное число N (N>9). Определить количество нулей, идущих подряд в младших разрядах данного числа. Пример. N=1020 000. Количество нулей равно четырем.)
Или
Определить количество чисел в наиболее длинной последовательности из подряд идущих нулей.
// Дана последовательность из 100 целых чисел.
// Определить количество
чисел в наиболее длинной
#include "stdafx.h"
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
const int N = 100;
int a[N];
int _tmain(int argc, _TCHAR* argv[])
{
// Инициализация и печать массива
srand((unsigned)time(NULL));
for(int i=0; i<N; i++) {
a[i] = int((rand()/(double)RAND_MAX) * 3.0);
printf(" %d", a[i]);
}
// Поиск наиболее длинной последовательности из подряд идущих нулей
int max_start = -1;
int max_length = 0;
int cur_start = -1;
int cur_length = 0;
for(int i=0; i<N; i++) {
if (a[i]==0) {
cur_length++;
if (cur_start < 0) cur_start = i;
}
else {
if (cur_length > max_length) {
max_length = cur_length;
max_start = cur_start;
}
cur_length = 0;
cur_start = -1;
}
}
if (max_start < 0)
printf("\n\nV massive net nulevyh elementov!\n\n");
else
printf("\n\nNachalo posledovatelnosti: %d, dlina: %d\n\n", max_start, max_length);
return 0;
}
Или
PROGRAM OpredelitSkolkoMaxPodradNulei(
VAR x: ARRAY[1..100] OF INTEGER;
skolkoUzhePodriadNulei,
skolkoMaxPodriadNulei:INTEGER;
j:INTEGER;
BEGIN
for j:=1 to 100 do
begin
write(‘Введите ‘,j,’-е число: ‘);
readln(x[j]);
end;
writeln(‘Ввод исходных данных закончен!’);
skolkoUzhePodriadNulei:=0;
skolkoMaxPodriadNulei:=0;
for j:=1 to 100 do
if x[j]<>0
then begin
if skolkoMaxPodriadNulei < skolkoUzhePodriadNulei
then skolkoMaxPodriadNulei:= skolkoUzhePodriadNulei;
skolkoUzhePodriadNulei:=0
end
else Inc(skolkoUzhePodriadNulei);
writeln(‘Самая длинная последовательность - из ‘,
skolkoMaxPodriadNulei, ‘ нулей.’);
Readln
END.
№3.