Здравствуйте!! Мне очень срочно нужно помощь.. кто-нибудь будет помогать разбираться с этим?)) Задание такое: Нужно написать программу ,которая по
5-9 класс
|
исходным данным m и n строит прямоугольный лабиринт mXn. Предусмотреть, чтобы программа при каждом обращении к ней порождала разные лабиринты. Лабиринт должен иметь единственное решение, и, чтобы получившийся лабиринт был интересным, все ячейки должны быть соединены с основным путем, дающим решение. Программу надо написать через С++..Заранее спасибо!!
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
const int size = 20;
const int fullfill = 100;
const int wallshort= 50;
char m[size+1][size+1];
int r[2][size/2*size/2];
int h;
void initrandom ()
{
int j=0;
for (int y=2; y<size; y+=2)
for (int x=2; x< size; x+=2)
{
r[0][j] = x; r[1][j] = y; j++;
}
h=j-1;
}
int getrandom(int &x, int &y)
{
int i = random (h);
x = r[0][i]; y = r[1][i];
r[0][i] = r[0][h]; r[1][i] = r[1][h];
return h--;
}
void view()
{
for (int y=0; y<=size; y++)
for (int x=0; x<=size; x++)
{
gotoxy (x*2+1,y+1);
if (m[y][x]==0) cprintf ("..");
if (m[y][x]==1) cprintf ("__");
}
}int main(void)
{
printf ("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\"); printf ("Labirint generator"); for (int c = 0; c < size*size; c++) ((char *)m)[c] = 0;
for (int i = 0; i <= size; i++)
{
m[0][i] = 1; m[size][i] = 1;
m[i][0] = 1; m[i][size] = 1;
}
view ();
initrandom();
int startx, starty;
while (getrandom (startx, starty))
{
if (m[starty][startx]==1) continue;
if (random (100) > fullfill) continue;
int sx=0,sy=0;
do
{
sx=random (3)-1;
sy=random (3)-1;
} while (sx==0 && sy==0 || sx!=0 && sy!=0); while (m[starty][startx]==0)
{
if (random (100) > wallshort)
{m[starty][startx] = 1; break;}
m[starty][startx] = 1;
startx +=sx; starty+=sy;
m[starty][startx] = 1;
startx +=sx; starty+=sy;
}
}
view();
return 0;
}
чтобы было с гарантией нашел на одном сайте
обнови страницу если невидно
Ой спасибо огромное, вы даже не можете представить от чего мне спасли))))
у меня тоже сейчас нет под рукой программы С++, я это буду проверить завтра, главное что есть код)) еще раз Спасибо!!)))
Другие вопросы из категории
5 кбайт = ?
2 мбайт = ?
индекс, а так же сумму элементов массива.Помогите пожалуйста
числами из диапазона [-6;9]. И вывести все элементы массива на экран.
Читайте также
Одномерный массив из 6 элементов с номерами от 3 до 8 заполнить случайным образом числами от 5 до 17. Поменять местами 5-ый и 7-ой элементы массива,а 4-ый элемент увеличить в 3 раза. Вывести на экран монитора первоначальный и преобразованный массивы в строчку.
программу которая вставит между буквами веденного слова пробелы 3)написать программу вывода на экран деление двух чисел
1. Writel(' вести стоимость перчатки наприм')
read (x)
2 стоимость сумки- наприм.
3.стоимость ремня- наприм.
4.если общая сумма больше 800р, то вывести сумму с учетом 10% скидки
5.если сумма меньше 800р, то вывести сумму
Помогите пожалуйста очень нужно, благодарю!!!
Есть программа, которая преобразует слово из трех букв в число в 32-ичной сс(русс. алф).
После этого, переводит число в 10-ую сс.
Максимум может получиться 6 цифр, минимум 3.
Мне
нужно как-то сделать так, чтобы если у меня три цифры, то добавлялось
спереди три нуля, четыре цифры-добавлялось два нуля, пять
цифр-добавлялся один ноль, шесть-не добавлялось ни одного нуля.