Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Принцип домино! Указатели! Borland С++! Лаба!

11K
04 декабря 2006 года
M0n-&-T0r
28 / / 15.11.2006
Прошу решить лабу!!!

Составить программу, моделирующую перемешивание домино. Принять во внимание, что меняться местами могут лишь соседние элементы. Показать процесс перемешивания пошагово.
Составить функцию, делящую всё домино поровну между двумя участниками игры, и делающую 1-ый ход одного из участников!

Задача должна быть сделана при помощи [SIZE=3]указателей[/SIZE]!
Принцип: задаваться костяшки должны посредством двух чисел, т.е. "64" - будет значить что на костяшке два числа - это 6 и 4 ("00" - пустая костяшка);
задаваться они должны в массив!!
Важно: при перемешивании должна быть взята каждая костяшка!
533
07 декабря 2006 года
Visualex
254 / / 07.01.2005
Цитата:
Принять во внимание, что меняться местами могут лишь соседние элементы.


Это как???
12345
21345
23145???? объясни...
А на счет заполнения массива "доминушками" у меня такая идея!

Код:
#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;
}
11K
07 декабря 2006 года
M0n-&amp;-T0r
28 / / 15.11.2006
Объясняю: (схема немного сложная) при помощи рандома выбирается номер позиции костяшки в массиве, затем при помощи рандома выбирается справа или слева от неё будем брать костяшку, с которой надо будет перемешивать!!!
Перемешивание пошагово должно выполнятся так: жмём ENTER - 1раз перемешалось, 2 - ещё раз... и т.д. пока не возьмётся каждая костяшка ------ т.е. в итоге надо будет нажать ENTER 28 раз (если задано 28 костяшек изначально)!!!
11K
07 декабря 2006 года
M0n-&amp;-T0r
28 / / 15.11.2006
кстати вот в этой строчке
 
Код:
using namespace std;
такая ошибка:
! Domino.cpp (3, 16): Namespace name expected...
и ещё... что эта строка вообще означает:confused: :o
533
07 декабря 2006 года
Visualex
254 / / 07.01.2005
а может быть больше костяшек???!)))
задача срочно нужна? у меня времени не очень сейчас, как смогу посижу. а случайные числа задаются:
 
Код:
srand((unsigned)time(NULL));
num = rand()%28;

А при помощи указателей, это передача параметров в функции должна так осуществляться? или еще что-то?
533
07 декабря 2006 года
Visualex
254 / / 07.01.2005
 
Код:
using namespace std;

