簡體   English   中英

將數組傳遞給函數,但是如果不返回true,我想傳遞一個額外的數字嗎?

[英]Passing an array to a function, but if it doesn't return true I want to pass an extra digit?

因此,對於我的代碼,我想將參數傳遞給函數,如果它沒有返回true,我希望它傳遞int數組中的下一個索引位。

因此,如果areaIntA [0] = 0; 不返回true,我希望它傳遞areaIntA [0] [1] = 01; 如果返回的結果不是true,則areaIntA [0] [1] [2] = 012; 等等...

我更新的代碼:

areaInt = areaIntA[0];

do {
    areaCheck = isRegistered(file, areaInt);
    if (areaCheck != 1)
    {
    areaInt = areaIntA[i] * 10 + areaIntA[i+1];
    i++;
    }
} while (areaCheck != 1);

cout << areaCheck << endl;

這樣可以編譯,但是顯示出分段錯誤,有人知道為什么嗎?

讓函數接受一個列表(向量)。 對於每個調用,請在末尾添加一個新元素。

例如。

List< int?> areaIntList;

do {
    areaIntList.Add(areaInt[i]);
    areaCheck = isRegistered(file, areaInt[i]);
    if (areaCheck != 1)
    {
        i++;
    }
} while (areaCheck != 1);

isRegistered包含您使用的類型的列表。

您在某種字符串上下文中奇怪地將數組整數值等同。 這通常意味着以10為底的數學運算。

嘗試:

int val = 0;
do {
    val = 10 * val + areaInt[i];
    areaCheck = isRegistered(file, val);
    if (areaCheck != 1)
        i++;
} while (areaCheck != 1);

在第一遍中, val將是areaInt[0]的值; 在第二遍,它將是areaInt[0]然后是areaInt[1] (例如0和1變為1,1和2變為12)。 等等。

我對您的問題的理解是:

  1. isRegistered是一個函數,它接收文件和可變長度的數字字符串,如果該字符串已注冊,則返回1 ,否則返回0
  2. areaInt是C樣式的字符串,例如"31526"
  3. 您要查看的是是否注冊了"3" 如果沒有,則查看是否注冊了"31" 如果不是,請嘗試"315"等,直到用完areaInt所有數字。
  4. 最終結果應該是areaInt的子字符串,這是最短的注冊字符串,如果找不到注冊字符串,則返回錯誤。

這就是我要做的。

  1. 如果輸入字符串areaInt為空,則返回錯誤。
  2. 將計數器i從1循環到字符串的長度:
    1. areaInt的前i字符構造一個測試字符串s
    2. 測試s是否已注冊。 如果是,請跳出循環並返回s 如果不是,請繼續循環。
  3. 如果循環在areaInt的末尾完成,並且找不到注冊的字符串,則返回錯誤。

注意。 確保您停在areaInt 否則,如果到達areaInt的末尾但仍未找到已注冊的字符串,則將溢出緩沖區並嘗試讀取字符串中未包含的元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM