這個程序哪裡錯了,還是G++出了問題?
RT。。不太懂啊。。。。
第九行字元串數組初始化時的基本語法問題。
Hard coded是很壞的習慣。如果非要這樣不妨用循環以及make sense的變數來生成。二維字元串初始化的時候,每個單詞一對雙引號就成,不需要額外的引號。我看你是想每一行再加一對,這樣不對。
string scales[3][12] = {"" xxx ""};多了一對雙引號?都說不要用那些亂七八糟的編輯器了,老老實實裝Windows開Visual Studio,把代碼貼進去瞬間就明白了。
別換編輯器。等你技術純熟了,會喜歡上vim ,g++,gdb的。簡潔,優雅,高效。現在要做的就是打牢基礎。
連IDE和EDITOR都區分不清你噴什麼噴?人家輪子噴但是他懂行,不懂就不要噴好么?
vim不提供語法檢查,想在vim里用語法檢查你需要配置clang-check, clang-tidy, flycheck, syntastic這些東西。配置好了是這樣:自動跳到錯誤位置。(我只用syntastic和clang-check)我看到樓主在root許可權下用g++編譯vim編輯的c++文件,這樣的配置逼格倒是夠了。不過樓主倒是至少把c語言的數組搞清楚再來啊。
知乎都帶做作業了
用Kali 6666
以後遇到作業不知道該怎麼debug,截個圖上傳知乎,然後再邀請幾個大V來解決。現在的同學們太聰明了~
這個程序問題多多啊。
第一點,numeric constant,明顯意思是出現了數值常量。於是你應該知道你的引號有問題。
第二點,string引用,#include &題主,給你幾個網站,以後可以用來貼代碼,便於交流(短時間內)。
http://codepad.org/
http://paste.ubuntu.com吐槽一下,讓大家看著圖片找bug,實在很狗血啊!當程序編譯不通過的時候能不能懷疑編譯器有問題? 當然可以,然而,It should be your last option! 你的第一選擇應該是懷疑自己代碼有問題,特別是代碼僅僅完成一些簡單邏輯和功能的時候。
題主想初始化一個3行12列的二維string數組,然後使用了重複的雙引號{""x",... ... "y"" ......}來區分行列,很遺憾編譯器不認為這是正確的初始化語法。所以,既然編譯器不認可那麼不如使用認可的語法,比如以下2行3列的數組。
String [2][3]a={{"1","2","3"},{"4","5","6"}};牽扯到大量數據的操作,hardcode不是一個好習慣,題主需要一個簡單易用的資料庫來儲存數據,比如hsqldb或者mysql之類的。
不過,既然題主提到了C++,一般我們在C++中並不直接聲明數組,而是使用更安全和方便的STL庫。比如你可以用一下方法定義一個二維數組然後使用,好處是不用硬編碼數組大小,方便擴展,不用擔心越界等。include &
typedef vector&
... ...
xlists[][];}Linux下還是用clang吧,gcc報錯有時候看不懂,不太友好。
#include &
#include&
#include&
#include&
#include&
using namespace std;
struct Node
{
int vlaue;
Node *next;
};
Node *head;
Node*CreatList(int n)
{
Node *first=NULL;
Node *tmp=NULL;
Node *one=NULL;
while(n--)
{
tmp=new Node ;
cin&>&>tmp-&>vlaue;
tmp-&>next=NULL;
if(first==NULL)
first=tmp;
else
{
one-&>next=tmp;}
one=tmp;}
return first;
}
/*this code intended to delete a number from a single list
* but the second number can"t be removed because unknown reasons
* */
void DeleteElement(Node **first,int value)
{
Node *current=NULL;
while((current=*first)!=NULL)
{
if(current-&>vlaue==value)
{
*first=current-&>next;
first=current-&>next;
delete current;
}
first=current-&>next;
}}
/*this code do the samething with the upper code
* but this code I think has some drawbacks but it work
* how to improve this code or something to rewrite the code for the same funtion*/Node *Delete(Node *first,int value)
{
Node *current=first;
Node *one=NULL;
Node *previous=NULL;
for(current=first;current!=NULL;previous=current,current=current-&>next)
{
if(current-&>vlaue==valuecurrent==first)
{
first=current-&>next;
delete current;
continue;
}
if(current-&>vlaue==value)
{
previous-&>next=current-&>next;
one=current;
current=previous;
delete one;}
}
return first;
}void ShowList(Node *first)
{
int label=0;
while(first!=NULL)
{
if(!label)
{
cout&<&vlaue;
label=1;
}
else
cout&<&<" "&<&vlaue;
first=first-&>next;
}
}int main(void)
{
/*the test data is
*20
1 3 3 0 -3 5 6 8 3 10 22 -1 3 5 11 20 100 3 9 3
3*/
freopen("/home/ldy/data","r",stdin);
int n;
cin&>&>n;
Node *first=CreatList(n);
int m;
cin&>&>m;
// first=Delete(first,m);//this funtion work but not good
DeleteElement(first,m);//this funtion doesn"t workShowList(first);
}
有人幫我看看這個鏈表指針哪裡出錯了嗎。。感激不盡。出錯的地方是那個函數。有兩個函數
- 一個可以得到正確結果,不過代碼還是覺得不好,希望知道如何寫,另一個出錯的真的不知道哪裡錯了。代碼是刪除鏈表裡面的特定元素。
- 測試用例是
20
1 3 3 0 -3 5 6 8 3 10 22 -1 3 5 11 20 100 3 9 3
3
- 這是出錯那個函數輸出的結果。 這是輸出正確那個函數的輸出結果。
用的VIM?哎,好好的IDE不用,何苦呢。。。
編譯提示很明顯了,line9 數字常量前缺少},數字常量1.1前面是空字元串,估計你本意是想轉義
另外,你好像沒明白數組的含義推薦閱讀:
※為什麼儘管 C++ 早就有了很多現代功能,但是卻長期給人原始的印象呢?
※GCC 下 C++ 中 new int[] 內存的額外信息在哪裡?
※如何利用C++的特性,去實現C中的可變參?
※一個關於visual studio的問題?