#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
int i, j, index=0;
int nabor[28];
for(j=6; j>=0; j--)
for(i=6; i>=0; i--)
{
if(i==j || i<=j)
{
nabor[index] = i + j*10;
index++;
}
}
cout<<"current array is:"<<endl;
for(i=0; i<28; i++)
{
cout<<nabor<<" ";
}
getch();
return 0;
}
Принцип домино! Указатели! Borland С++! Лаба!
Составить программу, моделирующую перемешивание домино. Принять во внимание, что меняться местами могут лишь соседние элементы. Показать процесс перемешивания пошагово.
Составить функцию, делящую всё домино поровну между двумя участниками игры, и делающую 1-ый ход одного из участников!
Задача должна быть сделана при помощи [SIZE=3]указателей[/SIZE]!
Принцип: задаваться костяшки должны посредством двух чисел, т.е. "64" - будет значить что на костяшке два числа - это 6 и 4 ("00" - пустая костяшка);
задаваться они должны в массив!!
Важно: при перемешивании должна быть взята каждая костяшка!
Цитата:
Принять во внимание, что меняться местами могут лишь соседние элементы.
Это как???
12345
21345
23145???? объясни...
А на счет заполнения массива "доминушками" у меня такая идея!
Код:
Перемешивание пошагово должно выполнятся так: жмём ENTER - 1раз перемешалось, 2 - ещё раз... и т.д. пока не возьмётся каждая костяшка ------ т.е. в итоге надо будет нажать ENTER 28 раз (если задано 28 костяшек изначально)!!!
Код:
using namespace std;
! Domino.cpp (3, 16): Namespace name expected...
и ещё... что эта строка вообще означает:confused: :o
задача срочно нужна? у меня времени не очень сейчас, как смогу посижу. а случайные числа задаются:
Код:
srand((unsigned)time(NULL));
num = rand()%28;
num = rand()%28;
А при помощи указателей, это передача параметров в функции должна так осуществляться? или еще что-то?
Код:
using namespace std;
это используется стандартное пространство имен, т.е. вместо <iostream.h> пишется просто <iostream>
во втором случае iostream - не является заголовком файла, а является идентификатором, по которому компилятор находит требуемый файл.
а ошибка выдается, наверное у тебя компилятор старый... я использую Visual C++ консольное приложение
Задачу, желательно к 14-му декабря!!!!
Код:
//Äîìèíî
#include <iostream>
#include <time.h>//ïîäêëþ÷àåì äëÿ èñïîëüçîâàíèÿ time
#include <conio.h>
using namespace std;
///////////////////////////////////////
//âûâîä ìàññèâà íà äèñïëåé
void print_mas(int *mas, int max)
{
for(int i=0; i<max; i++)
{
if(mas != 0) cout<<mas<<" ";
else cout<<"00 ";
}
cout<<endl;
}
///////////////////////////////////////
//çàïîëíåíèå ìàññèâà "êîñòÿìè"
void fill_mas(int *mas)
{
int i, j, index=0;
for(j=6; j>=0; j--)
for(i=6; i>=0; i--)
{
if(i==j || i<=j)
{
mas[index] = i + j*10;
index++;
}
}
}
///////////////////////////////////////
//ó÷åò ñîðòèðîâàííûõ ýëåìåíòîâ
bool test(int count, int *arr)
{
for(int i=0; i<28; i++)
{
//ïðîâåðêà íåîáõîäèìà, ò.ê. çíà÷åíèå ìîæåò áûòü íóëåâûì
if(arr == count && arr>=0) return true;
}
return false;
}
///////////////////////////////////////
//ðàíäîìèçàöèÿ ìàññèâà
void rand_mas(int *mas)
{
srand((unsigned)time(NULL));
int i, index=0;
bool left; //left-right
int temp;
int num[28], *n;//ìàññèâ äëÿ ó÷åòà ñîðòèðîâàííûõ ýëåìåíòîâ
n=num;
for (i=0; i<28; i++) n=-1;
do{
//îïðåäåëÿåì ñëó÷àéíûé ýëåìåíò ìàññèâà
do{
i = rand()%28;
}while(test(i, n));//ïðîâåðÿåì, ñîðòèðîâàëñÿ ëè äàííûé ýëåìåíò
num[index]=i;
left = rand()%2;//âûáèðàåì ëåâî-ïðàâî
temp = mas;//çàïîìèíàåì çíà÷åíèå äëÿ îáìåíà
if(i==0 && left) {mas[0]=mas[27]; mas[27]=temp;}//ìåíÿåì íà ãðàíè÷íûõ çíà÷åíèÿõ
else if(i==27 && !left) {mas[27]=mas[0]; mas[0]=temp;}
else
{
if(left){mas=mas[i-1]; mas[i-1]=temp;}//îñíîâíàÿ ðàíäîìèçàöèÿ
else {mas=mas[i+1]; mas[i+1]=temp;}
}
index++;//êîëëè÷åñòâî ñîðòèðîâîê
/* print_mas(mas, 28);//óáðàòü êîììåíòàðèé äëÿ ïîøàãîâîãî âûïîëíåíèÿ ðàíäîìèçàöèè!!!!!!!!!
getch();
*/ }while(index<28);
}
///////////////////////////////////////
//ôóíêöèÿ ïî çàäàíèþ
void function(int *p1, int *p2, int *mas)
{
int index;
for(index = 0; index<14; index++)
{
p1[index] = mas[index];//ïåðâîìó èãðîêó äîìèíóøêó
p2[index] = mas[index+14];//âòîðîìó!!!
}
cout<<"Player1:"<<endl;
print_mas(p1, 14);
cout<<"Player2:"<<endl;
print_mas(p2, 14);
//èùåì íàèáîëüøåå çíà÷åíèå, äëÿ õîäà
int max = 0, i;
for(i=0; i<14; i++)
{
if(p1>=max)
{
max=p1;
index=i;
}
}
cout<<"Player1 is move ["<<index<<"]: "<<p1[index]<<endl;
}
///////////////////////////////////////
int main()
{
int nabor[28];
int player1[14];
int player2[14];
int *p, *pl1, *pl2;
p = nabor;
fill_mas(p);//çàïîëíåíèå
cout<<"matrix is fill"<<endl;
print_mas(p, 28);//âûâîä
rand_mas(p);//ðàíäîìèçàöèÿ
cout<<"matrix is rand"<<endl;
print_mas(p, 28);//âûâîä, ïðè ïîøàãîâîì âûâîäå ìîæíî óáðàòü
pl1 = player1;
pl2 = player2;
function(pl1, pl2, p);//ôóíêöèÿ ïî óñëîâèþ çàäà÷è
getch();
return 0;
}
#include <iostream>
#include <time.h>//ïîäêëþ÷àåì äëÿ èñïîëüçîâàíèÿ time
#include <conio.h>
using namespace std;
///////////////////////////////////////
//âûâîä ìàññèâà íà äèñïëåé
void print_mas(int *mas, int max)
{
for(int i=0; i<max; i++)
{
if(mas != 0) cout<<mas<<" ";
else cout<<"00 ";
}
cout<<endl;
}
///////////////////////////////////////
//çàïîëíåíèå ìàññèâà "êîñòÿìè"
void fill_mas(int *mas)
{
int i, j, index=0;
for(j=6; j>=0; j--)
for(i=6; i>=0; i--)
{
if(i==j || i<=j)
{
mas[index] = i + j*10;
index++;
}
}
}
///////////////////////////////////////
//ó÷åò ñîðòèðîâàííûõ ýëåìåíòîâ
bool test(int count, int *arr)
{
for(int i=0; i<28; i++)
{
//ïðîâåðêà íåîáõîäèìà, ò.ê. çíà÷åíèå ìîæåò áûòü íóëåâûì
if(arr == count && arr>=0) return true;
}
return false;
}
///////////////////////////////////////
//ðàíäîìèçàöèÿ ìàññèâà
void rand_mas(int *mas)
{
srand((unsigned)time(NULL));
int i, index=0;
bool left; //left-right
int temp;
int num[28], *n;//ìàññèâ äëÿ ó÷åòà ñîðòèðîâàííûõ ýëåìåíòîâ
n=num;
for (i=0; i<28; i++) n=-1;
do{
//îïðåäåëÿåì ñëó÷àéíûé ýëåìåíò ìàññèâà
do{
i = rand()%28;
}while(test(i, n));//ïðîâåðÿåì, ñîðòèðîâàëñÿ ëè äàííûé ýëåìåíò
num[index]=i;
left = rand()%2;//âûáèðàåì ëåâî-ïðàâî
temp = mas;//çàïîìèíàåì çíà÷åíèå äëÿ îáìåíà
if(i==0 && left) {mas[0]=mas[27]; mas[27]=temp;}//ìåíÿåì íà ãðàíè÷íûõ çíà÷åíèÿõ
else if(i==27 && !left) {mas[27]=mas[0]; mas[0]=temp;}
else
{
if(left){mas=mas[i-1]; mas[i-1]=temp;}//îñíîâíàÿ ðàíäîìèçàöèÿ
else {mas=mas[i+1]; mas[i+1]=temp;}
}
index++;//êîëëè÷åñòâî ñîðòèðîâîê
/* print_mas(mas, 28);//óáðàòü êîììåíòàðèé äëÿ ïîøàãîâîãî âûïîëíåíèÿ ðàíäîìèçàöèè!!!!!!!!!
getch();
*/ }while(index<28);
}
///////////////////////////////////////
//ôóíêöèÿ ïî çàäàíèþ
void function(int *p1, int *p2, int *mas)
{
int index;
for(index = 0; index<14; index++)
{
p1[index] = mas[index];//ïåðâîìó èãðîêó äîìèíóøêó
p2[index] = mas[index+14];//âòîðîìó!!!
}
cout<<"Player1:"<<endl;
print_mas(p1, 14);
cout<<"Player2:"<<endl;
print_mas(p2, 14);
//èùåì íàèáîëüøåå çíà÷åíèå, äëÿ õîäà
int max = 0, i;
for(i=0; i<14; i++)
{
if(p1>=max)
{
max=p1;
index=i;
}
}
cout<<"Player1 is move ["<<index<<"]: "<<p1[index]<<endl;
}
///////////////////////////////////////
int main()
{
int nabor[28];
int player1[14];
int player2[14];
int *p, *pl1, *pl2;
p = nabor;
fill_mas(p);//çàïîëíåíèå
cout<<"matrix is fill"<<endl;
print_mas(p, 28);//âûâîä
rand_mas(p);//ðàíäîìèçàöèÿ
cout<<"matrix is rand"<<endl;
print_mas(p, 28);//âûâîä, ïðè ïîøàãîâîì âûâîäå ìîæíî óáðàòü
pl1 = player1;
pl2 = player2;
function(pl1, pl2, p);//ôóíêöèÿ ïî óñëîâèþ çàäà÷è
getch();
return 0;
}
бл, коментарии в другой кодировке получились, ща попробую еще раз
Код:
//Домино
#include <iostream>
#include <time.h>//подключаем для использования time
#include <conio.h>
using namespace std;
///////////////////////////////////////
//вывод массива на дисплей
void print_mas(int *mas, int max)
{
for(int i=0; i<max; i++)
{
if(mas != 0) cout<<mas<<" ";
else cout<<"00 ";
}
cout<<endl;
}
///////////////////////////////////////
//заполнение массива "костями"
void fill_mas(int *mas)
{
int i, j, index=0;
for(j=6; j>=0; j--)
for(i=6; i>=0; i--)
{
if(i==j || i<=j)
{
mas[index] = i + j*10;
index++;
}
}
}
///////////////////////////////////////
//учет сортированных элементов
bool test(int count, int *arr)
{
for(int i=0; i<28; i++)
{
//проверка необходима, т.к. значение может быть нулевым
if(arr == count && arr>=0) return true;
}
return false;
}
///////////////////////////////////////
//рандомизация массива
void rand_mas(int *mas)
{
srand((unsigned)time(NULL));
int i, index=0;
bool left; //left-right
int temp;
int num[28], *n;//массив для учета сортированных элементов
n=num;
for (i=0; i<28; i++) n=-1;
do{
//определяем случайный элемент массива
do{
i = rand()%28;
}while(test(i, n));//проверяем, сортировался ли данный элемент
num[index]=i;
left = rand()%2;//выбираем лево-право
temp = mas;//запоминаем значение для обмена
if(i==0 && left) {mas[0]=mas[27]; mas[27]=temp;}//меняем на граничных значениях
else if(i==27 && !left) {mas[27]=mas[0]; mas[0]=temp;}
else
{
if(left){mas=mas[i-1]; mas[i-1]=temp;}//основная рандомизация
else {mas=mas[i+1]; mas[i+1]=temp;}
}
index++;//колличество сортировок
/* print_mas(mas, 28);//убрать комментарий для пошагового выполнения рандомизации!!!!!!!!!
getch();
*/ }while(index<28);
}
///////////////////////////////////////
//функция по заданию
void function(int *p1, int *p2, int *mas)
{
int index;
for(index = 0; index<14; index++)
{
p1[index] = mas[index];//первому игроку доминушку
p2[index] = mas[index+14];//второму!!!
}
cout<<"Player1:"<<endl;
print_mas(p1, 14);
cout<<"Player2:"<<endl;
print_mas(p2, 14);
//ищем наибольшее значение, для хода
int max = 0, i;
for(i=0; i<14; i++)
{
if(p1>=max)
{
max=p1;
index=i;
}
}
cout<<"Player1 is move ["<<index<<"]: "<<p1[index]<<endl;
}
///////////////////////////////////////
int main()
{
int nabor[28];
int player1[14];
int player2[14];
int *p, *pl1, *pl2;
p = nabor;
fill_mas(p);//заполнение
cout<<"matrix is fill"<<endl;
print_mas(p, 28);//вывод
rand_mas(p);//рандомизация
cout<<"matrix is rand"<<endl;
print_mas(p, 28);//вывод, при пошаговом выводе можно убрать
pl1 = player1;
pl2 = player2;
function(pl1, pl2, p);//функция по условию задачи
getch();
return 0;
}
#include <iostream>
#include <time.h>//подключаем для использования time
#include <conio.h>
using namespace std;
///////////////////////////////////////
//вывод массива на дисплей
void print_mas(int *mas, int max)
{
for(int i=0; i<max; i++)
{
if(mas != 0) cout<<mas<<" ";
else cout<<"00 ";
}
cout<<endl;
}
///////////////////////////////////////
//заполнение массива "костями"
void fill_mas(int *mas)
{
int i, j, index=0;
for(j=6; j>=0; j--)
for(i=6; i>=0; i--)
{
if(i==j || i<=j)
{
mas[index] = i + j*10;
index++;
}
}
}
///////////////////////////////////////
//учет сортированных элементов
bool test(int count, int *arr)
{
for(int i=0; i<28; i++)
{
//проверка необходима, т.к. значение может быть нулевым
if(arr == count && arr>=0) return true;
}
return false;
}
///////////////////////////////////////
//рандомизация массива
void rand_mas(int *mas)
{
srand((unsigned)time(NULL));
int i, index=0;
bool left; //left-right
int temp;
int num[28], *n;//массив для учета сортированных элементов
n=num;
for (i=0; i<28; i++) n=-1;
do{
//определяем случайный элемент массива
do{
i = rand()%28;
}while(test(i, n));//проверяем, сортировался ли данный элемент
num[index]=i;
left = rand()%2;//выбираем лево-право
temp = mas;//запоминаем значение для обмена
if(i==0 && left) {mas[0]=mas[27]; mas[27]=temp;}//меняем на граничных значениях
else if(i==27 && !left) {mas[27]=mas[0]; mas[0]=temp;}
else
{
if(left){mas=mas[i-1]; mas[i-1]=temp;}//основная рандомизация
else {mas=mas[i+1]; mas[i+1]=temp;}
}
index++;//колличество сортировок
/* print_mas(mas, 28);//убрать комментарий для пошагового выполнения рандомизации!!!!!!!!!
getch();
*/ }while(index<28);
}
///////////////////////////////////////
//функция по заданию
void function(int *p1, int *p2, int *mas)
{
int index;
for(index = 0; index<14; index++)
{
p1[index] = mas[index];//первому игроку доминушку
p2[index] = mas[index+14];//второму!!!
}
cout<<"Player1:"<<endl;
print_mas(p1, 14);
cout<<"Player2:"<<endl;
print_mas(p2, 14);
//ищем наибольшее значение, для хода
int max = 0, i;
for(i=0; i<14; i++)
{
if(p1>=max)
{
max=p1;
index=i;
}
}
cout<<"Player1 is move ["<<index<<"]: "<<p1[index]<<endl;
}
///////////////////////////////////////
int main()
{
int nabor[28];
int player1[14];
int player2[14];
int *p, *pl1, *pl2;
p = nabor;
fill_mas(p);//заполнение
cout<<"matrix is fill"<<endl;
print_mas(p, 28);//вывод
rand_mas(p);//рандомизация
cout<<"matrix is rand"<<endl;
print_mas(p, 28);//вывод, при пошаговом выводе можно убрать
pl1 = player1;
pl2 = player2;
function(pl1, pl2, p);//функция по условию задачи
getch();
return 0;
}
чего непонятно спрашивай
Но как ты и сказал выше - похоже у нас версии разные - выдаёт следующие ошибки:
!Domino 1.cpp (5, 16): Namespace name expected
!Domino 1.cpp (48, 8): Call to undefined function 'srand'
!Domino 1.cpp (59, 12): Call to undefined function 'rand'
Что делать?
Код:
//Домино
#include <iostream.h>
#include <time.h>//подключаем для использования time
#include <conio.h>
//а для rand srand
#include <stdlib.h>
#include <iostream.h>
#include <time.h>//подключаем для использования time
#include <conio.h>
//а для rand srand
#include <stdlib.h>
вместо: #include <iostream>, написать: #include <iostream.h>
убрать совсем: using namespace std;
для rand srand: #include <stdlib.h>
Всё работает только ты забыл, что надо показать процесс перемешивания пошагово ----- т.е жмём ENTER - 1 раз перемешалось, Ещё жмём - 2 раза....... и так 28 раз (по числу костяшек)!!!!
Код:
void rand_mas(int *mas)
{
srand((unsigned)time(NULL));
int i, index=0;
bool left; //left-right
int temp;
int num[28], *n;//массив для учета сортированных элементов
n=num;
for (i=0; i<28; i++) n=-1;
do{
//определяем случайный элемент массива
do{
i = rand()%28;
}while(test(i, n));//проверяем, сортировался ли данный элемент
num[index]=i;
left = rand()%2;//выбираем лево-право
temp = mas;//запоминаем значение для обмена
if(i==0 && left) {mas[0]=mas[27]; mas[27]=temp;}//меняем на граничных значениях
else if(i==27 && !left) {mas[27]=mas[0]; mas[0]=temp;}
else
{
if(left){mas=mas[i-1]; mas[i-1]=temp;}//основная рандомизация
else {mas=mas[i+1]; mas[i+1]=temp;}
}
index++;//колличество сортировок
/* print_mas(mas, 28);//убрать комментарий для пошагового выполнения рандомизации!!!!!!!!!
getch();
*/ }while(index<28);
}
{
srand((unsigned)time(NULL));
int i, index=0;
bool left; //left-right
int temp;
int num[28], *n;//массив для учета сортированных элементов
n=num;
for (i=0; i<28; i++) n=-1;
do{
//определяем случайный элемент массива
do{
i = rand()%28;
}while(test(i, n));//проверяем, сортировался ли данный элемент
num[index]=i;
left = rand()%2;//выбираем лево-право
temp = mas;//запоминаем значение для обмена
if(i==0 && left) {mas[0]=mas[27]; mas[27]=temp;}//меняем на граничных значениях
else if(i==27 && !left) {mas[27]=mas[0]; mas[0]=temp;}
else
{
if(left){mas=mas[i-1]; mas[i-1]=temp;}//основная рандомизация
else {mas=mas[i+1]; mas[i+1]=temp;}
}
index++;//колличество сортировок
/* print_mas(mas, 28);//убрать комментарий для пошагового выполнения рандомизации!!!!!!!!!
getch();
*/ }while(index<28);
}
В общем то тебе следовало хотябы прочитать код, комментарий обозначается /* и */, убери эти символы в данном фрагменте кода и все будет как хочется.
Упс!!! да знаю я как коментарий обозначается :) ОГРОМНОЕ СПАСИБО!! Если Я чем-то могу помочь (явно не в программировании)...
Что означает следующая строчка?
srand((unsigned)time(NULL));
если ее убрать то каждый раз при запуске программы будет выполняться рандомизация с одним и тем же итогом.
т.е. запустил
1-я сортировка: 12345
2-я сортировка: 23451
3-я сортировка: 23541
выход из программы
при следующем запуске будет выполняться сотрировка в таком же порядке. Так вот, чтобы этого недопустить используется функция srand()