C++根据a和b的值输出一个由*组成的杠铃形状。

根据a和b的值输出一个由*组成的杠铃形状。其中a表示杠铃的高度有多少行,杠铃的两端都是长度为b的正方形,帮看看哪里错了,谢谢

#include<iostream>
using namespace std;
int main()
{
    int a, b;
    cin >> a >> b;
    if (a <= 30 && b <= 11 && a >= 2 * b + 1)
    {
        for (int i = 1;i <= a;i++)
        {
            for (int j = 1;j <= b;j++)
            {
                if (i <= b || i >= a - b + 1)
                    cout << "*";
                else if (j == b / 2 + 1)
                    cout << "*";
                else
                    cout << " ";
            }
            cout << endl;
        }

    }
    return 0;
}

空格输多了

那杠铃的宽度也没说啊

输入
只有一组案例,由2个正整数a和b组成,其中b是奇数,a>=2b+1。(a<=30, b<=11)
输出
根据a和b的值输出一个由*组成的杠铃形状。不要输出不必要的空格,最后一行星号输出完有一个换行。

else if(j<=b/2)
cout<<" ";