циклы — C ++ новичок не соответствует ‘operator-‘

У меня возникла проблема с одним из моих вступлений в c ++ labs. Я разместил инструкции для этой лаборатории и мой код ниже. Я хотел бы отметить, что шаблон B должен отображаться рядом с шаблоном A (точно так, как показано на рисунке), а не под ним.

C ++ Lab Assignment

Когда я пытаюсь построить этот код, я получаю сообщение об ошибке «несоответствие» для строки 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;
}

-5

Решение

Как я понял это:

#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;
}
0

Другие решения

Вы не можете «вычитать» строки в C ++. Для строк нет оператора «-».

Один из подходов заключается в использовании string.substring () для получения «укороченной» версии вашей исходной строки:

b=b.substr(0, b.size()-1); // copy all but last character of b to b
0

Нет оператора 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
0
По вопросам рекламы [email protected]