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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 24.12.2008, 21:03   #1
FAk
 
Регистрация: 15.05.2008
Сообщений: 8
Вопрос Нужна помощь и советы

Код:
#include <stdio.h>
#include <conio.h>
#define GAME " Игра Судоку "
int first_page();
 int first_game();
  int two_game();
   int spravka ();
    int main()
 {
	 printf (" %s ", GAME);
	  printf (" Чтобы войти в игру нажмите 1\n");
	   printf (" Справка нажмите 2\n");
	    printf (" Уровень повышенной сложности 3 \n");
	   char sr;
	   switch (sr) {
		   case '1': int first_game();
		            break;
		   case '2': int spravka ();
		            break;
           case '3': int two_game();
                     break;
		            default: printf (" Ошибка ");
	   }
  }
  int spravka()
  {
	  printf ("У судоку есть всего одно правило. Необходимо заполнить свободные клетки цифрами от 1 до 9 так, чтобы\
	  в каждой строке, в каждом столбце и в каждом малом квадрате 3x3 каждая цифра встречалась бы только один раз\
      От того, сколько клеток уже заполнено, зависит сложность игры\n");
    
  }
  
  int first_game()
  {
	  int syd[9] = {1,2,3,4,5,6};
	   int *ptr1, *ptr2, *ptr3;
	  ptr1 = syd;
	  ptr2 = &syd[5];
	   printf ("\n Игра началась\n");
	     printf ("\n____________\n"); 
          printf ("\n %d   %d    %d \n",*ptr2,*ptr2 - 3,*ptr2 - 4); 
           printf ("\n %d %d %d %d %d   \n",*ptr2 - 3, *ptr2 - 2, *ptr2 - 4, *ptr2 + 3, *ptr2 + 2); 
           printf ("\n %d %d %d %d %d %d \n",*ptr2 + 3,*ptr2 + 2, *ptr2 - 1, *ptr2,*ptr2 - 5, *ptr2 +1); 
          printf (" _____________"); 
         printf ("\n %d %d %d %d %d %d\n", *ptr2 - 2, *ptr2 - 4, *ptr2 + 3, *ptr2 + 2, *ptr2 - 1, *ptr2); 
        printf ("\n    %d %d    %d   \n", *ptr2 - 1, *ptr2, *ptr2 + 1); 
       printf ("\n %d %d %d %d %d %d\n", *ptr2 - 5, *ptr2 + 1, *ptr2 - 3, *ptr2 -2, *ptr2 - 4, *ptr2 + 3); 
      printf ("______________");
      
    }
    int two_game()
    {
	   int mas[5] = {0,1,2,3,4}; 
 int *gtr1, *gtr2, *gtr3; 
 gtr1 = mas; 
 gtr2 = &mas[4]; 
 printf ("\n Уровень 2\n"); 
    printf ("\n___________________________\n"); 
       printf ("\n    %d   |       |          ",*gtr2-2); 
        printf ("\n        | %d    %d| %d      ",*gtr2+3,*gtr2-3,*gtr2+4); 
          printf ("\n       %d|      %d|    %d %d",*gtr2+3,*gtr2,*gtr2-2,*gtr2+5); 
          printf ("\n________|_______|________\n"); 
         printf ("\n %d    %d |    %d  |            ",*gtr2-1,*gtr2-3,*gtr2+5); 
        printf ("\n %d    %d |    %d  |            ",*gtr2+2,*gtr2-3,*gtr2+1,*gtr2+5,*gtr2,*gtr2-1); 
       printf ("\n   %d    | %d %d   |   %d %d %d",*gtr2,*gtr2+5,*gtr2+4,*gtr2-1,*gtr2-3); 
      printf ("\n________|________  |__________\n"); 
     printf ("\n %d %d %d  |      |          %d",*gtr2-2,*gtr2-1,*gtr2,*gtr2+4); 
    printf ("\n %d %d    |       |%d %d      ",*gtr2+5,*gtr2+1,*gtr2-2,*gtr2-1); 
   printf ("\n %d %d    |       |      %d   ",*gtr2+3,*gtr2-3,*gtr2+4); 
  printf ("\n________|_________|________\n"); 
	getchar();
}
есть вот такой код игры Судоку.... но у меня не получается запустить и ввести вообще 1 или 2 или справка...к тому же она перестала вообще запускаться... сегодня в универе запускалас а щас дома опять престала .... вообщем тут загвоздка в чемто.. .Если не труно ктонить проглянтье...

Модератор: тег CODE

Последний раз редактировалось MaTBeu; 24.12.2008 в 21:57.
FAk вне форума
Старый 24.12.2008, 21:26   #2
eyo
Помощник
Пользователь
 
Регистрация: 24.12.2008
Сообщений: 55
По умолчанию

