2015-10-31 3 views
0
#include <vector> 
#include <iostream> 
using namespace std; 

typedef vector<bool> row; 
typedef vector<row> matrix; 


//Corner functions 
int population_tlc(int x, int y, matrix& grid) 
{ 
    int popu; 
    for(int yi = y+1; yi >= y; y--) 
    { 
     for(int xi = x+1; xi >= x; x--) 
     { 
      if (grid[yi][xi] == true) 
      { 
       popu++; 
      } 
     } 
    } 
    return popu; 
} 

int population_trc(int x, int y, matrix& grid) 
{ 
    int popu; 
    for(int yi = y+1; yi >= y; y--) 
    { 
     for(int xi = x-1; xi <= x; x++) 
     { 
      if (grid[yi][xi] == true) 
      { 
       popu++; 
      } 
     } 
    } 
    return popu; 
} 

int population_blc(int x, int y, matrix& grid) 
{ 
    int popu; 
    for(int yi = y-1; yi <= y; y++) 
    { 
     for(int xi = x-1; xi >= x; x--) 
     { 
      if (grid[yi][xi] == true) 
      { 
       popu++; 
      } 
     } 
    } 
    return popu; 
} 


int population_brc(int x, int y, matrix& grid) 
{ 
    int popu; 
    for(int yi = y-1; yi <= y; y++) 
    { 
     for(int xi = x-1; xi <= x; x++) 
     { 
      if (grid[yi][xi] == true) 
      { 
       popu++; 
      } 
     } 
    } 
    return popu; 
} 
//Edge functions 
int population_left(int x, int y, matrix& grid) 
{ 
    int popu; 
    for(int yi = y-1; yi <= y+1; y++) 
    { 
     for(int xi = x; xi<= x+1; x++) 
     { 
      if(xi == x && yi == y) 
      { 
       continue; 
      } 
      if (grid[yi][xi] == true) 
      { 
       popu++; 
      } 
    } 
    return popu; 
} 


int population_top(int x, int y, matrix& grid) 
{ 
    int popu; 
    for(int yi = y; yi <= y+1; y++) 
    { 
     for(int xi = x-1; xi<= x+1; x++) 
     { 
      if(xi == x && yi == y) 
      { 
       continue; 
      } 
      if (grid[yi][xi] == true) 
      { 
       popu++; 
      } 
     } 
    } 
    return popu; 
} 

int population_right(int x, int y, matrix& grid) 
{ 
    int popu; 
    for(int yi = y-1; yi <= y+1; y++) 
    { 
     for(int xi = x-1; xi<= x; x++) 
     { 
      if(xi == x && yi == y) 
      { 
       continue; 
      } 
      if (grid[yi][xi] == true) 
      { 
       popu++; 
      } 
     } 
    } 
    return popu; 

} 

Я пытаюсь создать программу, которая имитирует игру жизни конвера. Эти функции принимают координаты x и y, а также ссылку на сетку в основном. Функции проверяют окружение координатной точки x и y в сетке и определяют, должно ли оно быть истинным (живым) или ложным (мертвым). Проблема в том, что в последних двух функциях IDE продолжает подспрашивать меня за ;, хотя я определяю функцию. У меня также есть защита заголовка, полная всех прототипов функций.Функция Определение не признано

#include <vector> 
#include <iostream> 
using namespace std; 

typedef vector<bool> row; 
typedef vector<row> matrix; 

int population_tlc(int x, int y, matrix& grid); 
int population_trc(int x, int y, matrix& grid); 
int population_blc(int x, int y, matrix& grid); 
int population_brc(int x, int y, matrix& grid); 
int population_left(int x, int y, matrix& grid); 
int population_top(int x, int y, matrix& grid); 
int population_right(int x, int y, matrix& grid); 
int population_bottom(int x, int y, matrix& grid); 

Мой вопрос заключается в том, как я могу получить его «понимают», что это определение функции и неполный прототип функции. Спасибо заранее

+0

Хорошо, что вы отделили свой код, потому что в функции перед двумя последними отсутствует правая фигурная скобка. Голосование закрывается как опечатка. –

+0

, следовательно, использование vi/vim - всегда лучший выбор :) – basav

ответ

1

Там в отсутствии } в этой функции:

int population_left(int x, int y, matrix& grid) 
{ 
    int popu; 
    for(int yi = y-1; yi <= y+1; y++) 
    { 
     for(int xi = x; xi<= x+1; x++) 
     { 
      if(xi == x && yi == y) 
      { 
       continue; 
      } 
      if (grid[yi][xi] == true) 
      { 
       popu++; 
      } 
    } 
    return popu; 
} 

Так заменить ее:

int population_left(int x, int y, matrix& grid) 
{ 
    int popu; 
    for(int yi = y-1; yi <= y+1; y++) 
    { 
     for(int xi = x; xi<= x+1; x++) 
     { 
      if(xi == x && yi == y) 
      { 
       continue; 
      } 
      if (grid[yi][xi] == true) 
      { 
       popu++; 
      } 
     } 
    } 
    return popu; 
} 

Вы можете найти некоторые редактор или IDE, которые могут выделить этот вид опечатки для вы;) (например, emacs)

Смежные вопросы