小编Fri*_*ike的帖子

如何在prolog中创建全局变量

我有一个列表,我创建如下:

tab([(top,left),(top,middle),(top,right),(center,left),(center,middle),
     (center,right),(bottom,left),(bottom,middle),(bottom,right)]).
Run Code Online (Sandbox Code Playgroud)

我希望创建一个全局变量AllPosition,它是一个选项卡.所以我做了以下事情:

tab(AllPos).
Run Code Online (Sandbox Code Playgroud)

这是正确的吗?

然后我必须遵循问题:我有一个函数,在选项卡中接收其中一个.我希望删除.所以我这样做了:

place(Line, Column, Tab) :-
AllPos \== [_,_] /*while AllPos isn't empty - not sur if this is done this way*/ -> (member((Line,Column), AllPos) -> (erase(AllPos, (Line,Column), AllPos)).
Run Code Online (Sandbox Code Playgroud)

erase(List, Element, NewList)从List 中删除元素Element并创建一个新列表NewList等于List但没有Element.这两个函数membererase正在工作.

事情是......你可能已经注意到我AllPos到处都用.这是因为我想,我想修改它,以便我可以在以后使用它(在从中移除一些元素之后),在另一个函数中.我的逻辑是对的吗?我能在另一个函数中使用修改过的AllPos吗?谢谢

variables global list prolog reusability

5
推荐指数
2
解决办法
1万
查看次数

如何在LISP函数中创建一个大小作为参数接收的数组?

我正在尝试创建一个接收大量行和列的函数,并从中生成一个数组.这就是我做的

(defun create-table (lines columns)
     (make-array '(lines columns)))
Run Code Online (Sandbox Code Playgroud)

我认为这就是你制作多维数组的方法.但是当我调用函数时create-table,例如(create-table 2 2)给出了这个错误

MAKE-ARRAY:维度LINES不是`(INTEGER 0(,ARRAY-DIMENSION-LIMIT))

我不明白,怎么可能不是整数?我应该演员吗?

lisp arrays

2
推荐指数
1
解决办法
1270
查看次数

通过map c ++

所以,我有一个std::map<int, my_vector>,我想通过每个int并分析向量.我还没有完成分析矢量的部分,我还在试图弄清楚如何浏览地图上的每个元素.我知道有可能有一个迭代器,但我不太明白它是如何工作的,而且,我不知道是否有更好的方法来做我打算做的事情

c++ element map

0
推荐指数
1
解决办法
6936
查看次数

scanf c ++中的分段错误

在我的程序中,在某些时候,我制作了一个scanf(" %d %d", &num1, &num2);并且我不断获得SegmentationFault.我不明白为什么......我的意思是,他们是int.我不确定我是否应该为他们分配内存.这是完整的代码.

typedef struct my_type{
   int attr1;
   bool attr2;
} my_type;

int main (int argc, char * const argv[]) {

    int testCase, result, totalDom, numLines, num1, num2; 
    int aux_map_int = 0, linesScanned = 0;
    bool firstTime;
    scanf("%d\n %d %d", &testCase, &totalDom, &numLines);
    printf("totalDom: %d; numLines: %d\n", totalDom, numLines);

    std::map<int, std::vector<my_type> > my_map;

    while(aux_map_int < testCase+1){
        std::vector<my_type> my_vector;
        firstTime=true;

        while (linesScanned < numLines) {

            std::cin>>num_dom>>num_next_dom; /** SEGFAULT **/


            if(firstTime){
                my_vector[0].attr1 = num1;
                my_vector[0].attr2 = …
Run Code Online (Sandbox Code Playgroud)

c++ scanf segmentation-fault

0
推荐指数
1
解决办法
795
查看次数

标签 统计

c++ ×2

arrays ×1

element ×1

global ×1

lisp ×1

list ×1

map ×1

prolog ×1

reusability ×1

scanf ×1

segmentation-fault ×1

variables ×1