2014-11-17 2 views
-5

예 사용자가 lilian을 입력하면 ... 첫 단어의 (L) 숫자를 ascii로 취하여이 번호에 숫자를 더합니다 이름 예 H = 104 입력 헬로 출력 104 + 5 .... (E 수) +5 모든 단어 등이름을 입력하고 단어 입력을 사용하여 다른 단어를 종료하는 방법

목표에 등등 이름 및 단어 입력 단어에서 새로운 이름 또는 단어를 출력하는 것입니다.

#include <iostream> 
using namespace std; 

int main() 
{ 
char word[20] ; 
int x=0; 
cin>>word; 
while(word[x] != 0) 
{ 
    cout << int(word[x]) ; 
    x++; 

} 

cout << "\n"; 
return 0; 
} 
+0

첫 번째 문장은 세금 신고보다 혼란스럽고 대규모 해외 사업을 운영합니다. –

+0

더 자세한 정보 또는 더 많은 정리 설명이나 원하는 정보가 필요하십니까? –

+2

함께 번역 해주세요. "릴란"은 한 마디입니다. 'L'은 편지입니다. –

답변

0

나는 당신의 질문을 해독했다고 생각합니다. 이 (아래 설명) 도움이되는지 알려주세요 :

#include <iostream> 
#include <cstring> 

using namespace std; 

int main() 
{ 
char word[20] ; 
int x=0; 

cin>>word; 

size_t shift=strlen(word); ////// 

while(word[x] != 0) 
{ 
    cout << char(word[x]+shift) ; ////// 
    x++; 

} 

cout << "\n"; 
return 0; 
} 

입력 :

hello 

출력 :

설명
mjqqt 

: 나는 변경 유일한 선은 사람이 //////으로 표시됩니다 . 첫 번째 문자는 cstring (포함 된 헤더 참조)의 strlen 함수를 사용하여 문자열의 길이를 가져옵니다. 자, 두 번째 : 원래 코드에서 실제로는 word[x]에 아무 것도 추가하지 않았으며 cout 문에 int에 쓸데없는 캐스트가 있습니다. 당신이 얻을 수있는 것은 문자의 ASCII 코드에 해당하는 숫자뿐입니다. 위의 코드에서 word[x]+shift의 결과는 char으로 다시 캐스트되므로 실제 문자가 인쇄됩니다.

경고 : 프로그램을 작동시키는 데 필요한 최소한의 변경 만 수행했음을 유의하십시오. 코드에서 경계/오버플로 검사가 없습니다. char이 오버플로되면 예상치 못한 일이 발생하며 입력 문자가 알파벳 끝에 가까워 지거나 (단어가 길면 근처가 아닐지라도) 영숫자 출력을받지 못합니다. 이런 경우 코드가 원하는 것을 생각해야합니다. 또한 char[] 대신 std::string을 사용하십시오 (strlen 대신 length() 멤버 함수 사용). 그리고 어쩌면 전환을 수행하고 특별한 경우 (줄 바꿈 등)를 처리하기 위해 별도의 함수를 작성하는 것이 좋습니다.

+0

그게 전부지만 그 수를 세어보고 싶습니다. char word [20]; 반복하면서 번호 5로 바꿉니다. –

+0

@AhmedMohamed 위의 편집을 참조하십시오. – Oguk

0

이 사용자의 요구 사항과 일치하는 경우 보자 :

#include <string> 
#include <iostream> 

int main(void) 
{ 
    static const char letters[] = 
    "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 
    "abcdefghijklmnopqrstuvwxyz"; 
    std::string name; 
    std::cout << "Enter name: "; 
    std::cin >> name; 
    std::string::size_type posn = 0; 
    for (posn = 0; posn < name.length(); ++posn) 
    { 
    char c = name[posn]; 
    char offset_letter; 
    if (c == std::toupper(c)) 
    { 
     offset_letter = 'A'; 
    } 
    else 
    { 
     offset_letter = 'a'; 
    } 
    if (std::isalpha(c)) 
    { 
     c = ((c - offset_letter) + 5) % 26; // 26 letters in alphabet. 
     c += offset_letter;   
    } 
    std::cout << c; 
    } 
    std::cout << "\n"; 
    return 0; 
} 

위의 프로그램은, 이름을 입력 5 각 문자를 회전하고 알파벳의 값을 과거의 끝 주위에 래핑합니다.

관련 문제