Назад | Начало урока | Вперед
Содержание

Глава 3

9:19 02.01.2006

Программа R30_02d

d:\ЯзыкС++\Kross01\StructClass\Упражнения1\R30_02d

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

Добавлены три заголовочных файла
#include <stdlib.h>
#include <math.h>
#include <time.h>
и добавлена инструкция

srand(time(NULL));

необходимых для правильной работы
функции rand()

После этого инструкции
num_curword1 = rand()%400;
nds.g28 = curword7[num_curword1];

num_curword2 = rand()%400;
nds.g29 = curword7[num_curword2];

стали работать правильно и программа
стала выдавать каждый раз новое случайное число
а следовательно и новое слово при исполнении
exe-файла.

Вообще эта программа самая умная на сегодня
Так держать!!!!
Но есть недостаток- иногда в готовом кроссворде
может повториться одно и то же слово дважды.

Программа работает хорошо но надо добавить
к ней способность если есть в найденных
словах повторяющиеся слова,то чтоб она
подбирала в уже найденных словах такие,
которые не повторяются.
Это будет реализовано в дальнейшем в программе
d:\ЯзыкС++\Kross01\StructClass\Упражнения1\R30_02f

9:21 02.01.2006

Теперь надо несколько переделать функцию fn7b.cpp
так,чтобы программа работала почти без вмешательства
человека.То есть все те моменты,когда программа
пишет - выберите слово,были заменены на выбор слова самой
программой.

8:41 03.01.2006

В этой же программа заметил,что во многих местах
этой многомодульной программы повторяется
следующий код:

//-----------------------------------------------------------------------------------------------
// 1
//--------------------------------'--------------------------------------------------------------
//сосчитаем количество слов в файле infile07.txt
//при помощи функции fn4()
//из этого файла будем брать 7-буквенные слова для кроссворда

int n;

char fileName1[15] = "infile07.txt";
int kolSlov7;

fn4(fileName1, kolSlov7);

//слова в указанном файле сосчитаны

// 2

//считаем слова из файла infile7.txt в массив curword7 в динамич памяти
// и попросим пользователя выбрать два слова для кроссворда
//применив для этого функцию fn5

string *curword7 = new string[kolSlov7];
nds.g28,nds.g29; //

fn5(fileName1,curword7,kolSlov7);

// слова из файла infile7.txt считаны в массив curword7 в динамич памяти

------------------------------------------------------------------

Суть этого фрагмента программы в том,чтобы считать из
текстового файла в динамическую память.Чтобы потом с этим
материалом в динамической памяти можно было работать.
Можно ли из этого фрагмента сделать функцию?
И главное : нужно ли это делать?
Дело в том что внутри функции будет образовываться массив
в динамической памяти.
string *curword7 = new string[kolSlov7];
Но опять встанет вопрос чтобы как то не забыть удалить
массивы из динамической памяти.И это должно опять произойти
вне функции.А это уже опасно,когда массивы из динамической
памяти удаляются не в том блоке,в котором они создаются.

19:58 03.01.2006

d:\ЯзыкС++\Kross01\StructClass\Упражнения1\R30_02f

Вот удивительная программа которая сама находит
все 6 слов для кроссворда.
При этом не допускает повторяющихся слов.
И при каждом запуске находит новые и новые кроссворды
(используется функция случайных чисел)

Если мы желаем повторить результат,то смотрим первые два слова
из этой программы(указаны их номера в списке)
и запускаем на выполнение программу R30_02b
Она должна повторить результат работы этой программы,
то есть должен получиться такой же кроссворд.
Еще лучше проверять это программой R30_02e
потому что она производит убирание повторяющихся слов
как и данная программа,но работает не применяя
функции случайных чисел.
-------------------------------------------------

Программа R30_02g

d:\ЯзыкС++\Kross01\StructClass\Упражнения1\R30_02g

То же что предыдущая программа.Выводит сразу кроссворд
и ничего лишнего.Это удобнее для простого пользователя.


Назад | Начало урока | Вверх | Вперед
Содержание

Hosted by uCoz