Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.05.2009, 14:39   #1
leshax
 
Регистрация: 17.01.2009
Сообщений: 6
По умолчанию Судоку. Проблема с отображением елементов массива в решетке.

Вот есть правильно работающий код программы которая отображает масссив 9х9 состоящий из нулей и двигает крестик по нему нажимая стрелочки. при нажатии ENTER заполняет указанную ячейку "x"-ом если ход человека. И "o" если ход компьютера.


Код:
#include <iostream>
#include <math.h>
#include <windows.h>
#include <conio.h>
#include <time.h>

using namespace std;

void main()
{

     srand(time(0));
     system("CLS");


     int row=9;
     int col=9;
     int x=0;int y=0;
     int q;
     int w;
     char mas[9][9];
      char mas1[3][3];
     int counter=0;
     int counter2=0;


for(int i=0;i<row;i++)
     {
          for(int j=0;j<row;j++)
          {
               mas[i][j]='0';
          }
     }


     for (;;)
     { 
         
          system("CLS");
          
           cout<<"lol"<<endl;
          for (int i=0;i<row;i++)
          {
               for (int j=0;j<col;j++)
               {
                    if (i==y&&j==x)
                    {     
                         q=i;
                         w=j;
                    cout<<"+";

                    }
                    else
                    {
                    
                    cout<<mas[i][j];
                    
                    }
               }
          cout<<endl;
          }
          
            
                  
          
          int key=_getch();
          if (key==224||key==0)key=_getch();
          
          
                  
          switch(key)
          {
          case 80:y<row-1?y++:y=0;break;
          case 77:x<col-1?x++:x=0;break;
          case 72:y>0?y--:y=row-1;break;
          case 75:x>0?x--:x=col-1;break;
          case 27:exit(0);
          case 13:
               if (counter%2==0)
               {
               if(mas[q][w]!='x'&&mas[q][w]!='o')
               {
               mas[q][w]='x';
                  counter++;
                  
                  }
               }
                else
                  {

                    int m=rand()%3;
                  int n=rand()%3;
                         if(mas[m][n]!='x'&&mas[m][n]!='o')
                         {

                         mas[m][n]='o';
                         counter++;
                         }
                         else
                         {
                              continue;
                         }
                  }
               
                

            }
      }
}
А вот этот же код только с решеткой, только отображение елементов правильное на половине поля, остальное в мусоре и крестик умер. Помогите найти ошибку люди добрые. (код с решеткой ниже)

Последний раз редактировалось leshax; 10.05.2009 в 14:41.
leshax вне форума Ответить с цитированием
Старый 10.05.2009, 14:40   #2
leshax
 
Регистрация: 17.01.2009
Сообщений: 6
По умолчанию

Код:
#include <iostream>
#include <math.h>
#include <windows.h>
#include <conio.h>
#include <time.h>
#include "header.h"

using namespace std;

void main()
{

	srand(time(0));
     system("CLS");


     int row=9;
     int col=9;
     int x=0;int y=0;
     int q;
     int w;
     char mas[9][9];
	 char mas1[3][3];
     int counter=0;
     int counter2=0;


for(int i=0;i<row;i++)
     {
          for(int j=0;j<row;j++)
          {
               mas[i][j]='0';
          }
     }


     for (;;)
     { 
         
          system("CLS");
          
  
		enum {TopLeftC = 218,TopRightC = 191,BottomLeftC=192,BottomRightC=217, TopCenter=194, Center=197,LeftCenter=195,RightCenter=180,BottomCenter=193,
			HorDash=196,VerDash=179,Gap=32};

	int size=19;
	for(int i=0;i<size;i++)
	{
		for(int j=0;j<size;j++)
		{
			if(i==0&&j==0)
			{
				cout<<char(TopLeftC);
			}
			else if(i==0&&j==size-1)
			{
				cout<<char(TopRightC);
			}
			else if(i==size-1&&j==0)
			{
				cout<<char(BottomLeftC);
			}
			else if(i==size-1&&j==size-1)
			{
				cout<<char(BottomRightC);
			}
			else if(i==0&&j%2==0)
			{
				cout<<char(TopCenter);
			}
				else if(i==size-1&&j%2==0)
			{
				cout<<char(BottomCenter);
			}
				else if(i%2==0&&j==0)
			{
				cout<<char(LeftCenter);
			}
				else if(i%2==0&&j==size-1)
			{
				cout<<char(RightCenter);
			}
			else if(i%2==0&&j%2==0)
			{
				cout<<char(Center);
			}
			
			
			else if(i%2==0&&j%2!=0)
			{
				cout<<char(HorDash);
			}
			else if(i%2!=0&&j%2==0)
			{
				cout<<char(VerDash);
			}
			else if(i%2!=0&&j%2!=0)
			{

				if (i==y&&j==x)
                    {     
                         q=i;
                         w=j;
                    cout<<"+";

                    }
                    else
                    {
                    
                    cout<<mas[i][j];
                    
                    }


			
			}
		}
		cout<<endl;
	}

			   
		
          int key=_getch();
          if (key==224||key==0)key=_getch();
		
          
			   
          switch(key)
          {
          case 80:y<row-1?y++:y=0;break;
          case 77:x<col-1?x++:x=0;break;
          case 72:y>0?y--:y=row-1;break;
          case 75:x>0?x--:x=col-1;break;
          case 27:exit(0);
          case 13:
			if (counter%2==0)
			{
               if(mas[q][w]!='x')
               {
               mas[q][w]='x';
			   counter++;
			   
			   }
			}
			else
			{
				counter++;
			}
		
			
			 

		  }
	 }
}
leshax вне форума Ответить с цитированием
Старый 10.05.2009, 18:04   #3
leshax
 
Регистрация: 17.01.2009
Сообщений: 6
По умолчанию

up .
leshax вне форума Ответить с цитированием
Старый 10.05.2009, 18:29   #4
leshax
 
Регистрация: 17.01.2009
Сообщений: 6
По умолчанию

Если на выводе поставить cout<<"0"; то будет нормально О_О
leshax вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с отображением времени HAMMAN Помощь студентам 2 22.04.2009 16:17
проблема с отображением DBGrid gotex БД в Delphi 12 04.06.2008 01:06
Проблема с отображением джава скриптов LSDkltn HTML и CSS 2 01.04.2008 10:38
Проблема с отображением текста ALR Свободное общение 0 18.02.2007 20:08