Задача 2.2

1. Условие

Дано натуральное число n. Получить последовательность b1, b2, … bn:

bi = 1 + 1/2 + ... + 1/i,

где i=1, 2, …, n.

2. Решение

Задаем размер массива n. Выделяем блок оперативной памяти под n чисел. В цикле производим инициализацию массива по формуле b[i] = b[i-1] + 1.0/(float)i. Элементы массива выводим на экран.

3. Алгоритм решения

4. Текст программы


1 :  #include <stdio.h> 
2 :  #include <alloc.h>  
3 :  #include <conio.h>  
4 :  void main() 
5 :  {
6 :      int i, n; 
7 :      float *b; 
8 :      clrscr( ); 
9 :      printf( "\n\t\t Введите количество элементов n = " ); 
10:      scanf( "%d", &n ); 
11:      b=( float * )malloc( n*sizeof(float) ); 
12:      printf( "\n \t \t \t Для b[i] = 1 + 1/2+...+1/i:" ); 
13:      printf( "\n \t \t \tсформированная последовательность \n" ); 
14:      b[0]=1; 
15:      for(i=1; i<n; i++) 
16:      { 
17:           b[i]= b[i-1] + 1.0/(float)i; 
18:           printf( "\n \t \t \t \t b[%d]=%lf ",i, b[i] ); 
19:      } 
20:      for(i=0; i<n; i++) 
21:      { 
22:           printf( "\n \t \t \t \t b[%d]=%lf ",i, b[i] ); 
23:      } 
24:      printf( "\n \n \n \t \t \t Для выхода нажмите любую клавишу." ); 
25:      getch(); 
26:      free(b); 
27:  }

5. Работа программы

  Введите количество элементов n=3
  Для b[i]=l+l/2+...+l/i: сформированная последовательность:
  b[0]=1.000000
  b[1]=1.500000
  b[2]=1.833333
  Для выхода нажмите любую клавишу.
  

6. Проверка

Произведем вычисления:
b[0]=1;

b[1]=1+1/2, то есть b[1]=1,5;
b[2]=1+1/2+1/3, то есть b[2]=1,833333 .
Таким образом, программа работает верно.

 

Хостинг от uCoz