Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
9
Добавлен:
20.06.2014
Размер:
124.93 Кб
Скачать

2

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

ЛИПЕЦКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

КАФЕДРА АВТОМАТИЗИРОВАННЫХ СИСТЕМ УПРАВЛЕНИЯ

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

по дисциплине

«Технология программирования»

на тему:

«Программирование алгоритмов генерации псевдослучайных чисел»

Студент

.

подпись, дата

фамилия, инициалы

Группа

Принял

Домашнев П.А.

ученая степень, звание

подпись, дата

фамилия, инициалы

Липецк 2011

  1. Задание

Задание

Написать программу, осуществляющую генерацию определенного количества псевдослучайных чисел из заданного пользователем интервала заданным методом и вывод их на экран. Количество чисел и интервал вводит пользователь. Программа должна также записывать сгенерированную псевдослучайную последовательность в файл. Формат файла – двоичный.

Вариант 17

Алгоритм поиска

Мультипликативный метод

  1. Листинг программы

#include <stdio.h>

#include <conio.h>

#include <locale.h>

#include <malloc.h>

void numGen(int start, int end, char* name, int amount)

{

int x0;

FILE* fp = fopen(name, "wb");

if (fp == NULL)

{

printf("Ошибка открытия файла %s", name);

return;

}

int const c = 71; // Задаем константы с и m для алгоритма

int const m = 101; //

x0 = ((c + m + amount) % (end - start)) + start; // Задаем произвольное первое число из интервала

printf("%i ", x0);

fwrite(&x0, sizeof(int), 1, fp);

for (int i = 1; i < amount; i++)

{

x0 = (x0 * c) % m; // Алгоритм

x0 = (x0 % (end - start)) + start; // Приведение числа к интервалу

printf("%i ", x0);

fwrite(&x0, sizeof(int), 1, fp);

}

fclose(fp);

}

void main()

{

setlocale(LC_ALL, "Russian");

int start, end, amount;

char name[256];

printf("Генерация случайных значений\n\rВведите начальный интервал: ");

scanf("%i", &start);

printf("Введите конечный интервал: ");

scanf("%i", &end);

if (start >= end)

{

printf("Интервал введен неверно");

return;

}

printf("Введите количество чисел: ");

scanf("%i", &amount);

printf("Введите имя файла: ");

scanf("%s", name);

numGen(start, end, name, amount);

_getch();

}

  1. Контрольный пример

  1. Блок-схема

  1. Вывод

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

  1. Список использованной литературы

  1. Шилдт Г. Искусство программирования на C++. БХВ.2005

  2. Шилдт Г. C++ Руководство для начинающих. Вильямс.2005

  3. Страуструп Б. Язык программирования С++. Специальное издание, 3-изд. Бином.2004

Соседние файлы в папке Лабораторная работа №4 Вариант 17