У меня возникла проблема с одним из моих вступлений в c ++ labs. Я разместил инструкции для этой лаборатории и мой код ниже. Я хотел бы отметить, что шаблон B должен отображаться рядом с шаблоном A (точно так, как показано на рисунке), а не под ним.
Когда я пытаюсь построить этот код, я получаю сообщение об ошибке «несоответствие» для строки b = b-y. Есть ли простой метод уменьшения символов в строке? В инструкции указано использование второго цикла для шаблона B, но я не уверен, с чего начать. Буду очень признателен за любые советы, которые помогут мне правильно выполнить это задание. Спасибо.
#include <iostream>
#include <string>
using namespace std;
int main()
{
string a = "*";
string b = "**********";
string y = "*";for (int i=0; i <= 9; i++) {
cout << a << " " << b << "\n";
a = a + y;
b = b - y;
}return 0;
}
Как я понял это:
#include <iostream>
using namespace std;
int main()
{
int aCount = 1;
int bCount = 10;
while(bCount > 0)
{
// Loop over A
for (int i = 0; i < aCount; i++)
{
cout << '+';
}
// Output a few tabs to separate the samples
cout << "\t\t\t\t";
// Loop over B
for (int i = 0; i < bCount; i++)
{
cout << '+';
}
// Go to next line
cout << endl;
aCount++;
bCount--;
}
return 0;
}
Вы не можете «вычитать» строки в C ++. Для строк нет оператора «-».
Один из подходов заключается в использовании string.substring () для получения «укороченной» версии вашей исходной строки:
b=b.substr(0, b.size()-1); // copy all but last character of b to b
Нет оператора operator -
в классе std::string
, Вы должны использовать метод erase
вместо,
Однако если вы будете выводить строки для каждой строки, то не будет двух циклов один за другим.
Кажется, назначение означает что-то вроде следующего
#include <iostream>
#include <iomanip>
int main()
{
while ( true )
{
const char c1 = '+';
const char c2 = ' ';
std::cout << "Enter a non-negative number (0 - exit): ";
unsigned int n;
if ( not ( std::cin >> n ) or ( n == 0 ) ) break;
std::cout << '\n';
for ( unsigned int i = 1; i <= n; i++ )
{
for ( unsigned int j = 1; j <= i; j++ )
{
std::cout << c1;
}
std::cout << std::setw( 2 * n - i ) << std::setfill( c2 )
<< std::right << c2;
for ( unsigned int j = n - i + 1; j != 0; j-- )
{
std::cout << c1;
}
std::cout << '\n';
}
std::cout << std::endl;
}
return 0;
}
Вывод программы может выглядеть так
Enter a non-negative number (0 - exit): 10
+ ++++++++++
++ +++++++++
+++ ++++++++
++++ +++++++
+++++ ++++++
++++++ +++++
+++++++ ++++
++++++++ +++
+++++++++ ++
++++++++++ +
Enter a non-negative number (0 - exit): 9
+ +++++++++
++ ++++++++
+++ +++++++
++++ ++++++
+++++ +++++
++++++ ++++
+++++++ +++
++++++++ ++
+++++++++ +
Enter a non-negative number (0 - exit): 8
+ ++++++++
++ +++++++
+++ ++++++
++++ +++++
+++++ ++++
++++++ +++
+++++++ ++
++++++++ +
Enter a non-negative number (0 - exit): 7
+ +++++++
++ ++++++
+++ +++++
++++ ++++
+++++ +++
++++++ ++
+++++++ +
Enter a non-negative number (0 - exit): 6
+ ++++++
++ +++++
+++ ++++
++++ +++
+++++ ++
++++++ +
Enter a non-negative number (0 - exit): 5
+ +++++
++ ++++
+++ +++
++++ ++
+++++ +
Enter a non-negative number (0 - exit): 4
+ ++++
++ +++
+++ ++
++++ +
Enter a non-negative number (0 - exit): 3
+ +++
++ ++
+++ +
Enter a non-negative number (0 - exit): 2
+ ++
++ +
Enter a non-negative number (0 - exit): 1
+ +
Enter a non-negative number (0 - exit): 0