2016-07-11 2 views
-2
나는지도 또는 인쇄에 다음이 코드에서 한 쌍의 형식으로 목록을 ou는 포함하는 방법을 잘 모릅니다

A:1 B:2 C:3쌍 CPP 또는지도를 사용하는이 작성하고 인쇄 할

#include <iostream> 
using namespace std; 
#include <map> 
#include <string> 

int main() { 
    // your code goes here 
    char letter = 'A'; 
    typedef pair<char, int> LettreValues; 
    for (int i = 1; i < 27; ++i) 
    {  
     LettreValues[letter]=i; 
     static_cast<char>(letter + 1); 
    } 
    for(auto elem : LettreValues) 
    { 
     std::cout << elem.first << " " << elem.second.first << " " << elem.second.second << "\n"; 
    } 

    return 0; 
} 
+0

더 유용한 답변을 유치 할 특정에 내려주십시오

는이 같은 아마 당신이 의도 된 뭔가 생각합니다. – Jeet

+0

나는 이것이 내가 나의 첫 번째 게시물임을 더 잘 알 수있는 방법을 알지 못한다. – Tahtoh

+1

지도를 사용하고 있지 않습니다. 쌍을 사용 중입니다. – ChrisD

답변

0

당신은 여러 가지 일을 잘못하고 있습니다.

char letter = 'A'; 

지금까지는 그렇게 좋았습니다.

typedef pair<char, int> LettreValues; 

이제 남쪽으로갔습니다. "LettreValues"라고하는 std :: pair에 대한 유형 별명 ('typedef')을 정의했습니다.

하지만 LettreValues는 유형이므로 해당 유형의 인스턴스가 아닙니다.

for (int i = 1; i < 27; ++i) 

1에서 i 시작, 당신은지도에 삽입 첫 번째 값이되기 때문에 'A'+ 1이 그렇지 않은 변수로 LettreValues를 사용하려고 시도

; 맵으로 사용하려고 시도합니다. 그렇지 않은 경우 - 쌍입니다.

문자에 1을 더하고 문자로 변환하여 버립니다.

// Declare an alias for std::map<char, int>. 
using LettreValues = std::map<char, int>; 
// Now declare a variable of this type 
LettreValues letterValues; 

// the type alias step is completely optional, we 
// could have just written 
// std::map<char, int> letterValues; 

for (int i = 0; i < 26; ++i) { 
    letterValues[letter] = i; 
    letter++; 
} 

for (auto& el : letterValues) { 
    std::cout << el.first << " " << el.second << "\n"; 
} 

라이브 데모 : http://ideone.com/7ZA5Bk

+0

정확하게 감사합니다. – Tahtoh

+0

바로 여기에서 내 코드를 확인해 볼 수 있습니까? 작업을 단순화하기 위해 여러 가지 기능을 만드는 중입니다.하지만 항상 잘못된 결과를 반환합니다. 다음은 http://train.usaco.org/usacoprob2?a=zeWky61KJoG&S=ride에 대한 링크입니다. 내 솔루션은 http://ideone.com/a9YHl6입니다. – Tahtoh

+0

지도를 사용하면 엔지니어링이 지나치게 빠릅니다. 'input [i] - 'A'+ 1'을 사용할 수 있으며, 루프 내에서 returnMap()을 호출하면 각각의 모든 문자에 대한 맵을 재생성한다는 의미입니다. 'sizeof (문자열)'은 문자열 객체의 크기가 아닌 문자열 객체의 크기를 반환합니다 (매우 pythoneseque입니다). 문자열의 길이를 얻으려면'input.length()'를 사용하십시오. 마지막으로, 계산하는 값은 10의 배수입니다. 10을 모듈로 10의 배수로 0입니다. 코드의 주석은 'mod 47'이 아니라 'mod 10'이어야한다는 것을 나타냅니다. http://ideone.com/yBWr8l – kfsone

-1

표준을 사용하여 쌍에 삽입하십시오 : : 아래와 같이 make_pair.

char letter = 'A'; 
    typedef pair<char, int> lettervalues; 
    for(int i = 1;i<27;i++) 
    { 
     lettervalues l = std::make_pair<char, int>(letter,i); 
     letter = static_cast<char>(letter + i); 
    } 
+0

게시 한 코드를 읽었을 수 있습니다. – kfsone