Напишите функцию, которая отображает все различные комбинации трех разных цифр - PullRequest
0 голосов
/ 22 октября 2018

моя функция my_putchar

#include <unistd.h>
void my_putchar(char c)
{
    write(1, &c, 1);
}

моя функция my_print_comb

#include <unistd.h>
int my_putchar(char c);
void my_print_comb(void)
{
    int i;
    int j;
    int k;
    for(i = 48; i <= 57; ++i)
    {
        my_putchar(i);
        for(j = 48; j <= 57; ++j)
        {
            for(k = 48; j <= 57; ++k)
            {
            }
        }
    }
}

my_putchar(',');
my_putcahr(' ');
my_putchar('\n');
}

и моя основная функция:

#include <unistd.h>
int my_print_comb(void);
int main ()
{
    my_print_comb();
    return (0);
}

Итак, я хочу написать все комбинации по порядкус ./ex |cat -e

the combi 012, 013, 014, ..., 789$

Я пытаюсь использовать эту функцию, но пишу только ошибку вроде: A @ ^

1 Ответ

0 голосов
/ 22 октября 2018

Ваш внутренний цикл проверял не ту переменную.Вы не печатали три цифры во внутреннем цикле.Я также переключился на использование символьных констант '0' и '9', чтобы упростить чтение и проверку ошибок в коде.(Полагаю, что опечатка putcahr не была в вашем исходном коде.)

Отредактировано, чтобы добавить: Извините, я пропустила слово "другой" в вопросе.Я оставлю точную реализацию этого в качестве упражнения для читателя, так как вы не опубликовали ни один код, пытающийся проверить его.Но добавление одной if проверки вокруг внутреннего блока кода должно сделать это: if(test){my_putchar(i); my_putchar(j);...}

void my_print_comb(void)
{
    int i;
    int j;
    int k;
    for(i = '0'; i <= '9'; ++i)
    {
        for(j = '0'; j <= '9'; ++j)
        {
            for(k = '0'; k <= '9'; ++k) // k, not j, is tested against '9'
            {
                my_putchar(i);
                my_putchar(j);
                my_putchar(k);
                my_putchar(',');
                my_putchar(' ');
            }
        }
    }
}
...