Держи, запустилась. Но саму игру не тестировал.
Код:
#include <stdio.h>
#include <conio.h>
#define GAME " Игра Судоку "
int first_page();
int first_game();
int two_game();
int spravka ();
int main()
{
char sr;
printf (" %s ", GAME);
printf (" Чтобы войти в игру нажмите 1\n");
printf (" Справка нажмите 2\n");
printf (" Уровень повышенной сложности 3 \n");
scanf ("%c", &sr);
switch (sr) {
case '1': int first_game();
break;
case '2': int spravka ();
break;
case '3': int two_game();
break;
default: printf (" Ошибка ");
}
}
int spravka()
{
printf ("У судоку есть всего одно правило. Необходимо заполнить свободные клетки цифрами от 1 до 9 так, чтобы\
в каждой строке, в каждом столбце и в каждом малом квадрате 3x3 каждая цифра встречалась бы только один раз\
От того, сколько клеток уже заполнено, зависит сложность игры\n");
return 0;
}

int first_game()
{
int syd[9] = {1,2,3,4,5,6};
int *ptr1, *ptr2, *ptr3;
ptr1 = syd;
ptr2 = &syd[5];
printf ("\n Игра началась\n");
printf ("\n____________\n");
printf ("\n %d %d %d \n",*ptr2,*ptr2 - 3,*ptr2 - 4);
printf ("\n %d %d %d %d %d \n",*ptr2 - 3, *ptr2 - 2, *ptr2 - 4, *ptr2 + 3, *ptr2 + 2);
printf ("\n %d %d %d %d %d %d \n",*ptr2 + 3,*ptr2 + 2, *ptr2 - 1, *ptr2,*ptr2 - 5, *ptr2 +1);
printf (" _____________");
printf ("\n %d %d %d %d %d %d\n", *ptr2 - 2, *ptr2 - 4, *ptr2 + 3, *ptr2 + 2, *ptr2 - 1, *ptr2);
printf ("\n %d %d %d \n", *ptr2 - 1, *ptr2, *ptr2 + 1);
printf ("\n %d %d %d %d %d %d\n", *ptr2 - 5, *ptr2 + 1, *ptr2 - 3, *ptr2 -2, *ptr2 - 4, *ptr2 + 3);
printf ("______________");
return 0;
}
int two_game()
{
int mas[5] = {0,1,2,3,4};
int *gtr1, *gtr2, *gtr3;
gtr1 = mas;
gtr2 = &mas[4];
printf ("\n Уровень 2\n");
printf ("\n___________________________\n");
printf ("\n %d | | ",*gtr2-2);
printf ("\n | %d %d| %d ",*gtr2+3,*gtr2-3,*gtr2+4);
printf ("\n %d| %d| %d %d",*gtr2+3,*gtr2,*gtr2-2,*gtr2+5);
printf ("\n________|_______|________\n");
printf ("\n %d %d | %d | ",*gtr2-1,*gtr2-3,*gtr2+5);
printf ("\n %d %d | %d | ",*gtr2+2,*gtr2-3,*gtr2+1,*gtr2+5,*gtr2,*gtr2-1);
printf ("\n %d | %d %d | %d %d %d",*gtr2,*gtr2+5,*gtr2+4,*gtr2-1,*gtr2-3);
printf ("\n________|________ |__________\n");
printf ("\n %d %d %d | | %d",*gtr2-2,*gtr2-1,*gtr2,*gtr2+4);
printf ("\n %d %d | |%d %d ",*gtr2+5,*gtr2+1,*gtr2-2,*gtr2-1);
printf ("\n %d %d | | %d ",*gtr2+3,*gtr2-3,*gtr2+4);
printf ("\n________|_________|________\n");
getchar();
return 0;
}
Продал кроссовки Fila, купил текилу.
eyo вне форума
Старый 24.12.2008, 23:01   #3
FAk
 
Регистрация: 15.05.2008
Сообщений: 8
По умолчанию

