2017-02-14 12 views
-2
#include<iostream> 
#include<set> 

using namespace std; 

main(){ 
    int n,m; 
    set<int> number; 
    int num; 
    int query[m]; 
    for(size_t i=0;i<n;i++){ 
     cin >> num; 
     number.insert(num); 
    } 
    for(size_t j=0;j<m;j++){ 
     cin >> query[j]; 
    } 
    for(int l=0;l<m;l++){ 
     for(auto k:number){ 
      if(number.find(query[l]-k)!=number.end()){ 
       cout << "YES" << endl; 
       break; 
      }else{ 
       cout << "NO" << endl; 
       break; 
      } 
     } 
    } } 

Почему мой код не может работать? когда я скомпилирую и запускаю его. Exe говорит, что how it saysПочему мой код не может работать?

Как я могу запустить этот код. извините. Я не очень хорошо владею английским языком. Я использовал перевод Google для перевода моего языка на английский язык.

+1

Хммм, кто-то может хочу сообщить об этом в Google, они не делают очень хорошую работу там ... –

+1

м не инициализирован. query [m] - неопределенное поведение. n не инициализирован, поскольку цикл снова не определен. –

+1

И стандарт языка C++ не поддерживает VLA (массивы переменной длины) в любом случае. –

ответ

-3
#include <iostream> 
#include <set> 

using namespace std; 

int main(){ 
    int n,m; 
    set<int> number; 
    int num; 
    cin >> m >> n; 
    int query[m]; 
    for(size_t i=0;i<n;i++){ 
     cin >> num; 
     number.insert(num); 
    } 
    for(size_t j=0;j<m;j++){ 
     cin >> query[j]; 
    } 
    for(int l=0;l<m;l++){ 
     for(auto k:number){ 
      if(number.find(query[l]-k)!=number.end()){ 
       cout << "YES" << endl; 
       break; 
      } else { 
       cout << "NO" << endl; 
       break; 
      } 
     } 
    } 
} 

Этот код выделяет массив «запрос» с элементами m (вставленными пользователем) в стек во время выполнения. Новые компиляторы C++ предоставляют эту возможность выделять память в стеке во время выполнения для локальных переменных.

+0

В коде нуждается намного больше проблем. –

+1

'int query [m];' will * not * компилируется с правильно работающим компилятором C++ (если 'm' не определено как' const', что в этом случае не так). –

-3

Вам необходимо инициализировать переменные n и m. Первые два цикла будут выполняться.

int main() 
    { 
     int n = 3; 
     int m = 3; 
     std::set<int> number; 
     int num; 
     int query[m]; 

     for(size_t i = 0; i < n; i++) 
     { 
      std::cin >> num; 
      number.insert(num); 
     } 

     for(size_t j = 0;j < m; j++) 
     { 
      std::cin >> query[j]; 
     } 

     for(int l=0;l<m;l++) 
     { 
      for(auto k : number) 
      { 
       if(number.find(query[l]-k)!=number.end()) 
       { 
        std::cout << "YES" << std::endl; 
        break; 
       } else 
       { 
        std::cout << "NO" << std::endl; 
        break; 
       } 
      } 
     } 
    } 

cpp.sh/8rwk

 Смежные вопросы

  • Нет связанных вопросов^_^