저는 초보자로서 C++를 배우려고하는 아주 간단한 프로그램을 만들고 있습니다. 짧은 문장에서 모음의 수와 조인자의 수를 단순히 계산하도록 고안되었습니다. 나는 그것을하는 동안 재미있는 작은 딜레마를 보았습니다.콘솔 응용 프로그램 자동 종료 C++
#include <iostream>
#include <time.h>
#include <string>
using namespace std;
int main()
{ int vowells = 0, consenants = 0;
char sentence[100];
char alphabet[] = {'a','e','i','o','u','b','c','d','f','g','h','j','k','l','m','n','p','q','r','s','t','v','w','x','y','z'};
cout << "Please type in a sentence (up to 100 characters max, lower case only): ";
cin >> sentence;
cin.ignore();
cout << "Your sentence was: " << sentence;
for (int i=0; i < sizeof(sentence); i++)
{
if (sentence[i] == alphabet[0]||sentence[i] == alphabet[1]||sentence[i] == alphabet[2]||sentence[i] == alphabet[3]||sentence[i] == alphabet[4])
{vowells++;}
else if (sentence[i] == alphabet[5]||sentence[i] == alphabet[6]||sentence[i] == alphabet[7]||sentence[i] == alphabet[8]||sentence[i] == alphabet[9]||sentence[i] == alphabet[10]||sentence[i] == alphabet[11]||
sentence[i] == alphabet[12]||sentence[i] == alphabet[13]||sentence[i] == alphabet[14]||sentence[i] == alphabet[15]||sentence[i] == alphabet[16]||sentence[i] == alphabet[17]||sentence[i] == alphabet[18]||
sentence[19] == alphabet[20]||sentence[i] == alphabet[21]||sentence[i] == alphabet[22]||sentence[23] == alphabet[24]||sentence[i] == alphabet[25])
{consenants++;}
}
cout << "\nThe number of vowells is: " << vowells;
cout << "\nThe number of consenants is: " << consenants;
cin.get();
}
죄송합니다 정말 지저분한 외모 : 모두 여기의
우선 코드입니다. 기본적으로 cin >> 문장 뒤에; line 나는 cin.ignore() 함수를 써서 문장을 입력 한 후 엔터 키를 없앱니다. 함수의 끝에서 cin.get()은 단순히 프로그램이 닫히기 전에 다른 입력을 원하기 때문에 중단 점 역할을한다고 가정합니다. 공백없이 1 단어 만 입력하면 프로그램이 실행되고 원하는만큼 끝납니다. 공백이있는 여러 단어를 넣으면 그냥 실행하고 즉시 볼 시간이 없어도 닫힙니다. 나는 이것이 어떤 이유로 공백 때문에 있다고 가정합니다 ... 왜 그들이 이런 방식으로 그것에 영향을 미치는지 확신 할 수 없지만.
기본적으로, 내게 문제가되는 공간입니까? 그렇다면 어떻게 그들을 제거하거나 적어도 프로그램을 무시하게되면 어떻게해야합니까?
감사합니다.
편집 *** 그래서 잠깐 멈추게하려면 Sleep() 명령을 사용할 수 있다고 들었습니다. 이제 문제는 다른 사람이 주석을 달았을 때 cin 함수는 첫 번째 단어 만 허용하고 나머지 문장은 고려하지 않는다는 것입니다. 그래서 나는 공간을 없애거나 어떻게 든 제대로 작동하도록 다른 입력 함수를 사용해야한다고 생각합니다. 이 작업을 수행하는 방법에 대한 제안 사항은 무엇입니까?
디버깅을 했습니까? – icbytes
cin은 공백까지 읽습니다. 그래서 다음 cin은 공백 다음 단어를 읽습니다. –
그래서 getline (cin, sentence)을 사용해야합니다. 그것은 여전히 각 문자가 하나의 공간을 점유하면서 배열에 저장합니까? – Riley