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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

Купить рекламу на форуме 15-35 тыс рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2009, 21:09   #1
Lees27
 
Регистрация: 20.05.2009
Сообщений: 5
По умолчанию Не могу вписать цифры в клетки (игра судоку)

Нужна функция, чтобы скопировать цифру от 1 до 9 в пустую клетку


Код:
#include "stdafx.h"
#include "conv.h"
#include <iostream>
#include <iomanip>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <ctime>
using namespace std;
enum { Width  = 9,Height = 9,Repetition= 100};
int arr[Width][Height]={ {9,3,6,1,4,7,2,5,8},   
                         {1,4,7,2,5,8,9,3,6},
                         {2,5,8,9,3,6,1,4,7},
                         {3,6,9,4,7,1,5,8,2},
                         {4,7,1,5,8,2,3,6,9},
                         {5,8,2,3,6,9,4,7,1},
                         {6,9,3,7,1,4,8,2,5},
                         {7,1,4,8,2,5,6,9,3},
                         {8,2,5,6,9,3,7,1,4}};
void swapX(unsigned int x1,unsigned int x2)
{
    if(x1>=Width||x2>=Width ) return;
    unsigned int c=(x1>x2)?(x1-x2):(x2-x1);
    if( c==0||c>2) return;
    for(unsigned int col=0;col<Width;++col)
    {
        int temp = arr[col][x1];
        arr[col][x1]= arr[col][x2];
        arr[col][x2]= temp;
    }
}
void swapY(unsigned int x1,unsigned int x2)
{
    if(x1>=Height||x2>=Height)  return;
    
    
    unsigned int c=(x1>x2)?(x1-x2):(x2-x1);
    
    if(c==0||c>2) return;
    for(unsigned  int col=0;col<Height;++col)
    {
        int temp = arr[x1][col];
        arr[x1][col]= arr[x2][col];
        arr[x2][col]= temp;
    }
}




    //public:
    //property Color TextColor {
    //Color get ();
    //void color (Color value);

int _tmain(int argc, _TCHAR* argv[])
{    
	 srand (time(0));
	 unsigned col;
	 col=rand()%100;
     for(col=0;col<Repetition;++col)
    {
        unsigned  int sq,x1,x2; 
        sq = rand()%3;  
        x1 = rand()%2 + 1;
        x2 = rand()%x1;
        if(col%2)swapX(x1 +sq *3,x2+sq *3);
        else    
		swapY(x1 +sq *3,x2+sq *3);
    }   
    printf("\n+-----------------------------------------------------+\n");
    printf("|                      SUDOKU                         |");
	printf("\n+-----------------------------------------------------+\n");
    for(int col=0;col<Width;++col)
    {
        for(int row=0;row<Height;++row)    
        {   
			if(arr[col][row]==col||arr[col][row]==row||arr[col][row]==col-row||arr[col][row]==row-col||(row+1)%(col+1)==0||(col+1)%(row+1)==0||(col+1)%(row+1)==1)
			{
				arr[col][row]=0;
				if(arr[col][row]==0)
				{
				printf("|     ");
				}
			}
			else
			{
				
				printf("| %2d  ",arr[col][row]);
			}			
        }
		printf("|");
        if(col%3==2)
            printf("\n+-----------------+-----------------+-----------------+\n");
		else
		    printf("\n+-----------------+-----------------+-----------------+\n");
	}
	printf("        +-----------------------------------+\n");
	printf("        | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |\n");
	printf("        +-----------------------------------+\n");
	_getch();
    return 0;
}
Lees27 вне форума Ответить с цитированием
Старый 18.11.2009, 17:28   #2
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Код:
void swapX(unsigned int x1,unsigned int x2)
{
    if(x1>=Width||x2>=Width ) 
    return;                                     //Вернулись
    unsigned int c=(x1>x2)?(x1-x2):(x2-x1);
    if( c==0||c>2) 
    return;                                     //Вернулись
    for(unsigned int col=0;col<Width;++col)
    {
        int temp = arr[col][x1];
        arr[col][x1]= arr[col][x2];
        arr[col][x2]= temp;
    }
//А здесь??
}
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Клетки в listView разным цветом Altera Компоненты Delphi 9 24.09.2009 16:08
Сортирует цифры по строкам, а надо чтобы сортировала цифры , записанные через пробелы Алексей_xXx Помощь студентам 14 06.05.2009 17:42
вписать в треугольник окружность stimswall Помощь студентам 3 21.03.2009 03:15
Вписать в ячейку формулу. tae1980 Microsoft Office Excel 7 18.03.2009 18:19
Реализация модели эволюции клетки. Параллельное программирование на языке с. Заноза Помощь студентам 4 03.04.2008 22:13