Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Программка "Приветсвие"

29.10.07 14:52
Программка "Приветсвие"
 
  dmitryd посетитель
Последний раз изменено 29.10.07 15:05 (dmitryd)
Привет,
В ответ на:
int main()
{
// запрашиваем имя человека.
cout << "введите, пожалуйста, свое имя: ";
// читаем введенное имя.
string name;
cin>>name;
// создаем приветсвие.
string greeting = "Привет, " + name + "!";
// количество пробелов, окружающих приветствие.
int pad = 1;
// количество выводимых строк и столбцов.
int rows = pad * 2 + 3;
string::size_type cols = greeting.size() + pad * 2 + 2;
// вывод пустой строки, чтобы отделить вывод от ввода.
cout << endl ;
// Выводим rows строк.
// Инвариант: вывод r строк.
for (int r = 0; r != rows; ++r)
{
string::size_type c = 0;
// Инвариант: вывод с символов в текущую строку.
while (c != cols)
{
//вывод приветствия (greeting)
if (r == pad + 1 && c == pad + 1)
{
cout << greeting;
c += greeting.size();
}
else
{
//вывод рамки
if (r == 0 || r == rows - 1 || c == 0 || c == cols - 1)
cout << "*";
else
cout << " ";
++c;
}
}
cout << endl;
}
// вывод пустой строки пред системным приглашением
cout << endl;
}

вывод показывает не корректно а именно вот так

1,2,4 и 5 строки длинее задающей длину третьей. Почему так происходит?
 

Перейти на