- •Лабораторная работа №3
- •Новосибирск 2011
- •1. Цель работы:
- •4. Текст программы решения задачи:
- •5. Результаты работы программ:
- •3. Алгоритм решения задачи:
- •4. Текст программы решения задачи:
- •5. Результаты работы программ:
- •4. Текст программы решения задачи:
- •5. Результаты работы программ:
- •4. Текст программы решения задачи:
- •5. Результаты работы программ:
- •4. Текст программы решения задачи:
- •5. Результаты работы программ:
- •3. Алгоритм решения задачи:
- •4. Текст программы решения задачи:
- •5. Результаты работы программ:
- •4. Текст программы решения задачи:
- •5. Результаты работы программ:
5. Результаты работы программ:
2. 4_2: Вычислить сумму ряда 1 - 1/2 +1/3 - ... +1/999 - 1/1000
слева - направо
слева - направо, сначала все положительные, затем все отрицательные и вычесть из положительных отрицательные
справа - налево
справа - налево, сначала все положительные, затем все отрицательные и вычесть из положительных отрицательные
(0.603097183059945296917232371458)
3. Алгоритм решения задачи:
Для вычисления суммы ряда запускается цикл, в заданиях 2 и 4 положительные и отрицательные элементы суммируются по отдельности, и лишь потом находится их разница.
4. Текст программы решения задачи:
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <iostream>
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL,"russian");
//Объявление переменных
int i=0;
float summa=0;
float intermediateValue=0;
float positive=0;
float negative=0;
printf("Вычисление суммы ряда 1 - 1/2 +1/3 - ... +1/999 - 1/1000 \n");
//Вычисление суммы ряда слева-направо
printf("\n");
i=1;
while (i<=1000)
{
intermediateValue = (i % 2 == 0)? (float)-1 /i : (float)1 / i ;
summa = summa+intermediateValue;
i=i+1;
}
printf("1)Cумма ряда слева-направо равняется %f\n", summa);
/*слева - направо, сначала все положительные, затем все
отрицательные и вычесть из положительных отрицательные*/
printf("\n");
i = 1;
summa=0;
while (i <= 1000)
{
intermediateValue = (i % 2 == 0)? (float)-1 /i : (float)1 / i ;
if (intermediateValue > 0)
positive = positive + intermediateValue;
else
negative = negative + intermediateValue;
i=i+1;
}
summa = positive - negative;
printf("2)Сумма положительных равняется %f , отрицательных %f , а разность положительных и отрицательных %f \n", positive, negative, summa);
//справа - налево
printf("\n");
i=1000;
summa=0;
while (i>=1)
{
intermediateValue = (i % 2 == 0)? (float)-1 /i : (float)1 / i ;
summa = summa+intermediateValue;
i=i-1;
}
printf("3)Cумма ряда справа-налево равняется %f\n", summa);
/*справа - налево, сначала все положительные, затем все
отрицательные и вычесть из положительных отрицательные*/
printf("\n");
i = 1000;
summa=0;
positive = 0;
negative = 0;
while (i >= 1)
{
intermediateValue = (i % 2 == 0)? (float)-1 /i : (float)1 / i ;
if (intermediateValue > 0)
positive = positive + intermediateValue;
else
negative = negative + intermediateValue;
i=i-1;
}
summa = positive - negative;
printf("4)справа - налево, Сумма положительных равняется %f , отрицательных %f , а разность положительных и отрицательных %f \n", positive, negative, summa);
getchar();
getchar();
return 0;
}
5. Результаты работы программ:
2. Задание 11: Деление числа А на число В с произвольной точностью. (Деление в столбик) 32/9.3 = 3.4408602150537
Вычисляется F = INT(A/B), а затем A i = (Ai-1 - F B) 10
3. Алгоритм решения задачи: После ввода данных, запускается цикл - счетчик, в ходе которого находятся числа, которые идут после запятой, при делении A на B