2016-08-23 6 views
-1

오늘 제가 프로그램을 만들었습니다. 마침내 그것을 완료하고 그것을 debbuging하는 것을 마쳤을 때, 그것은 결국 컴파일됩니다! 내가 아는 사람들의 이름이 나타납니다. 그런 다음 번호를 갖고 싶은 사람의 이름을 입력해야합니다. 문제는, 내가 입력 한 이름이 무엇이든간에, 프로그램은 단순히 "15"를 출력합니다. 그리고 나는 정말로 돈을 내지 않습니다!아무 이유없이 프로그램 출력 "15"?

#include "stdafx.h" 
#include <iostream> 
#include <string> 
int number; 
std::string name1; 

//int nameAppears() 
//{ 
    //std::cout << "Alex" << std::endl; 
    //std::cout << "Andre" << std::endl; 
    //std::cout << "Guy" << std::endl; 
    //std::cout << "Grand-ma" <<  std::endl; 
    //std::cout << "Grand-pa" <<  std::endl; 
    //std::cout << "Jérémy" << std::endl; 
    //std::cout << "Manon" << std::endl; commented this out because it   
    //never worked, I simply put it in main()    
    //std::cout << "Nathalie" << std::endl; 
    //std::cout << "Stéphanie" << std::endl; 
    //std::cout << "Oliver" << std::endl; 
//} 


std::string enterName() 
{ 
    std::cout << "Enter the name you wish to obtain the number:"; 
    std::cin >> name1; 
    return name1; 
} 


int link(std::string name1) 
{ 
    if (name1 == "Alex") 
     return 9856452535; 
    if (name1 == "Andre") 
     return 5641598453; 
    if (name1 == "Guy") 
     return 8459563258; 
    if (name1 == "Grand-ma") 
     return 8457892653; 
    if (name1 == "Grand-pa") 
     return 5689852565; 
    if (name1 == "Jérémy") 
     return 7894521564; 
    if (name1 == "Manon") 
     return 8453262145; 
    if (name1 == "Nathalie") 
     return 6589253678; 
    if (name1 == "Stéphanie") 
     return 5689433645; 
    if (name1 == "Olivier") 
     return 5695658321; 
} 


void printNumber (int number) 
{ 
    std::cout << "The number is: " << number << std::endl; 
} 


int main() 
{ 

    //Make all the names appear 
    //nameAppears(); 
    std::cout << "Alex" << std::endl; 
    std::cout << "Andre" << std::endl; 
    std::cout << "Guy" << std::endl; 
    std::cout << "Grand-ma" << std::endl; 
    std::cout << "Grand-pa" << std::endl; 
    std::cout << "Jérémy" << std::endl; 
    std::cout << "Manon" << std::endl; 
    std::cout << "Nathalie" << std::endl; 
    std::cout << "Stéphanie" << std::endl; 
    std::cout << "Olivier" << std::endl; 

    //Get User's input 
    std::string name1 = enterName(); 

    //Link Name to number 
    int number = link(name1); 

    //Print the desired number 
    printNumber(number); 
    std::cin.clear(); // reset any error flags 
    std::cin.ignore(32767, '\n'); 
    std::cin.get(); // get one more char from the user 

} 
+1

'INT 링크 (표준 : : 문자열 이름 1)를'<- 조건 중 어느 것도 성공하지 않는 경우이 메소드는 아무 것도 반환하지 않습니다. 항상 뭔가를 반환해야합니다. – SurvivalMachine

+0

대신 무엇을 써야합니까? 죄송합니다, 저는 C++을 처음 접했습니다. 정확히 이해할 수 없습니다. –

+0

함수의 끝에'return 0;'줄을 추가하십시오. – SurvivalMachine

답변

2

편집 : 나는 원래 단지 long을했다,하지만 난이 대신 long long를로 편집 한 이유에 대해 아래의 코멘트 스레드를 참조하십시오.

  1. 귀하의 link 기능은 항상 값을 반환하지 않습니다

    나는 몇 변경했습니다. 이름이 일치하지 않는 경우 하단에 return 0;을 추가했습니다.
  2. 귀하의 번호는 int에 맞게 너무 큰. 나는 long long을 사방으로 바꿨다.
  3. 약간의 정리 (삭제 된 사용되지 않는 코드와 전역 변수)를 수행했습니다. 내 컴파일러는 처음 두 문제에 대한 경고를 생성

참고. 그렇지 않은 경우 중요한 경고가 표시되도록 설정을 변경하십시오. 나를 위해 예상대로

아래의 코드는 작동 :

#include <iostream> 
#include <string> 

std::string enterName() 
{ 
    std::string name1; 
    std::cout << "Enter the name you wish to obtain the number:"; 
    std::cin >> name1; 
    return name1; 
} 


long long link(std::string name1) 
{ 
    if (name1 == "Alex") 
     return 9856452535; 
    if (name1 == "Andre") 
     return 5641598453; 
    if (name1 == "Guy") 
     return 8459563258; 
    if (name1 == "Grand-ma") 
     return 8457892653; 
    if (name1 == "Grand-pa") 
     return 5689852565; 
    if (name1 == "Jérémy") 
     return 7894521564; 
    if (name1 == "Manon") 
     return 8453262145; 
    if (name1 == "Nathalie") 
     return 6589253678; 
    if (name1 == "Stéphanie") 
     return 5689433645; 
    if (name1 == "Olivier") 
     return 5695658321; 

    return 0; // if none of the names match 
} 


void printNumber (long long number) 
{ 
    std::cout << "The number is: " << number << std::endl; 
} 


int main() 
{ 
    std::cout << "Alex" << std::endl; 
    std::cout << "Andre" << std::endl; 
    std::cout << "Guy" << std::endl; 
    std::cout << "Grand-ma" << std::endl; 
    std::cout << "Grand-pa" << std::endl; 
    std::cout << "Jérémy" << std::endl; 
    std::cout << "Manon" << std::endl; 
    std::cout << "Nathalie" << std::endl; 
    std::cout << "Stéphanie" << std::endl; 
    std::cout << "Olivier" << std::endl; 

    //Get user's input 
    std::string name1 = enterName(); 

    //Link name to number 
    long long number = link(name1); 

    //Print the desired number 
    printNumber(number); 
} 
+0

가 출력 어떤 이유로,이 동작하지 않습니다 "-111472192" –

+0

당신은 어디에서나'long's 사용으로 전환 했습니까? 신경 끄시 고 ('긴 link','printNumber (long','긴 number') – smarx

+0

는 –

관련 문제