帮我添加参数到绘制模式的函数

时间:2011-03-24 14:23:21

标签: c++

请帮我回答这个问题,void函数带参数。我不太了解

我想编写一个程序,以便用户可以输入构成模式的两个字符

我需要定义两个(字符)变量(星号)和(下一个),语句必须包含三个参数 - 一个是模式的(int)

和两个将是(字符)字符显示模式。

我必须将函数(drawpattern)更改为具有三个值参数

一个(int)参数,表示模式的大小;两个(字符),表示将用于显示模式的字符。

输入(4)表示大小,(Y)表示用于启动模式的字符,(+)表示第二个和每个替换组

这是我到目前为止所做的事情,如果可以,我现在不会这样做:

#include <iostream>

using namespace std;

void drawPattern(int size, char start, char next)
{
    for (int i = 0; i <= size; i++)
        for (int j = 0; j <= size; j++)
        {
            if ((i / size) % 3 == 0)
                if ((j / size3) % 3 == 0)
                    cout << '4';
                else
                    cout << 'Y';
            else
                if ((j / size) % 3 == 0)
                    cout << '+';
                else
                    cout << '4';
        }
}  
int main ()
{
    int size;
    char start, next;

    cout << "Please enter number ( 4 ) for the size of the pattern : ";
    cin >> size;

    cout << " Now enter leter ( Y ) to start the pattern: ";
    cin >> start;

    cout << "Lastly enter the ( + ) for the other pattern: ";
    cin >> size;

    cout << " This is the output pattern: " << endl;
    drawPattern(size, start, next);

    return 0;
}

2 个答案:

答案 0 :(得分:0)

看起来您在drawPattern函数中对输出进行了硬编码并忽略了用户的实际输入。我认为你应该用传递给函数的相应参数替换'Y'和'+',因为我很确定教授对硬编码值不满意。

答案 1 :(得分:0)

在第11行,你有一个错字。它说size3应该说size

你也犯了一个逻辑错误。

此代码

if ((i / size) % 3 == 0)

在概念上是错误的。至少在现在编写代码时。通常你会这样写:

if (i % 3 == 0)

此if语句每三行都为true。 %(modulu)计算整数(整数)除法firstnumber / secondnumber的余数。如果序列i从0到10,则i % 3输出

i:    0   1   2   3   4   5   6   7   8   9   10
i%3:  0   1   2   0   1   2   0   1   2   0   1

如您所见,i % 3 == 0true,当我可以被3整除时。

您的代码有所不同。假设size = 10.然后计算(整数)除法i / size。最后,您计算(i / size) % 3。但是,i始终小于size,但在循环的最后一个转弯处除外。让我们再看一下这些值:

i:      0   1   2   3   4   5   6   7   8   9   10
size:   10  10  10  10  10  10  10  10  10  10  10
i/size: 0   0   0   0   0   0   0   0   0   0   1

由于i / size的值只更改一次,因此计算(i / size) % 3毫无意义。