Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
metodichka_SI.doc
Скачиваний:
30
Добавлен:
23.02.2015
Размер:
2.05 Mб
Скачать

4 Задача

Цель: работа с элементарными алгоритмами.

Нахождение НОД.

Дополнительное условие: программа написана без использования функции

#include <stdio.h>

// функция для вычисления максимального числа

int max(int a, int b);

intmain()

{

//первое число

inta;

//второе число

int b;

int NOD = 0;

printf("Input first number ");

scanf("%d",&a);

printf("Input second number ");

scanf("%d",&b);

// если число b больше чем a, меняем местами

if (max(a,b) == b)

{

int tmp = b;

b=a;

a=tmp;

}

// ищем среди чисел меньших b НОД

for (int i = b; i > 0; i--)

{

// если число является делителем и a и b, то это число и будет НОД

if (a % i == 0 && b % i == 0)

{

NOD = i;

break;

}

}

// выводим НОД для чисел a и b

printf("NOD [%d,%d]=%d\n",a,b,NOD);

return 0;

}

// функция для вычисления максимального числа

int max (int a, int b)

{

// если a больше чем b, то возвращаем a

if (a>b)

returna;

else

// если b больше чем a, то возвращаем b

return b;

}

Дополнительное условие: программа написана с использованием функции.

#include <stdio.h>

int min(int a, int b);

int getNOD(int a, int b);

// функция для вычисления минимального числа

int min(int a, int b)

{

return (a < b) ? a : b;

}

// нахождение НОД двух чисел

int getNOD(int a, int b)

{

// ищем среди чисел меньших bНОД

for (int i = min(a, b) ; i > 0; i--)

{

// если число делит и a и b, то это число и будет НОД

if (a % i == 0 && b % i == 0)

{

return i;

}

}

return -1;

}

int main()

{

int a;

int b;

printf("Input first number ");

scanf("%d",&a);

printf("Input second number ");

scanf("%d",&b);

printf("NOD [%d,%d] = %d\n", a, b, getNOD(a, b));

return 0;

}

Самостоятельная работа

  1. Получить все натуральные трехзначные числа, сумма цифр которых равна m (натуральное число вводит пользователь).

  2. Перевести в четверичную систему счисления дату своего рождения.

Лабораторная работа №3

Ряды

Цель: закрепление на практике знаний основных конструкций языка. Вычисление суммы бесконечного ряда.

Методические рекомендации: лабораторная работа рассчитана на 2 часа и состоит из анализа одного задания и выполнения самостоятельной работы.

Обязательное зачетное задание.

Задача

Вычислить сумму бесконечного ряда .

Дополнительное условие:использование рекуррентных отношений.

#include <stdio.h>

#include <math.h>

#defineEPS0.0001

// вычисление суммы бесконечного ряда с заданной точностью

double value(int x);

// функция для вывода наименований столбцов таблицы

voidprintHeader();

// печать таблицы значений

void printRow(int x, double sum);

double value(int x)

{

double sum = 0;

double f = 1;

// до тех пор, пока абсолютное значение очередного члена ряда больше заданной точности

for (int k = 0; fabs(f) > EPS; k++)

{

// вычисление следующего члена ряда

f = -f * (k + 2) * x / pow (k + 1, 2);

// накапливание суммы

sum+=f;

}

// увеличение переменной sumна 1

returnsum+ 1;

}

// функция для вывода наименований столбцов таблицы

void printHeader()

{

printf("| x \t| f(x) \t|\n");

printf("-------------------------\n");

}

// печать таблицы значений

void printRow(int x, double sum)

{

printf("| %d \t| %f\t|\n", x, sum);

}

intmain()

{

// левая граница суммы

inta;

// правая граница суммы

int b;

//шаг

int h;

printf("Input left bound: ");

scanf("%d",&a);

printf("Input right bound: ");

scanf("%d",&b);

printf("Input estimation step: ");

scanf("%d",&h);

printHeader();

for (int x = a; x <= b; x += h)

{

printRow(x, value(x));

}

return0;

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]