Cпасибо тебе за помощь..... хоть запускается ...
Только теперь чтобы я не нажал 1 или 2 или 3 нечего не происходит(((
FAk вне форума
Старый 25.12.2008, 00:05   #4
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

вставляй в конце функций это:

getch();

Код:
int first_game()
{
int syd[9] = {1,2,3,4,5,6};
int *ptr1, *ptr2, *ptr3;
ptr1 = syd;
ptr2 = &syd[5];
printf ("\n Игра началась\n");
printf ("\n____________\n");
printf ("\n %d %d %d \n",*ptr2,*ptr2 - 3,*ptr2 - 4);
printf ("\n %d %d %d %d %d \n",*ptr2 - 3, *ptr2 - 2, *ptr2 - 4, *ptr2 + 3, *ptr2 + 2);
printf ("\n %d %d %d %d %d %d \n",*ptr2 + 3,*ptr2 + 2, *ptr2 - 1, *ptr2,*ptr2 - 5, *ptr2 +1);
printf (" _____________");
printf ("\n %d %d %d %d %d %d\n", *ptr2 - 2, *ptr2 - 4, *ptr2 + 3, *ptr2 + 2, *ptr2 - 1, *ptr2);
printf ("\n %d %d %d \n", *ptr2 - 1, *ptr2, *ptr2 + 1);
printf ("\n %d %d %d %d %d %d\n", *ptr2 - 5, *ptr2 + 1, *ptr2 - 3, *ptr2 -2, *ptr2 - 4, *ptr2 + 3);
printf ("______________");

getch();

return 0;
}
а то у тебя программа отрабатывает и закрывается

Последний раз редактировалось counter; 25.12.2008 в 00:08.
counter вне форума
Старый 25.12.2008, 00:49   #5
FAk
 
Регистрация: 15.05.2008
Сообщений: 8
По умолчанию

Окей буду так делать! Но все же кто подскажет почему она не работает? я начинающий программист и нуждаюсь в вашей помощи..
FAk вне форума
Старый 25.12.2008, 01:03   #6
eyo
Помощник
Пользователь
 
Регистрация: 24.12.2008
Сообщений: 55
По умолчанию

Я добавил строчки с return'ами, потому что функции любого типа, отличного от void, должны возвращать какое-либо значение.

counter добавил getch () чтобы после выполнения функции была возможность рассмотреть результат.
Продал кроссовки Fila, купил текилу.
eyo вне форума
Старый 21.01.2009, 12:53   #7
FAk
 
Регистрация: 15.05.2008
Сообщений: 8
По умолчанию

Подскажите как организовать ввод в этой программе,
чтобы пользователь мог вводить в пробелы цифры??
FAk вне форума
Старый 21.01.2009, 20:28   #8
FAk
 
Регистрация: 15.05.2008
Сообщений: 8
По умолчанию

Код:
#include <stdio.h>
#include <stdlib.h>
enum 
{
    Width  = 9,
    Height = 9,
    CountSh= 100   //кол-во перемешиваний
};
//тут можно вставить любые начальные условия, главное что бы удовлетворяли правилам игры
int arr[Width][Height]  = {     {0,3,6,1,4,7,2,5,8},   
                                {1,4,7,2,5,8,0,3,6},
                                {2,5,8,0,3,6,1,4,7},
                                {3,6,0,4,7,1,5,8,2},
                                {4,7,1,5,8,2,3,6,0},
                                {5,8,2,3,6,0,4,7,1},
                                {6,0,3,7,1,4,8,2,5},
                                {7,1,4,8,2,5,6,0,3},
                                {8,2,5,6,0,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 i=0;i<Width;++i)
    {
        int temp   = arr[i][x1];
        arr[i][x1] = arr[i][x2];
        arr[i][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 i=0;i<Height;++i)
    {
        int temp   = arr[x1][i];
        arr[x1][i] = arr[x2][i];
        arr[x2][i] = temp;
    }
}
int main()
{
     for(int i=0;i<CountSh;++i)
    {
        unsigned  int sq,x1,x2; 
        sq = rand()%3;  // выбираем что бы попали в нужный диапазон
        x1 = rand()%2 + 1;
        x2 = rand()%x1;
        if(i%2) swapX(x1 +sq *3,x2+sq *3);
        else    swapY(x1 +sq *3,x2+sq *3);
    }
        
    //вывод на экран
    printf("\n-------------------------------\n");
    for(int i=0;i<Width;++i)
    {
        for(int j=0;j<Height;++j)    
        {
            printf("%s %d ",j%3 == 0 ? "|":"",arr[i][j]);
        }
        printf("|");
        if(i%3 == 2)
            printf("\n+---------|---------|---------|\n");
        else
            printf("\n|         |         |         |\n");
    }
    return 0;
}
ПРошу также Помощи с этим кодом....
Это очень важно что в нем не так 1 ошибка немогу понять .....
Пожалуйста, есть тут кто ?

Модератор: тег CODE

Последний раз редактировалось MaTBeu; 21.01.2009 в 22:33.
FAk вне форума
Старый 21.01.2009, 21:18   #9
eyo
Помощник
Пользователь
 
Регистрация: 24.12.2008
Сообщений: 55
По умолчанию

Так в чем проблема? У меня запустилось.
Продал кроссовки Fila, купил текилу.
eyo вне форума
Старый 21.01.2009, 22:09   #10
FAk
 
Регистрация: 15.05.2008
Сообщений: 8
По умолчанию

multiple declaration for "i" in function main()
ошибка вот в этой строчке
Код:
printf("\n-------------------------------\n");
for(int i=0;i<Width;++i)
{
for(int j=0;j<Height;++j)
{
printf("%s %d ",j%3 == 0 ? "|":"",arr[i][j]);
}
у меня выдает

Последний раз редактировалось MaTBeu; 21.01.2009 в 22:33.
FAk вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Советы опытных разработчиков студентам. Ivan_32 Свободное общение 63 28.04.2009 16:08
Советы по созданию собственного сайта с нуля, хостинг, дизайн, языки программирования Hallo Обсуждение статей 0 12.12.2006 21:40