2017-05-07 120 views
-2

我無法弄清楚的家庭作業問題。甚至不會說謊。假設我的函數找到正在搜索的字符時返回數組索引,如果沒有找到字符,則返回-1。相反,它返回存儲在數組元素中的值。即我輸入「這是我的字符串」,它應該返回8,但是它返回109(ASCII碼爲M)。我想返回數組索引,而不是數組值

int search(const std::string &array, char character) { 
    for (int i = 0; i < array.length(); i++) { 
     if (i = character) { 
      return i; 
     } 
     return -1; 
    } 
} 

我正在休息一天的作業,但任何意見將不勝感激。也許我會以清新的眼光明天看到問題。

+4

'(I =字符)' - >'(I ==字符)' - >'(陣列[I] ==字符)' – DeiDei

+0

擾流:還有另一個問題。繼續尋找;) – Quentin

回答

1
int search(const std::string &array, char character) { 
    for (int i = 0; i < array.length(); i++) { 
     if (i **==**character) { 
      return i; 
     } 
     return -1; 
    } 
} 

在你的循環中,我=字符不是比較,它是一個assignement。在C++中,比較運算符是==。

在一個側面說明,你可以通過功能find()

編輯

我沒有看到你更換整個功能是,你如果是錯的,你太。

這裏是一個代碼的工作片:

#include<string> 
#include<iostream> 
int search(const std::string &array, char character) { 
    for (int i = 0; i < array.length(); i++) { 
     if (array[i] == character) { 
      return i; 
     } 

    } 
    return -1; 
} 

int main(){ 
std::string meh = "meh"; 
std::cout << search(meh,'e') << std::endl; 

} 

首先錯誤,則必須與字符陣列,而不是計數器(i)的元素進行比較。 第二個錯誤,如果您的工作失敗,則返回-1。但是如果字符不是字符串中的第一個字符,它將會失敗。

感謝@常常讓我再看看。

+0

關聯分配。但這只是這個代碼的一個問題。 – Quentin

+0

非常感謝......我最初有兩個相同的東西,但是在我嘗試其他任何東西的時候都必須改變它。陣列[我]是一件大事,搞砸了我,所以謝謝你的提示。這是我無法弄清的作業中唯一的問題。再次感謝。附:我無法贊成你的迴應,因爲人們低估了我的清晰不討好的問題,否則我會。 – Sean

0
#include <iostream> 
int search(const std::string &array, char character); 
int main() { 
const std::string string1 = "daidalos"; 
std::cout << search(string1, 'i'); 
return 0; 
} 
int search(const std::string &array, char character) { 
for (int i = 0; i < array.length(); i++) { 
    if (array[i] == character) { 
     return i+1; 
    } 
} 
return -1; 
} 

輸出: 3意味着第三位(真)。但是,如果你想返回字符串的多個索引,您可以使用std::pairstd::tupple

1

的std :: string :: find()方法返回正是你想要的:

std::size_t search(const std::string& array, char character) 
{ 
    return array.find(character); // if 'character' is not found returns std::string::npos 
} 

如果你不想使用它:

std::size_t search(const std::string& array, char character) 
{ 
    for(std::size_t i=0; i<array.size(); ++i) 
     if(array[i]==character) return i; 
    return -1; 
} 
+0

我想使用它,但我的老師不想讓我。我猜,因爲我顯然需要更多的數組/循環練習。 – Sean

0

Excatly什麼,我一直在尋找。

#include<string> 
#include<iostream> 
int search(const std::string &array, char character) { 
    for (int i = 0; i < array.length(); i++) { 
     if (array[i] == character) { 
      return i; 
     } 

    } 
    return -1; 
} 
相關問題