Member 12950278 Ответов: 1

Как мне сделать так, чтобы это было правильно скомпилировано?


Я чувствую, что у меня есть исходный код, правильный по большей части. Я запрашиваю у пользователя первый ответ, каков его возраст. он читает и хранит правильно. Затем я спрашиваю пользователя о втором ответе, сколько у него денег. он также читает и хранит правильно. но когда я добрался до третьего ответа, который является строкой, и я использовал команду getline. кажется, что он просто переходит к следующим строкам кода, который печатает все с первыми двумя правильными ответами, но третий явно неправильный. Я не уверен, есть ли там перерыв или что-то еще, что мне нужно? Код выглядит следующим образом
#include "stdafx.h"
// Lab One Programming Exercise
// CS 1410
// your name
// CS 1410 -- your Section number
// --------------------------


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

int main()
{
	// declarations
	int age;
	float value;
	string name;

	// Prompt the user for their age
	cout << "\nPlease enter your age: ";
		
	// Get their age and store it in the variable age
	cin >> age;
	
	// Prompt the user for how much money they have
	cout << "\nHow much money do you have: ";
		
	// Get the amount of money and store it in the variable value
	cin >> value;
	
		// Prompt the user to enter their full name.
	cout << "\nPlease enter your full name:\n ";
		
	// Get their name and store it in the string variable name
	getline(cin, name);

	//    The person's name. You must display the full name
	cout << "Thank you, " << name << endl;
	
	//    The person's age
	cout << "You are " << age << "years old." << endl;
	
	//    The money the person has. Display a dollar sign and two digits 
	//    after the decimal point.
	cout << "and you have " << value << " in your pocket." << endl;
	
	cout << "\nGoodbye ...." << endl;
	cout << "\nPress Enter to continue...";
		cin.get();
}


Что я уже пробовал:

Я новичок в программировании, но я пробовал использовать команду endl в разных точках, а также \n. не знаю, как правильно сохранить и распечатать строку имени.

1 Ответов

Рейтинг:
1

Patrice T

Ваш

cin >> value;

не очищайте буфер и не оставляйте трейлинг \северный в буфере.
и getline потреблять \северный как ответ.
Попробуй
cin.ignore();
getline(cin, name);


Используйте отладчик, чтобы увидеть, что делает ваш код. Он позволяет выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]

Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.