2017-01-24 4 views
-6

사용자가 가져온 입력에 "="을 인쇄해야합니다 , 루프 또는 printf(), 사용할지 여부를 모르겠지만 문자열 제목 main() 내 함수는 매개 변수로 볼 수 없습니다 내에서 선언 된 때문에.사용자가 "="를 출력하는 함수를 만들 필요가 있지만 변수가 main()으로 선언 되었기 때문에 매개 변수가 함수에 의해 표시되지 않습니다.

Error Message

//#include "stdafx.h" // Header File used VS. 
#include <iostream> 
//#include <iomanip> // Used to format the output. 
#include <cstdlib> // Used for system(). 
#include <math.h> // Used for sqrt(). 
#include <stdio.h> /* printf, NULL */ 
#include <time.h> /* time */ 
using namespace std;// ? 
#include <string> // Used to work with srings. 

string print_title (title); 

int main(){ 

    string title; 

    cout << "Enter a title: " << endl; 
    cin >> title; 

    system("PAUSE"); // Pauses the program before termination. 
    return 0; 
} 

string print_title (title){ 
    cout << title << endl; 
    int length = title.length(); 
    printf("=", length); 
    /*for (int i=0; i<=length, i++){ 
     cout << "=" << endl; 
    }*/ 
} 
+0

다음과 같이 함수를 선언하십시오 : –

+0

문자열 print_title (제목) {'문자열 print_title (문자열 제목) {' – drescherjm

+3

당신은 printf를 잘못 사용하고 있습니다. 길이를 인쇄하려면 printf ("= % d \ n", length);를 사용해야합니다. 또는 std :: cout << ""= "<< length << std :: endl C++를 사용하고 있기 때문에 –

답변

0

는 프로그램에 몇 가지 오류가 있습니다.

먼저 매개 변수의 데이터 유형을 설정하지 않고 함수 매개 변수를 선언하십시오. 일반적으로 함수를 선언하는 형식은 다음 : 상기에서

return_type function_name(input_type input_parameter, ...) 
    { 
     // Do whatever you want 
    } 

를 입력 형 변수 또는 입력 타입이 될 것으로 예상되는 문자의 데이터 유형을 말한다. 귀하의 경우에는 그것은 입력 문자열 이지만 컴파일러는 입력 매개 변수의 데이터 형식을 선언하지 않았기 때문에이를 알지 못합니다.

컴파일러는 main 함수의 title 변수와 print_title 함수의 입력 매개 변수를 혼동하지 않습니다. 두 함수 모두 발견 된 해당 함수에 대한 로컬 변수이기 때문입니다. 함수 내에서 선언 된 모든 변수 다른 기능으로 액세스 할 수 없습니다. 기껏해야, 그 값은 참조로 전달 될 수 있습니다. 내가 위의 설명처럼

오히려, 코드의 문제는 다음 줄에 존재 :

string print_title (title){ 

은, 귀하의 경우에서, 입력 매개 변수의 데이터 유형이 누락되어 있기 때문이다 제목. 코드를 다음으로 변경해야합니다.

string print_title (string title){ 

입력 매개 변수의 데이터 유형을 선언 한 방법입니다. 이 C++의 문법 규칙을 위반 자체

printf("=", length); 

이 문은 문제 : 코드가있다

또 다른 문제는 다음의 문입니다. 이 문을 사용할 때 출력 메시지에서 자리 표시자를 사용해야합니다. 이 자리 표시자는 데이터가 전달되는 변수의 데이터 유형에만 해당됩니다. 로 먼저 당신이, 더 C++ 스타일의 접근 방식, 둘째,

  • printf("= %d\n",length);
  • cout << " = " << length << endl;

내가 두 번째를 추천 할 것입니다 : 귀하의 경우, 다음 중 하나가 될 것입니다 C++로 코딩하고 있습니다. printf 문에 사용 된 자리 표시 자 및 기타 형식 지정자에 대한 자세한 내용을 보려면이 링크를 참조하십시오. Format Specifiers: Printf()

반면에 등호 "길이"횟수를 인쇄하려면 이 이유를 추가하여 정확히 무엇을 인쇄하고 싶은지 모르겠다), 그렇다면 for-loop를 사용할 것이다.여기 내 참조 :

for (int i = 0; i < length; i++) 
    { 
     cout << "=" << endl; 
    } 

이렇게하면 "="부호 길이가 인쇄됩니다. 내가 말했듯이, 나는 당신이 인쇄하고 싶은 것을 정확히 모르겠다. 그래서 나는 두 가지 선택을했다. 또한 printf()를 c 스타일의 용어로 더 많이 사용하기 때문에 printf 대신에 cout을 사용했습니다. 그냥 편안함.

희망 사항. 질문에 대한 답변입니다.

+0

나는 몇 시간 전에 이미 고쳤지만 실수를 지적 해 주셔서 감사합니다. 나는 실제 질문에서 더 분명해야했다. –