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

Лабораторная работа №4 Вариант 17

.doc
Скачиваний:
8
Добавлен:
20.06.2014
Размер:
1.8 Mб
Скачать

2

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

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

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

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

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

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

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

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

на тему:

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

Студент

Понарьин С.Н.

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

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

Группа

АС-09

Принял

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

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

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

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

Липецк 2010

  1. 1. Задание:

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

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

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

  1. 2. Блок-схема программы

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

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <string.h>

#include <locale.h>

int min,max,*data,c=177;

FILE *fp;

void Multi(int i)

{

data[i]=c*data[i-1]%(max+1-min)+min;

}

void main()

{

setlocale(LC_ALL,"Rus");

int i,kol_data;

char NameFile [20];

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

scanf("%s",NameFile);

strcat(NameFile,".bin");

fp=fopen(NameFile,"wb");

printf("Введите минмальный элемент: ");

scanf("%d",&min);

printf("Введите максимальный элемент: ");

scanf("%d",&max);

if(min>max)

{

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

getch();

return;

}

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

scanf("%d",&kol_data);

data=(int*)malloc(sizeof(int)*kol_data);

printf("Введите первый элемент: ");

scanf("%d",&data[0]);

for(i=1;i<kol_data;i++)

Multi(i);

printf("\n\nРезультат:\n\n");

for(i=0;i<kol_data;i++)

{

printf("x[%d]=%d%c\n",i+1,data[i]);

fwrite(&data[i],sizeof(data[i]),1,fp);

}

fclose(fp);

free(data);

getch();

}

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

1.

2.