это используется стандартное пространство имен, т.е. вместо <iostream.h> пишется просто <iostream>
во втором случае iostream - не является заголовком файла, а является идентификатором, по которому компилятор находит требуемый файл.
533
07 декабря 2006 года
Visualex
254 / / 07.01.2005
а ошибка выдается, наверное у тебя компилятор старый... я использую Visual C++ консольное приложение
11K
08 декабря 2006 года
M0n-&amp;-T0r
28 / / 15.11.2006
У меня Borland C++ 5!!!
Задачу, желательно к 14-му декабря!!!!
533
08 декабря 2006 года
Visualex
254 / / 07.01.2005
В общем код наверное в очень, повторяю в очень ужасном исполнении, но спишем все на магнитные бури!!!
Код:
//&Auml;&icirc;&igrave;&egrave;&iacute;&icirc;
#include <iostream>
#include <time.h>//&iuml;&icirc;&auml;&ecirc;&euml;&thorn;&divide;&agrave;&aring;&igrave; &auml;&euml;&yuml; &egrave;&ntilde;&iuml;&icirc;&euml;&uuml;&ccedil;&icirc;&acirc;&agrave;&iacute;&egrave;&yuml; time
#include <conio.h>
using namespace std;
///////////////////////////////////////
//&acirc;&ucirc;&acirc;&icirc;&auml; &igrave;&agrave;&ntilde;&ntilde;&egrave;&acirc;&agrave; &iacute;&agrave; &auml;&egrave;&ntilde;&iuml;&euml;&aring;&eacute;
void print_mas(int *mas, int max)
{
    for(int i=0; i<max; i++)
        {
        if(mas != 0) cout<<mas<<" ";
        else cout<<"00 ";      
        }
    cout<<endl;
}
///////////////////////////////////////
//&ccedil;&agrave;&iuml;&icirc;&euml;&iacute;&aring;&iacute;&egrave;&aring; &igrave;&agrave;&ntilde;&ntilde;&egrave;&acirc;&agrave; "&ecirc;&icirc;&ntilde;&ograve;&yuml;&igrave;&egrave;"
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++;
            }
        }
   
}
///////////////////////////////////////
//&oacute;&divide;&aring;&ograve; &ntilde;&icirc;&eth;&ograve;&egrave;&eth;&icirc;&acirc;&agrave;&iacute;&iacute;&ucirc;&otilde; &yacute;&euml;&aring;&igrave;&aring;&iacute;&ograve;&icirc;&acirc;
bool test(int count, int *arr)
{
    for(int i=0; i<28; i++)
    {
        //&iuml;&eth;&icirc;&acirc;&aring;&eth;&ecirc;&agrave; &iacute;&aring;&icirc;&aacute;&otilde;&icirc;&auml;&egrave;&igrave;&agrave;, &ograve;.&ecirc;. &ccedil;&iacute;&agrave;&divide;&aring;&iacute;&egrave;&aring; &igrave;&icirc;&aelig;&aring;&ograve; &aacute;&ucirc;&ograve;&uuml; &iacute;&oacute;&euml;&aring;&acirc;&ucirc;&igrave;
        if(arr == count && arr>=0) return true;
    }
    return false;
}
///////////////////////////////////////
//&eth;&agrave;&iacute;&auml;&icirc;&igrave;&egrave;&ccedil;&agrave;&ouml;&egrave;&yuml; &igrave;&agrave;&ntilde;&ntilde;&egrave;&acirc;&agrave;
void rand_mas(int *mas)
{
    srand((unsigned)time(NULL));
    int i, index=0;
    bool left; //left-right
    int temp;
    int num[28], *n;//&igrave;&agrave;&ntilde;&ntilde;&egrave;&acirc; &auml;&euml;&yuml; &oacute;&divide;&aring;&ograve;&agrave; &ntilde;&icirc;&eth;&ograve;&egrave;&eth;&icirc;&acirc;&agrave;&iacute;&iacute;&ucirc;&otilde; &yacute;&euml;&aring;&igrave;&aring;&iacute;&ograve;&icirc;&acirc;
    n=num;
    for (i=0; i<28; i++) n=-1;
   
    do{
        //&icirc;&iuml;&eth;&aring;&auml;&aring;&euml;&yuml;&aring;&igrave; &ntilde;&euml;&oacute;&divide;&agrave;&eacute;&iacute;&ucirc;&eacute; &yacute;&euml;&aring;&igrave;&aring;&iacute;&ograve; &igrave;&agrave;&ntilde;&ntilde;&egrave;&acirc;&agrave;
        do{
        i = rand()%28;     
        }while(test(i, n));//&iuml;&eth;&icirc;&acirc;&aring;&eth;&yuml;&aring;&igrave;, &ntilde;&icirc;&eth;&ograve;&egrave;&eth;&icirc;&acirc;&agrave;&euml;&ntilde;&yuml; &euml;&egrave; &auml;&agrave;&iacute;&iacute;&ucirc;&eacute; &yacute;&euml;&aring;&igrave;&aring;&iacute;&ograve;
        num[index]=i;

        left = rand()%2;//&acirc;&ucirc;&aacute;&egrave;&eth;&agrave;&aring;&igrave; &euml;&aring;&acirc;&icirc;-&iuml;&eth;&agrave;&acirc;&icirc;
        temp = mas;//&ccedil;&agrave;&iuml;&icirc;&igrave;&egrave;&iacute;&agrave;&aring;&igrave; &ccedil;&iacute;&agrave;&divide;&aring;&iacute;&egrave;&aring; &auml;&euml;&yuml; &icirc;&aacute;&igrave;&aring;&iacute;&agrave;
       
        if(i==0 && left) {mas[0]=mas[27]; mas[27]=temp;}//&igrave;&aring;&iacute;&yuml;&aring;&igrave; &iacute;&agrave; &atilde;&eth;&agrave;&iacute;&egrave;&divide;&iacute;&ucirc;&otilde; &ccedil;&iacute;&agrave;&divide;&aring;&iacute;&egrave;&yuml;&otilde;
        else if(i==27 && !left) {mas[27]=mas[0]; mas[0]=temp;}
        else
        {
            if(left){mas=mas[i-1]; mas[i-1]=temp;}//&icirc;&ntilde;&iacute;&icirc;&acirc;&iacute;&agrave;&yuml; &eth;&agrave;&iacute;&auml;&icirc;&igrave;&egrave;&ccedil;&agrave;&ouml;&egrave;&yuml;
            else {mas=mas[i+1]; mas[i+1]=temp;}
        }

        index++;//&ecirc;&icirc;&euml;&euml;&egrave;&divide;&aring;&ntilde;&ograve;&acirc;&icirc; &ntilde;&icirc;&eth;&ograve;&egrave;&eth;&icirc;&acirc;&icirc;&ecirc;
/*      print_mas(mas, 28);//&oacute;&aacute;&eth;&agrave;&ograve;&uuml; &ecirc;&icirc;&igrave;&igrave;&aring;&iacute;&ograve;&agrave;&eth;&egrave;&eacute; &auml;&euml;&yuml; &iuml;&icirc;&oslash;&agrave;&atilde;&icirc;&acirc;&icirc;&atilde;&icirc; &acirc;&ucirc;&iuml;&icirc;&euml;&iacute;&aring;&iacute;&egrave;&yuml; &eth;&agrave;&iacute;&auml;&icirc;&igrave;&egrave;&ccedil;&agrave;&ouml;&egrave;&egrave;!!!!!!!!!
        getch();
*/  }while(index<28);
}
///////////////////////////////////////
//&ocirc;&oacute;&iacute;&ecirc;&ouml;&egrave;&yuml; &iuml;&icirc; &ccedil;&agrave;&auml;&agrave;&iacute;&egrave;&thorn;
void function(int *p1, int *p2, int *mas)
{
    int index;
    for(index = 0; index<14; index++)
    {
        p1[index] = mas[index];//&iuml;&aring;&eth;&acirc;&icirc;&igrave;&oacute; &egrave;&atilde;&eth;&icirc;&ecirc;&oacute; &auml;&icirc;&igrave;&egrave;&iacute;&oacute;&oslash;&ecirc;&oacute;
        p2[index] = mas[index+14];//&acirc;&ograve;&icirc;&eth;&icirc;&igrave;&oacute;!!!
    }
   

    cout<<"Player1:"<<endl;
    print_mas(p1, 14);
    cout<<"Player2:"<<endl;
    print_mas(p2, 14);

    //&egrave;&ugrave;&aring;&igrave; &iacute;&agrave;&egrave;&aacute;&icirc;&euml;&uuml;&oslash;&aring;&aring; &ccedil;&iacute;&agrave;&divide;&aring;&iacute;&egrave;&aring;, &auml;&euml;&yuml; &otilde;&icirc;&auml;&agrave;
    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);//&ccedil;&agrave;&iuml;&icirc;&euml;&iacute;&aring;&iacute;&egrave;&aring;
    cout<<"matrix is fill"<<endl;
    print_mas(p, 28);//&acirc;&ucirc;&acirc;&icirc;&auml;
    rand_mas(p);//&eth;&agrave;&iacute;&auml;&icirc;&igrave;&egrave;&ccedil;&agrave;&ouml;&egrave;&yuml;
    cout<<"matrix is rand"<<endl;
    print_mas(p, 28);//&acirc;&ucirc;&acirc;&icirc;&auml;, &iuml;&eth;&egrave; &iuml;&icirc;&oslash;&agrave;&atilde;&icirc;&acirc;&icirc;&igrave; &acirc;&ucirc;&acirc;&icirc;&auml;&aring; &igrave;&icirc;&aelig;&iacute;&icirc; &oacute;&aacute;&eth;&agrave;&ograve;&uuml;
   
    pl1 = player1;
    pl2 = player2;
   
    function(pl1, pl2, p);//&ocirc;&oacute;&iacute;&ecirc;&ouml;&egrave;&yuml; &iuml;&icirc; &oacute;&ntilde;&euml;&icirc;&acirc;&egrave;&thorn; &ccedil;&agrave;&auml;&agrave;&divide;&egrave;

    getch();
    return 0;
}
533
08 декабря 2006 года
Visualex
254 / / 07.01.2005
бл, коментарии в другой кодировке получились, ща попробую еще раз
533
08 декабря 2006 года
Visualex
254 / / 07.01.2005
Код:
//Домино
#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;
}

