ДОМАШНЕЕ ЗАДАНИЕ № 1
по курсу «Информатика» для студентов дневного и вечернего отделений инженерно-экономического факультета и факультета ММТ
Задание:
Составить программу и блок-схему для решения нижеследующих задач. Решение каждой задачи сопроводить пояснительной запиской с объяснением используемых в задаче переменных, операторов, функций и прочих конструкций языка Си.
Задача 1.
Даны x, y, z. Вычислить a, b, используя приведенные ниже формулы. Получить max(a, b).
-
№ вар-та
Исходные данные
1
Решение:
a) Программа.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
float x,y,z,a,b,max;
printf("\ninput x,y,z: ");
scanf("%f%f%f",&x,&y,&z);
a=(pow(fabs(x-1),1./2)-pow(fabs(y),1./3))/(1+pow(x,2)/2+pow(y,2)/4);
b=x*(atan(z)+exp(-(x+3)));
if(a==b)printf("\nmax=a=b=%f",a);
else {if(a>b) max=a; else max=b;
printf("\nmax=%f\n",max);}
system("PAUSE");
return 1;
}
Результат:
input x,y,z: 1,2,3
max=0.018316
Для продолжения нажмите любую клавишу . . .
b ) Блок-схема.
+ -
+ -
с) Пояснительная записка.
Программа начинается с директив препроцессора, начинающихся с символа #, которые дают указание препроцессору подключить к программе заголовочные файлы с описанием тех или иных библиотечных функций. В данном случае подключается заголовочный файл stdio.h с описанием функций ввода-вывода, файл math.h для библиотечных математических функций.
Программа содержит основную функцию main(), с которой и начинается выполнение программы. Поскольку функция main() возвращает целое число, она объявляется с ключевым словом int. Тело функции main() представляет собой блок и ограничено фигурными скобками.
В теле функции main() объявляются вещественные переменные х, у, z, a, b, max.
х, у, z - исходные данные; a, b - расчетные переменные для вычисления по формулам; max для хранения максимального значения из a и b.
Далее содержится вызов библиотечной функции printf(), которая выводит на экран текст «Введите х, у, z». Предварительно происходит перевод строки, который задается в функции printf() управляющими символами “\n”.
Ввод числовых значений х, у, z происходит со стандартного устройства ввода (клавиатуры) по адресам: &х, &у, &z соответственно. Осуществляет это библиотечная функция scanf(), в которой используется спецификация формата ввода %f, так как х, у, z - вещественные числа.
Далее вычисляются значения а и b с помощью арифметических операций и библиотечных математических функций.
Использование конструкции вложенных условных операторов:
if (выражение) оператор 1; else
{ if (выражение) оператор 2; else оператор 3;}
позволяет выбрать максимальное из значений а и b, которое затем присваивается переменной max.
Использование функции printf() дает возможность вывести на стандартное устройство вывода (монитор) числовое значение переменной max. Здесь также используется спецификация вывода %f, поскольку max - вещественное число.
Далее функция main() возвращает значение 1, что говорит системе о правильности выполнения программы, после чего тело функции main() закрывается фигурной скобкой. На этом программа заканчивается.
Задача 2.
Вычислить .
-
№ вар-та
Исходные данные
1
Решение:
а) Программа.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
float s=0, an;
int n, k=1;
for (n=1;n<=10;n++)
{
k*=n;
an=pow(-1,n-1)/k;
s+=an;
}
printf("\nSumma=%f\n",s);
system("PAUSE");
return 1;
}
Результат:
Summa=0.632120
Для продолжения нажмите любую клавишу . . .
b) Блок-схема.
с) Пояснительная записка.
Программа начинается с директив препроцессора, дающих указание препроцессору подключить к программе заголовочные файлы stdio.h с описанием функций ввода-вывода и math.h для подключения библиотечных математических функций.
Программа содержит основную функцию main(). В ее теле объявляются:
целая переменная n необходимая для параметра цикла for; целая переменная k для накопления произведения n!=1*2*3*...10, которая предварительно инициализируется единицей; вещественные переменные: s для накопления суммы элементов, аn, которая предварительно инициализируется нулем; an для обозначения элементов аn.
Далее открывается цикл for, в котором n изменяется от 1 до 10 с шагом 1. В теле цикла считается n!=1*2*3*...10, вычисляется текущий элемент суммы an и накапливается сумма s. Тело цикла for представляет собой блок, который заключается в фигурные скобки. По окончании работы цикла сумма s выводится на экран. Тело функции main() закрывается фигурной скобкой.
Задача 3.
Задана последовательность . Найти такое ai, для которого выполняется | ai – ai-1 | < , где =0,0001 .
-
№ вар-та
Исходные данные
1
Решение:
а) Программа.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
float e=0.0001,ai,ai1;
int i=1;
ai=1/(pow(i,2)+2*i+10);
do
{
ai1=ai;
i++;
ai=1/(pow(i,2)+2*i+10);
}
while (fabs(ai-ai1)>=e);
printf("\nai=%f\n",ai);
system("PAUSE");
return 1;
}
Результат:
ai=0.001261
Для продолжения нажмите любую клавишу . . .
b) Блок-схема.
+
-
с) Пояснительная записка.
Программа начинается с директив препроцессора, дающих указание препроцессору подключить к программе заголовочные файлы stdio.h с описанием функций ввода-вывода и math.h для подключения библиотечных математических функций.
Программа содержит основную функцию main(). В ее теле объявляются:
целая переменная i необходимая для обозначения номера текущего члена последовательности ai; вещественные переменные: е - для обозначения точности вычисления текущего члена последовательности; ai, ail - для обозначения последующего и предыдущего членов последовательности аi; Для вычисления членов последовательности аi-используется цикл с постусловием: do оператор while (выражение).
По окончании работы цикла вычисленный член последовательности ai выводится на экран. Тело функции main() закрывается фигурной скобкой.