
- •230400 "Информационные системы и технологии"
- •1 Получение псевдослучайных чисел
- •Введение
- •Генератор псевдослучайных чисел
- •1.3 Методы получение псевдослучайных чисел
- •1.3.1 Линейный конгруэнтный метод
- •1.3.2 Метод Фибоначчи
- •1.3.3 Вихрь Мерсенна
- •1.4 Тестирование псевдослучайных последовательностей
- •1.6 Список использованных источников
- •2.1 Постановка задачи
- •2.2 Программный код с необходимыми комментариями
1.6 Список использованных источников
1) Керниган Б. Язык программирования Си: Задачи по языку Си. / Б. Керниган, Д. Ритчи, А. Фьюэр М.: Финансы и статистика, 1985. 190 - 192 с.
2) Подбельский В.В., Фомин С.С. Программирование на языке Си. Учеб. пособие. М.: Финансы и статистика, 2004. 382-385 с.
3) Генераторы псевдослучайных чисел и методы их тестирования. URL: http://www.referat.ru/referats/view/30078 (дата обращения: 25.05.2013)
2 Разработка на языке С++ программы для отбора команды на олимпиаду по программированию (на основе связного списка)
2.1 Постановка задачи
Программа предназначена для формирования и просмотра команды для олимпиады по программированию.
а) Ввод информации.
По запросу с клавиатуры поочередно вводятся фамилия, имя студента, а также язык программирования, на котором он предпочитает писать программы (Pascal, C,C++).
б) Просмотр введеного списка.
Если список не пустой, то при выборе этого пункта меню на экран поочередно выводится полная информация о каждом студенте.
в) Отбор команды.
При выборе этого пункта меню пользователь должен указать язык программирования, на основании этого из списка студентов выбирается не более трех человек (их может быть меньше), владеющих этим языком.
г) Проверка, может ли быть укомплектована команда.
Предполагается, что команда состоит из трех человек. Пользователь вводит язык программирования, а программа сообщает ему, можно ли или нельзя укомплектовать команду (можно, если студентов, владеющих данным языком, не менее трех)
2.2 Программный код с необходимыми комментариями
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <fstream.h>
class students {
struct prog{
char * fam;
char * name;
char * lang;
prog * next;
prog(){ fam=""; name="";
lang=""; next=NULL;};
friend ostream & operator<<(ostream& os, prog * pr){
os<<pr->fam<<'\t'<<pr->name<<'\t'<<pr->lang<<endl;
return os;}
};
int progCount;
prog * first;
prog * current;
public:
students(){
progCount=0;
first=current=NULL;};
prog * getfirst(){
return this->first;
}
void Add(char* f, char* n, char * l, int len){
prog * b= (prog *) new char [len];
char * f1= new char (strlen(f)+1),
* n1= new char (strlen(n)+1),
* l1= new char (strlen(l)+1);
strcpy(f1,f);
strcpy(n1,n);
strcpy(l1,l);
b->fam=f1; b->name=n1; b->lang=l1;
if (progCount==0) {first=b;}
else current->next=b;
current=b;
progCount++;
b->next=NULL;
}
void Show(prog * p){
prog *cur=p;
if (progCount==0) {cout<<"No data."<<endl; return;};
while (cur) {
cout<<cur;
cur=cur->next;
}
}
void Remove(char * f, char * n, char * l){
prog * rem=first, *prev=rem;
int i=0;
if (progCount==0) {cout<<"No data."<<endl; return;};
while (!strcmp(first->fam,f) && !strcmp(first->name,n) && !strcmp(first->lang,l)) {
i++; progCount--;
first=first->next;
delete rem;
prev=rem=first;
}
while (rem!=NULL){
if (!strcmp(rem->fam,f) && !strcmp(rem->name,n) && !strcmp(rem->lang,l)) {
prev->next=rem->next;
delete rem;
rem=prev->next;
i++; progCount--;}
else {prev=rem;
rem=rem->next;}
};
if (i==0) {cout<<"Not found."<<endl; return;}
else { cout<<i<<" programmer(s)="<<f<<' '<<n<<' '<<l<<" is(are) deleted."<<endl;}
}
void RemoveAll(){
prog * rem=first;
while (rem!=NULL) {
first=first->next;
delete rem;
rem=first;
}
progCount=0;
}
void Select(char * l){
int i=0;
prog * cur=first;
while (cur){
if (!strcmp(cur->lang, l)){
cur=cur->next;
i++;}
else { cur=cur->next;}
if (i==3) {break;}
}
if (i<3){
cout<<"Can't select team"<<endl; return;}
else { cout<<"Your team: "<<endl; i=0; cur=first;
while (cur){
if (!strcmp(cur->lang, l)){
cout<<cur;
cur=cur->next;
i++;}
else { cur=cur->next;}
if (i==3) {break;}
} }
}
void Save(){
prog * cur=first;
ofstream nf;
nf.open("YEARWORK\\Program.txt");
if (nf==NULL) {
cout<<"Can't open file"<<endl;
return;}
while (cur) {
nf<<cur;
cur=cur->next;
}
nf.close();
cout<<"File created successfully!"<<endl;
}
};
students a;
void menu(){
clrscr();
cout<<"Menu:"<<endl;
cout<<"1.Add student."<<endl;
cout<<"2.Show student(s)."<<endl;
cout<<"3.Remove student(s)."<<endl;
cout<<"4.Remove all student(s)."<<endl;
cout<<"5.The selection of team."<<endl;
cout<<"6.Save (file ""Program.txt"")."<<endl;
cout<<"7.Clear screen."<<endl;
cout<<"0.Exit."<<endl;
};
void main(){
char * f, *n, *l;
int c, len;
menu();
do{
cout<<"Choose and type: ";
cin>>c;
switch (c) {
case 1: { cout<<"Family: "; cin>>f;
cout<<"Name: "; cin>>n;
cout<<"Language (Pascal/ C/ C++): "; cin>>l;
len=strlen(f)+strlen(n)+strlen(l)+3;
a.Add(f,n,l, len);break;}
case 2: { a.Show(a.getfirst());break;}
case 3: { cout<<"Family: "; cin>>f;
cout<<"Name: "; cin>>n;
cout<<"Language (Pascal/ C/ C++): "; cin>>l;
a.Remove(f,n,l);break;}
case 4: { a.RemoveAll(); break;}
case 5: { cout<<"What language: ";
cin>>l;
a.Select(l);
break;}
case 6: {a.Save(); break;}
case 7: {menu(); break;}
case 0: {break;}
default : {cout<<"Invalid menu option."<<endl; break;}
}
}
while (c!=0);
}