2011-10-24 2 views
0

팀에 따라 축구 경기를 생성 할 수있는 프로그램을 만들고 싶습니다. 조건 :"Dynamic"if 문 C++

  • 모든 사람이 모든 사람
  • 함께 플레이 할 필요는 라운드에서 수 있어야합니다.

예 : 팀 : a, b, c 및 d가 있습니다.

그래서 예를 들어 솔루션 : 나는 모든 사람이 모든 사람과 함께 연주 할 때 배열을 생성 할 수있는 기능이

Round 1: 
a-b 
c-d 

Round 2: 
a-c 
b-d 

Round 3: 
a-d 
c-b 

.

예를 들어

:

a-b 
a-c 
a-d 
b-c 
b-d 
c-d 

하지만 원이를 정렬 할 수 있습니다. 그 방법으로 함수를 정렬하여 각 라운드에 처음으로 넣습니다.

간단한 if 문으로 누락 된 것들을 정렬 할 수 있습니다. 각 라운드에서 두 x가 a와 b가 될 수 없다고 확인합니다. 그리고 이런 방식으로 분류 될 수 있습니다. 그러나 문제는 라운드에서 최소 3 명의 팀을 확보했을 때입니다.

Round 1: 
a-b 
x-x 
y-y 

나는 "동적"if 문을 가지고 있으면 어떤 팀과도 정렬 될 수 있도록 서로 3 루프가 있습니다.

나는 a, b, c 및 d가 될 수없는 두 개의 y-y가 있기 때문에 이런 식으로 두 개의 x를 확인할 필요가 없습니다.

성명이 역동적이라면 이렇게 할 방법이 있습니까?

이 때문에 :

if (iTR[x][0] != iT[i][0] && iTR[x][0] != iT[i][1]) 

만 한 장소를 확인할 수 없습니다하지만 난 항상 더 많은 장소를 확인해야합니다.

죄송합니다.이 내용을 작성하는 데는 너무 복잡하지만 쉽게 작성할 수 없습니다. 그리고 미리 감사드립니다!

for(int ww =0; ww < numRounds; ww++) 
    for(int zz =0; zz < numRounds; zz++) 
    if(iTR[x][zz] != iT[i][ww]) 
+2

방금 ​​대신 코드를 보여 주면 혼란이 줄어들 것입니다. – AJG85

답변

0

왜 그런 짓을 할 수 없다. 사소한 의미에서 거의 모든 if는 동적입니다. 완전히 정적 인 경우 컴파일러는이를 최적화합니다.

나는 숙제가 무엇인지 이해하지 못했다고 생각합니다. C++과 같은 특정 언어로 코딩하는 것보다 알고리즘을 이해하는 것이 더 문제입니다.

그러나 힌트로 사용자는 복잡한 (또는 동적) 조건을 계산하는 유틸리티 함수를 코딩하는 것을 고려할 수 있습니다.

희망이 도움이 될 것입니다.

0

나는 당신의 질문을 이해하는 것이 확실하지 않다 :

2

귀하의 구두에서 완전히 명확하지 않습니다. 그러나 그것은 들린다 (아마 ...?) if의 "보다 강력한"변형을 사용하는 대신 루프 내부에 if 문을 실행 중이므로 작업 코드가 만족스럽지 않은 것처럼 작동합니다. 이 "동적 인 if"는 한 번에 임의의 수의 비교를 실행하여 루프를 불필요하게 만듭니다.

그래서 아마 당신이 상관 없어 물건의 종류는 :

vector<int> v; 
... 
bool noOnes = true; 
for (vector<int>::iterator i = v.begin(); i != v.end(); i++) { 
    if (*i == 1) { 
     noOnes = false; 
     break; 
    } 
} 
if (noOnes) { 
    cout << "No values in the vector were 1"; 
} 

그리고 같은 방식으로 작동하지만 것이다 무언가를 상상하는 이상과 같은 :

vector<int> v; 
... 
// pseudocode, I'm making this "ifall" syntax up 
ifall(v, != 1) { 
    cout << "No values in the vector were 1"; 
} 

나는 경우, 귀하의 질문에 대한 정신을 정확히 짐작 했으니까요. 그러나 C++ (및 기타 소프트웨어 컨텍스트)의 "동적"이라는 단어에는 실제로는 아무런 관련이없는 특별한 의미가 있다는 점을 지적해야합니다. 그것은 일반적으로 "고정"의 반대, 그리고 당신은 몇 가지 검색과 용어에 읽을 수 있습니다 : 당신이없이 같은 것을 표현할 수 있습니다 C에 "내장"++있는 기술에 관해서는

https://stackoverflow.com/search?q=difference+between+static+and+dynamic+%5Bc%2B%2B%5D

루프를 포함하는 코드가 존재합니다. 표준 라이브러리에는 <algorithm>이라는 헤더가 있는데, 은 "요소 범위에서 특히 사용하도록 설계된 함수 모음을 정의합니다"입니다. 벡터의 모든 요소가 뭔가하지 1 인 경우에이 사용

http://www.cplusplus.com/reference/algorithm/

, 당신은보고 테스트 할 수 find_if ... 말 ... 추천하고 그것을 특정 있는지 확인하기 위해 테스트하는 기능을 전달 요소는 아니다 :

bool IsOne(int i) { 
    return (i == 1); 
} 
... 
vector<int> v; 
... 
if (find_if(v.begin(), v.end(), IsOne) == v.end())) { 
    cout << "No values in the vector were 1"; 
} 

루핑은 find_if 알고리즘의 내부의 모든 알아서입니다. 좋든 나쁘 든간에, "현실 세계"코드베이스에 <algorithm>을 사용하는 사람들을 볼 수 있습니다. 나는 초기 C++ 과정이 걱정하지 말라고 권하고, 답을 올바르게 얻고 루프를 사용하여 올바른 것이라고 생각합니다. 이 특정한 토끼 구멍을 내려갈 지 여부는 당신에게 달린 것입니다.