2016-03-29 9 views
-2

Bu program yazdırma dizesi kombinasyonları sonuçsuz, herkes bana yardımcı olabilir mi?Kombinasyon programını C++ 'da yazdım ama çıktı yok, kimse neden olduğunu söyleyebilir mi?

#include <iostream> 
#include <string> 

using namespace std; 

void comb(char *inp) 
{ 
    int i, j, k; 
    int len = strlen(inp); 

    for (i = 0; i < len - 2; i++) 
    { 
     for (j = i + 1; j < len - 1; j++) 
     { 
      for (k = j + 1; k < len; k++) 
      { 
        printf("%c%c%c\n", inp[i], inp[j], inp[k]); 
      } 
     } 
    } 
} 

//====================================================================== 
int main() 
{ 
    char *str; 
    cout <<"enter your string\n"; 
    cin >> str; 

    comb(str); 
    return 0; 
} 
+1

Bu alışkanlık bile derlemek: http://coliru.stacked-crooked.com/a/0b18ab1032fd0489 – NathanOliver

+0

üzgünüm, ben kod Char * str güncellemek; \t std :: cout << "dizginizi girin \ n"; \t cin >> str; \t tarak (str); \t 0; – mostafa

+0

Sorunuza bu kodu [değiştirmelisiniz]. – NathanOliver

cevap

1

Ben bu durumda std::string yerine char[] kullanmayı öneriyoruz. Aksi halde, belleğinizi dinamik olarak ayırmanız gerekir.

#include <iostream> 
#include <string> 

void comb(std::string inp) 
{ 
    int len = inp.size(); 
    for (int i = 0; i < len - 2; i++) 
    { 
     for (int j = i + 1; j < len - 1; j++) 
     { 
      for (int k = j + 1; k < len; k++) 
       std::cout << inp[i] << inp[j] << inp[k] << std::endl; 
     } 
    } 
} 

int main() 
{ 
    std::string str; 
    std::cout << "enter your string\n"; 
    std::cin >> str; 
    comb(str);; 
    return 0; 
} 
+0

'std :: string' işlevini kullanırsanız,' ' – Slava

+0

' taramayı (std :: string inp) '' tarak (const std :: string & inp) 'olarak eklemelisiniz. – ZDF

+1

Ayrıca bu ev ödevi gibi görünüyor. OP'ye tam bir çözüm sunmamalısınız. Yazım hatası "tarak (str);" – NathanOliver

İlgili konular