Я пытаюсь написать программу, которая будет показывать имя в диагональной строке. Я знаю, что я должен добавить переменную с пробелом, например \t, и увеличить ее в каждом цикле. Я пытался сделать это без успеха. Какие-либо предложения?
int main()
{
string space = "\t";
string firstName;
cout << "Enter your first name:";
cin >> firstName;
for (int posChar = 0;
posChar < firstName.length( );
posChar++)
cout << space << firstName.at(posChar) << endl;
space=space + "\t"; // this is what I've tried, it a long shot.
return 0;
}
output:
Enter your first name:Alexander
A
l
e
x
a
n
d
e
r
Если вы отделите код правильно, вы увидите, что space=space + "\t";
не является частью for
.
Кроме того, вы должны использовать пробел вместо закладки.
#include <iostream>
#include <string>
using namespace std;
int main()
{
string space;
string firstName;
cout << "Enter your first name:";
cin >> firstName;
for (int posChar = 0; posChar < firstName.length( ); posChar++)
{
cout << space << firstName.at(posChar) << endl;
space = space + " ";
}
return 0;
}
Вы можете отправить часть своего кода (не обязательно этого) для проверки кода. У вас есть некоторые плохие практики, когда дело доходит до форматирования и (отсутствия) отступов.
Нужно {} в вашем цикле for. Без этого вы не добавляете вкладку для каждого символа, а добавляете ее, когда цикл завершен.
Если вы выполняете цикл for без блока, выполняется только команда, следующая за циклом.
Вы забыли открывающие и закрывающие скобки для кодового блока? Цикл, который вы написали,
cout << space << firstName.at(posChar) << endl;
и после того, как он закончил, он делает один раз
space=space + "\t"; // this is what I've tried, it a long shot.
Он должен выглядеть так:
for (int posChar = 0;
posChar < firstName.length( );
posChar++)
{
cout << space << firstName.at(posChar) << endl;
space=space + "\t"; // this is what I've tried, it a long shot.
}