чего непонятно спрашивай
11K
08 декабря 2006 года
M0n-&amp;-T0r
28 / / 15.11.2006
Спсибо! сразу видно, грамотная прога!!!
Но как ты и сказал выше - похоже у нас версии разные - выдаёт следующие ошибки:
!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'
Что делать?
533
09 декабря 2006 года
Visualex
254 / / 07.01.2005
 
Код:
//Домино
#include <iostream.h>
#include <time.h>//подключаем для использования time
#include <conio.h>
//а для rand srand
#include <stdlib.h>
533
09 декабря 2006 года
Visualex
254 / / 07.01.2005
не написал, думаю догадаешься, но всеравно, чтобы нервы не мотать вот:
вместо: #include <iostream>, написать: #include <iostream.h>
убрать совсем: using namespace std;
для rand srand: #include <stdlib.h>
11K
10 декабря 2006 года
M0n-&amp;-T0r
28 / / 15.11.2006
Всё работает только ты забыл, что надо показать процесс перемешивания пошагово ----- т.е жмём ENTER - 1 раз перемешалось, Ещё жмём - 2 раза....... и так 28 раз (по числу костяшек)!!!!
533
10 декабря 2006 года
Visualex
254 / / 07.01.2005
Код:
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);
}

В общем то тебе следовало хотябы прочитать код, комментарий обозначается /* и */, убери эти символы в данном фрагменте кода и все будет как хочется.
11K
10 декабря 2006 года
M0n-&amp;-T0r
28 / / 15.11.2006
Упс!!! да знаю я как коментарий обозначается :) ОГРОМНОЕ СПАСИБО!! Если Я чем-то могу помочь (явно не в программировании)...
11K
11 декабря 2006 года
M0n-&amp;-T0r
28 / / 15.11.2006
ещё вопрос:
Что означает следующая строчка?
srand((unsigned)time(NULL));
533
11 декабря 2006 года
Visualex
254 / / 07.01.2005
... данная строчка реализует функцию rand(), т.е. чтобы "совершенно случайно" выбирались цифры из заданного диапазона.
если ее убрать то каждый раз при запуске программы будет выполняться рандомизация с одним и тем же итогом.
т.е. запустил
1-я сортировка: 12345
2-я сортировка: 23451
3-я сортировка: 23541
выход из программы
при следующем запуске будет выполняться сотрировка в таком же порядке. Так вот, чтобы этого недопустить используется функция srand()
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог