Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Крестики нолики на с++  (Прочитано 12878 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Крестики нолики на с++
« Ответ #30 : 14 Октября 2014, 21:57:58 »
SergeyIT, так удобнее. Можно и пробелами. Но тогда - везде одинаковое количество. Отступы вообще можно не делать - только прочитать потом нельзя.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн Гриб_под_зонтом

  • Автор темы
  • Активист
  • *
  • Сообщений: 301
    • Просмотр профиля
Re: Крестики нолики на с++
« Ответ #31 : 18 Октября 2014, 00:31:38 »
Не хочу никого обижать но вопрос поставлен прямо: что делать с goto. Может в main е у меня и есть лажи но первым делом я хочу разобраться с goto. Напомню код:
Код: (cpp) [Выделить]
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;

 char a [3] [3] = {{' ',' ',' '},
                   {' ',' ',' '},
                   {' ',' ',' '}};
   
   void print_a()
     {
for (int i=0; i<3; i++)
  {
              cout<<a[i][0]<<" | "<<a[i][1]<<" | "<<a[i][2];
              if (i<2) {cout<<endl<<"----------";}
              cout<<endl;
           }
     }
   void time_2(int ms)
   {
   int CLOCKS_PER_MSEC = CLOCKS_PER_SEC / 1;   
       clock_t end_time = clock() + ms * CLOCKS_PER_MSEC ;
       while (clock() < end_time) {}
   }
   bool who_win(int x, int y)
   {
   if (a[x][y]=='X'){cout<<"Поздравляю! Ты выиграл!"<<endl;
   system ("xdg-open /home/user/Музыка/Победители.mp3"); return true;}
   if (a[x][y]=='O'){cout<<"Ты проиграл :("<<endl; return true;}
   return false;
   }
   void igrok_1()
   {
  int l;
  cout<<endl<<"Твой ход: ";
  L:cin>>l;
  cout<<endl;
  if (l==1) {if (a[0][0]==' ') {a[0][0]='X';}
  else {cout<<"Ошибка: поле занято. Поробуйте ещё раз:"; goto L;}}
  if (l==2) {if (a[0][1]==' ') {a[0][1]='X';}
  else {cout<<"Ошибка: поле занято. Поробуйте ещё раз:"; goto L;}}
  if (l==3) {if (a[0][2]==' ') {a[0][2]='X';}
  else {cout<<"Ошибка: поле занято. Поробуйте ещё раз:"; goto L;}}
  if (l==4) {if (a[1][0]==' ') {a[1][0]='X';}
  else {cout<<"Ошибка: поле занято. Поробуйте ещё раз:"; goto L;}}
  if (l==5) {if (a[1][1]==' ') {a[1][1]='X';}
  else {cout<<"Ошибка: поле занято. Поробуйте ещё раз:"; goto L;}}
  if (l==6) {if (a[1][2]==' ') {a[1][2]='X';}
  else {cout<<"Ошибка: поле занято. Поробуйте ещё раз:"; goto L;}}
  if (l==7) {if (a[2][0]==' ') {a[2][0]='X';}
  else {cout<<"Ошибка: поле занято. Поробуйте ещё раз:"; goto L;}}
  if (l==8) {if (a[2][1]==' ') {a[2][1]='X';}
  else {cout<<"Ошибка: поле занято. Поробуйте ещё раз:"; goto L;}}
  if (l==9) {if (a[2][2]==' ') {a[2][2]='X';}
  else {cout<<"Ошибка: поле занято. Поробуйте ещё раз:"; goto L;}}
   }
   void comp()
   { 
  int k;
  cout<<"Дай мне подумать.."<<flush;
  time_2(2);
  K:srand(time(0));
  k = rand ()%(9)+1;
  if (k==1) {if (a[0][0]==' ') {a[0][0]='O';}
  else {goto K;}}
  if (k==2) {if (a[0][1]==' ') {a[0][1]='O';}
  else {goto K;}}
  if (k==3) {if (a[0][2]==' ') {a[0][2]='O';}
  else {goto K;}}
  if (k==4) {if (a[1][0]==' ') {a[1][0]='O';}
  else {goto K;}}
  if (k==5) {if (a[1][1]==' ') {a[1][1]='O';}
  else {goto K;}}
  if (k==6) {if (a[1][2]==' ') {a[1][2]='O';}
  else {goto K;}}
  if (k==7) {if (a[2][0]==' ') {a[2][0]='O';}
  else {goto K;}}
  if (k==8) {if (a[2][1]==' ') {a[2][1]='O';}
  else {goto K;}}
  if (k==9) {if (a[2][2]==' ') {a[2][2]='O';}
  else {goto K;}}
  cout<<" Мой ход "<<k<<"!"<<endl<<endl;
   }
   bool win()
   {
   for (int x=0; x<3; x++)
          {
           if (a[x][0]!=' ' && a[x][0]==a[x][1] && a[x][1]==a[x][2]){if(who_win(x, 0)==true) return true;}
           if (a[0][x]!=' ' && a[0][x]==a[1][x] && a[1][x]==a[2][x]){if(who_win(0, x)==true) return true;}
          }
           if (a[0][0]!=' ' && a[0][0]==a[1][1] && a[1][1]==a[2][2]){if(who_win(0, 0)==true) return true;}
           if (a[0][2]!=' ' && a[0][2]==a[1][1] && a[1][1]==a[2][0]){if(who_win(0, 2)==true) return true;}
           return false;
   }
   int main()
     {
cout<<"\t \tВАС ПРИВЕТСТВУЕТ ИГРА КРЕСТИКИ-НОЛИКИ\t \t\n"<<endl;
print_a();
igrok_1();
print_a();
if(win()==true) return 0;
comp();
print_a();
if(win()==true) return 0;
igrok_1();
print_a();
if(win()==true) return 0;
comp();
print_a();
if(win()==true) return 0;
igrok_1();
print_a();
if(win()==true) return 0;
comp();
print_a();
if(win()==true) return 0;
igrok_1();
print_a();
if(win()==true) return 0;
comp();
print_a();
if(win()==true) return 0;
igrok_1();
print_a();
if(win()==true) return 0;
cout<<"Ничья!"<<endl;
return 0;
}
Hp 250 G3: 8Gb RAM, Intel Celeron 2.16-2.58GHz with 2 core, Intel HD Graphics.
Ubuntu 18.04 LTS with GNOME 3.

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Крестики нолики на с++
« Ответ #32 : 18 Октября 2014, 00:39:09 »
Гриб_под_зонтом, у цикла есть условие. Значение true|false можно менять с помощью "!". Цикл должен выполнятся к примеру пока пользователь не выберет пустую клетку спрашивать в какую клетку идти.
Есть такая удобная штука.
ЗЫ я уже писал про функцию main. Не хочешь там поставить цикл?
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн SergeyIT

  • Зануда.
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5743
  • Все по палатам!
    • Просмотр профиля
Re: Крестики нолики на с++
« Ответ #33 : 18 Октября 2014, 01:15:43 »
Можно типа так
   void igrok_1()
   {
          int l;
          int res=0;
          cout<<endl<<"Твой ход: ";
          while (res==0)
          {
            res=0;
            cin>>l;
            cout<<endl;
            if (l==1) {if (a[0][0]==' ') {a[0][0]='X'; res=1;}
            if (l==2) {if (a[0][1]==' ') {a[0][1]='X'; res=1;}
........................
            if (l==9) {if (a[2][2]==' ') {a[2][2]='X';  res=1;}

            if(res==0) {cout<<"Ошибка: поле занято. Поробуйте ещё раз:";}
          }
   }
можно и дальше упростить
(заменил бы TABы на пробелы, удобнее было бы в браузере править)
PS
   void igrok_1()
   {
          int l;
          int res=0;int
          cout<<endl<<"Твой ход: ";
          while (res==0)
          {
            res=0;
            cin>>l;
            cout<<endl;
            if (l>0 && l<10 )
            {
              int x = (l-1)/3;
              int y = (l-1)%3;
              if (l>0 && l<10 && a[x][y]==' ') {a[x][y]='X'; res=1;}
            }
            if(res==0) {cout<<"Ошибка. Поробуйте ещё раз:";}
          }
   }
« Последнее редактирование: 18 Октября 2014, 23:18:40 от SergeyIT »
Извините, я все еще учусь

Оффлайн Гриб_под_зонтом

  • Автор темы
  • Активист
  • *
  • Сообщений: 301
    • Просмотр профиля
Re: Крестики нолики на с++
« Ответ #34 : 12 Ноября 2014, 00:07:03 »
Сегодня вспомнил про недописанную прогу и немного над ней пошаманил :)
В результате получилось  вот что:
Код: (cpp) [Выделить]
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <fstream>
#include "time.h"
using namespace std;

 int k;
 char f[]="Статистика.txt";
 char a [3] [3] = {{' ',' ',' '},
                   {' ',' ',' '},
                   {' ',' ',' '}};
   
   void print_a()
     {
for (int i=0; i<3; i++)
  {
              cout<<a[i][0]<<" | "<<a[i][1]<<" | "<<a[i][2];
              if (i<2) {cout<<endl<<"----------";}
              cout<<endl;
           }
     }
   bool who_win(int x, int y)
   {
   ofstream my_statistics(f, ios::app);
   if (a[x][y]=='X'){cout<<"Поздравляю! Ты выиграл!"<<endl;
   my_statistics<<"Выиграл игрок."<<endl; return true;}
   if (a[x][y]=='O'){cout<<"Ты проиграл :("<<endl;
   my_statistics<<"Выиграл Бот."<<endl; return true;}
   return false;
   }
   int comp_a(char pole)
   {
   for (int m=0; m<3; m++) 
   {
   if (a[m][0]==pole && a[m][1]==pole && a[m][2]==' '){
                                                       if (m==0) k=3;
                                                       if (m==1) k=6;
                                                       if (m==2) k=9; return 0;}   
   if (a[m][0]==pole && a[m][2]==pole && a[m][1]==' '){
                                                       if (m==0) k=2;
                                                       if (m==1) k=5;
                                                       if (m==2) k=8; return 0;}
   if (a[m][2]==pole && a[m][1]==pole && a[m][0]==' '){
                                                       if (m==0) k=1;
                                                       if (m==1) k=4;
                                                       if (m==2) k=7; return 0;}
   if (a[0][m]==pole && a[1][m]==pole && a[2][m]==' '){
                                                       if (m==0) k=7;
                                                       if (m==1) k=8;
                                                       if (m==2) k=9; return 0;}   
   if (a[0][m]==pole && a[2][m]==pole && a[1][m]==' '){
                                                       if (m==0) k=4;
                                                       if (m==1) k=5;
                                                       if (m==2) k=6; return 0;}
   if (a[2][m]==pole && a[1][m]==pole && a[0][m]==' '){
                                                       if (m==0) k=1;
                                                       if (m==1) k=2;
                                                       if (m==2) k=3; return 0;}
   }
   if (a[0][0]==pole && a[1][1]==pole && a[2][2]==' '){k=9; return 0;}   
   if (a[0][0]==pole && a[2][2]==pole && a[1][1]==' '){k=5; return 0;}
   if (a[2][2]==pole && a[1][1]==pole && a[0][0]==' '){k=1; return 0;}
   if (a[0][2]==pole && a[1][1]==pole && a[2][0]==' '){k=7; return 0;}   
   if (a[0][2]==pole && a[2][0]==pole && a[1][1]==' '){k=5; return 0;}
   if (a[1][1]==pole && a[2][0]==pole && a[0][2]==' '){k=3; return 0;}
   return 0;
   }
   void igrok_1()
   {
  int l, eror;
  cout<<endl<<"Твой ход: ";
  do{
  eror = 0;
  cin>>l;
  cout<<endl;
  if (l==1) {if (a[0][0]==' ') {a[0][0]='X';}
  else {cout<<"Ошибка: поле занято. Поробуйте ещё раз:"; eror=1;}}
  if (l==2) {if (a[0][1]==' ') {a[0][1]='X';}
  else {cout<<"Ошибка: поле занято. Поробуйте ещё раз:"; eror=1;}}
  if (l==3) {if (a[0][2]==' ') {a[0][2]='X';}
  else {cout<<"Ошибка: поле занято. Поробуйте ещё раз:"; eror=1;}}
  if (l==4) {if (a[1][0]==' ') {a[1][0]='X';}
  else {cout<<"Ошибка: поле занято. Поробуйте ещё раз:"; eror=1;}}
  if (l==5) {if (a[1][1]==' ') {a[1][1]='X';}
  else {cout<<"Ошибка: поле занято. Поробуйте ещё раз:"; eror=1;}}
  if (l==6) {if (a[1][2]==' ') {a[1][2]='X';}
  else {cout<<"Ошибка: поле занято. Поробуйте ещё раз:"; eror=1;}}
  if (l==7) {if (a[2][0]==' ') {a[2][0]='X';}
  else {cout<<"Ошибка: поле занято. Поробуйте ещё раз:"; eror=1;}}
  if (l==8) {if (a[2][1]==' ') {a[2][1]='X';}
  else {cout<<"Ошибка: поле занято. Поробуйте ещё раз:"; eror=1;}}
  if (l==9) {if (a[2][2]==' ') {a[2][2]='X';}
  else {cout<<"Ошибка: поле занято. Поробуйте ещё раз:"; eror=1;}}
  if (l!=1 && l!=2 && l!=3 && l!=4 && l!=5 && l!=6 && l!=7 && l!=8 && l!=9)
  {cout<<"Ошибка: нет такого поля. Попробуйте ещё раз: "; eror=1;}
      }
      while (eror==1) ;
   }
   void comp()
   { 
   int eror;
  srand(time(NULL));
  cout<<"Дай мне подумать.."<<flush;
  time_s(2);
  comp_a('X');
  if (comp_a('X')==0) {goto B;}
  comp_a('O');
  if (comp_a('O')==0) {goto B;}
  do{
  eror = 0;
  k = rand ()%(9)+1;
  B:if (k==1) {if (a[0][0]==' ') {a[0][0]='O';}
  else {eror=1;}}
  if (k==2) {if (a[0][1]==' ') {a[0][1]='O';}
  else {eror=1;}}
  if (k==3) {if (a[0][2]==' ') {a[0][2]='O';}
  else {eror=1;}}
  if (k==4) {if (a[1][0]==' ') {a[1][0]='O';}
  else {eror=1;}}
  if (k==5) {if (a[1][1]==' ') {a[1][1]='O';}
  else {eror=1;}}
  if (k==6) {if (a[1][2]==' ') {a[1][2]='O';}
  else {eror=1;}}
  if (k==7) {if (a[2][0]==' ') {a[2][0]='O';}
  else {eror=1;}}
  if (k==8) {if (a[2][1]==' ') {a[2][1]='O';}
  else {eror=1;}}
  if (k==9) {if (a[2][2]==' ') {a[2][2]='O';}
  else {eror=1;}}
  if (k==0) {eror=1;}}
  while (eror==1);
  cout<<" Мой ход "<<k<<"!"<<endl<<endl;
   }
   bool win()
   {
   for (int x=0; x<3; x++)
          {
           if (a[x][0]!=' ' && a[x][0]==a[x][1] && a[x][1]==a[x][2])
              {
  if(who_win(x, 0)==true) return true;
  }
           if (a[0][x]!=' ' && a[0][x]==a[1][x] && a[1][x]==a[2][x])
              {
  if(who_win(0, x)==true) return true;
  }
          }
           if (a[0][0]!=' ' && a[0][0]==a[1][1] && a[1][1]==a[2][2])
              {
  if(who_win(0, 0)==true) return true;
  }
           if (a[0][2]!=' ' && a[0][2]==a[1][1] && a[1][1]==a[2][0])
              {
  if(who_win(0, 2)==true) return true;
  }
           return false;
   }
   int main()
     {
cout<<"\t \tВАС ПРИВЕТСТВУЕТ ИГРА КРЕСТИКИ-НОЛИКИ\t \t\n"<<endl;
     ofstream my_statistics(f, ios::app);
print_a();
igrok_1();
print_a();
if(win()==true) return 0;
comp();
print_a();
if(win()==true) return 0;
igrok_1();
print_a();
if(win()==true) return 0;
comp();
print_a();
if(win()==true) return 0;
igrok_1();
print_a();
if(win()==true) return 0;
comp();
print_a();
if(win()==true) return 0;
igrok_1();
print_a();
if(win()==true) return 0;
comp();
print_a();
if(win()==true) return 0;
igrok_1();
print_a();
if(win()==true) return 0;
cout<<"Ничья!"<<endl;
my_statistics<<"Ничья."<<endl;
return 0;
}
Что скажете про новый код?
P. S Добавил в игру немного тупого бота и записывание статистики в файл.
Hp 250 G3: 8Gb RAM, Intel Celeron 2.16-2.58GHz with 2 core, Intel HD Graphics.
Ubuntu 18.04 LTS with GNOME 3.

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Крестики нолики на с++
« Ответ #35 : 12 Ноября 2014, 16:04:51 »
Гриб_под_зонтом, плохо сделано: отступы, нужен цикл в main.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн Grayscale

  • Активист
  • *
  • Сообщений: 573
    • Просмотр профиля
Re: Крестики нолики на с++
« Ответ #36 : 12 Ноября 2014, 17:11:35 »
Писать код и программировать - это разные вещи. Некоторые даже выделяют понятия "кодер" и "программист" как разные сущности.
Кодер отличается от программиста тем, что умеет только писать код, и собственно этим занимается. При этом о качестве кода, как правило, не заботится, лишь бы написать и работало.
Программист по мимо навыков написания кода, умеет придумать хороший алгоритм и реализовать просто, понятно. Он десять раз подумает и прикинет, что к чему, вместо того, чтобы садиться и сходу писать такой код, от которого глаза вытекают.

Я на звание крутого программиста не претендую в связи с малым опытом, но что-нибудь попытаюсь тебе расписать:
if (l!=1 && l!=2 && l!=3 && l!=4 && l!=5 && l!=6 && l!=7 && l!=8 && l!=9)что мешает написать if (l>9 || l<1)? Сам видишь разницу и преимущества?
Далее. Я крестиков-ноликов никогда не писал, и вот первое, что пришло в голову:
Нумеровать надо не с 1 до 9, а с 0 до 8(в коде, юзеру можно позволить писать 1-9)
Почему это дает преимущество:
Десятичное число  0   1   2   3   4   5   6   7   8
Троичное число     00   01   02   10   11   12   20   21   22
Посмотри на троичные числа: они как будто координаты в твоей матрице!)
Осталось вспомнить, как переводить из 10-ой в троичную.
          cin>>l;
          cout<<endl;
          if (l==1) {if (a[0][0]==' ') {a[0][0]='X';}
          else {cout<<"Ошибка: поле занято. Поробуйте ещё раз:"; eror=1;}}
          if (l==2) {if (a[0][1]==' ') {a[0][1]='X';}
          else {cout<<"Ошибка: поле занято. Поробуйте ещё раз:"; eror=1;}}
          if (l==3) {if (a[0][2]==' ') {a[0][2]='X';}
          else {cout<<"Ошибка: поле занято. Поробуйте ещё раз:"; eror=1;}}
          ....... еще дофига таких строчек

такой код можно заменить

cin >> l;
int y = (l-1) - 3*((l-1)/3);
int x = (l-1)/3;
if (l>9 || l<1)
{
    cout << "Ошибка: нет такого поля. Попробуйте ещё раз: ";
    eror = 1;
}
else
{
    if (a[x][y]==' ') a[x][y]='X';
    else
    {
        cout << "Ошибка: поле занято. Поробуйте ещё раз:";
        eror = 1;
    }
}

И все. Никакого "полотна" из почти одинаковых строчек.
Еще есть одна идея. Писать в матрицу не ' ', 'О', 'Х' а числа 1, 2, и 4 соответственно.
Эти числа выбраны не случайно. Почитай в википедии описание команды chmod, может поймешь, почему :)
Все дело в сумме чисел. когда выигрывают крестики, в определенном ряду/строке получится в сумме 4+4+4=12, если нолики - 2+2+2=6.
Остается считать суммы на пересечении с текущей ячейкой....
Да, наверное не самое оптимальное, что можно придумать, но в качестве идеи сойдет..

void comp и void igrok_1 легко заменяются одной функцией. Можно же ввести на худой конец флаговую переменную, и постоянно менять ее на каждом ходу с 0 на 1 и наоборот. Если 0, щас ход юзера, ставим крестик, если 1, ход компа - ставим О.
и ставь пробелы до и после уголков: cout << "текст";
« Последнее редактирование: 12 Ноября 2014, 17:14:51 от Grayscale »
В мире столько разнообразной фигни.. И в каждой найдется специалист
ASUS K46CB(S46CB) i7-3537U @ 2.0GHz 8Gb RAM + SSD 64 Gb + Manjaro Linux

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Крестики нолики на с++
« Ответ #37 : 12 Ноября 2014, 17:23:07 »
Grayscale, некоторые вообще избегают слова прогер - используют девелопер.
Ещё есть else if рекомендую с ним ознакомится.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн Grayscale

  • Активист
  • *
  • Сообщений: 573
    • Просмотр профиля
Re: Крестики нолики на с++
« Ответ #38 : 12 Ноября 2014, 17:25:54 »
alsoijw,
у нас в конторе и девелопер не используется :) используется designer :coolsmiley:
про else if это вы мне?))
Я нарочно не использовал, чтобы кусок был логически отделен.
В мире столько разнообразной фигни.. И в каждой найдется специалист
ASUS K46CB(S46CB) i7-3537U @ 2.0GHz 8Gb RAM + SSD 64 Gb + Manjaro Linux

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Крестики нолики на с++
« Ответ #39 : 12 Ноября 2014, 17:33:03 »
Grayscale, чем подсчет суммы отличается от проверки символа? Про else if - автору.

Пользователь решил продолжить мысль 12 Ноября 2014, 17:34:51:
Хотя вместо отступов лучше было бы использовать else if. ИМХО
« Последнее редактирование: 12 Ноября 2014, 17:34:51 от alsoijw »
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн Grayscale

  • Активист
  • *
  • Сообщений: 573
    • Просмотр профиля
Re: Крестики нолики на с++
« Ответ #40 : 12 Ноября 2014, 17:47:12 »
Grayscale, чем подсчет суммы отличается от проверки символа? Про else if - автору.

Пользователь решил продолжить мысль [time]12 Ноябрь 2014, 17:34:51[/time]:
Хотя вместо отступов лучше было бы использовать else if. ИМХО
подсчет суммы мне просто показался забавным, т.к. переносит идеи прав доступа в крестики-нолики :)
Вообще же я привел в качестве иллюстрации, что решать поставленную задачу можно не только в лоб. Лучше сначала подумать над более оптимальным решением, чего автору и желаю, собственно.
В мире столько разнообразной фигни.. И в каждой найдется специалист
ASUS K46CB(S46CB) i7-3537U @ 2.0GHz 8Gb RAM + SSD 64 Gb + Manjaro Linux

Оффлайн Гриб_под_зонтом

  • Автор темы
  • Активист
  • *
  • Сообщений: 301
    • Просмотр профиля
Re: Крестики нолики на с++
« Ответ #41 : 12 Ноября 2014, 21:35:19 »
Огромное спасибо  Grayscale. Решил серьёзно заняться с++, дабы не быть просто кодером)
Если что будет новое - отпишусь.
Hp 250 G3: 8Gb RAM, Intel Celeron 2.16-2.58GHz with 2 core, Intel HD Graphics.
Ubuntu 18.04 LTS with GNOME 3.

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Крестики нолики на с++
« Ответ #42 : 14 Января 2015, 20:27:14 »
У тебя есть массив символов 10:10. Реализуй процедуру вывода на экран. Выводим 10 символов - перенос каретки. Никаких дополнительных украшений.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн Гриб_под_зонтом

  • Автор темы
  • Активист
  • *
  • Сообщений: 301
    • Просмотр профиля
Re: Крестики нолики на с++
« Ответ #43 : 14 Января 2015, 21:06:33 »
alsoijw,
Код: (cpp) [Выделить]
char mas[10][10];
for (int i=0; i<10;i++)
{
   for (int m=0; m<10; m++)
   {
       cout << mas[i][m];
   }
 cout<<endl;
}
Hp 250 G3: 8Gb RAM, Intel Celeron 2.16-2.58GHz with 2 core, Intel HD Graphics.
Ubuntu 18.04 LTS with GNOME 3.

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Крестики нолики на с++
« Ответ #44 : 14 Января 2015, 21:08:45 »
Заново перечитал тему. Начни с моего задания. Как я вижу достаточных знаний по программированию на каком либо языке у тебя нет. ИМХО было бы не плохо теб выбрать тебе язык по проще. Хочешь плюсы - не возражаю.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

 

Страница сгенерирована за 0.021 секунд. Запросов: 22.