hello3332 Ответов: 2

Как сделать так, чтобы мой код прошел тестовые случаи?


Эй ребята
У меня возникли проблемы с прохождением моих тестовых заданий, предоставленных учителем
Это для двоичного вычитания, так как я уже написал алгоритм allready
пожалуйста, помогите мне с тем, что я делаю неправильно
#include <stdio.h>

int main(void)
{
    int borrow, i, n, j, f;
    int x[100]= {0}, y[100]= {0}, difference[100]= {0};
    scanf("%d", &x[i]);
    scanf("%d", &y[i]);

    borrow = 0;
    for (i == 0; n - 1; i++ )
    if(y[i] <= x[i])
    {
    difference[i] = x[i]- y[i];
     }
    else if (i = n - 1)
    {
        borrow = 1;
        x[i] = x[i] + 10;
        difference[i] = x[i] - y[i];
    }
    else (j = i + 1);
     while (x[j] == 0 && j < n)
    {
        j = j + 1;
        j = j - 1;

    }
    while (j > i)
    {
        x[j] = x[j] + 10 - 1;
        j = j - 1;
        difference[i] = x[i] - y[i];

    }
        
         printf("%d",difference[i]);


    return 0;
}


Что я уже пробовал:

Я попытался запустить код с предоставленными тестовыми случаями, но он сказал, что код не может быть скомпилирован или запущен

Patrice T

Что такое тестовые случаи?

2 Ответов

Рейтинг:
1

OriginalGriff

В дополнение к тому, что сказал тебе Карло, сделай себе пару одолжений:
1) Сделайте правильный отступ в своем коде и всегда используйте фигурные скобки, даже если это "только один оператор". Особенно когда вы только начинаете, это облегчает чтение и изменение вашего кода.
Вот ваш (немодифицированный) код с отступом и скобками:

int main(void)
{
    int borrow, i, n, j, f;
    int x[100]= {0}, y[100]= {0}, difference[100]= {0};
    scanf("%d", &x[i]);
    scanf("%d", &y[i]);
    
    borrow = 0;
    for (i == 0; n - 1; i++ )
    {
        if(y[i] <= x[i])
        {
            difference[i] = x[i]- y[i];
        }
        else if (i = n - 1)
        {
            borrow = 1;
            x[i] = x[i] + 10;
            difference[i] = x[i] - y[i];
        }
        else 
        {
            j = i + 1;
        }
    }
    while (x[j] == 0 && j < n)
    {
        j = j + 1;
        j = j - 1;
    }
    while (j > i)
    {
        x[j] = x[j] + 10 - 1;
        j = j - 1;
        difference[i] = x[i] - y[i];
    }
    printf("%d",difference[i]);
    return 0;
}
Можете ли вы видеть, насколько легче сказать, где ваш for цикл заканчивается?

2) прекратите использовать односимвольные имена переменных: это быстро набирается, но затрудняет чтение и понимание. Использование "описательных" имен, которые говорят вам, для чего используется переменная, помогает вашему коду стать самодокументируемым, а с современными IDE это почти не занимает дополнительного времени! ОК - borrow и difference они описательно названы, но что это такое x, y, i, n, j, и f для чего? Ты даже не пользуешься ими!

3) Не хотите ли вы рассказать мне, что делает этот код?
while (x[j] == 0 && j < n)
{
    j = j + 1;
    j = j - 1;
}


Рейтинг:
0

CPallini

Цитата:
scanf("%d", &x[i]);
Здесь (и в следующей строке) i переменная не инициализируется.
Вы должны собрать пользовательский ввод в цикл, чтобы инициализировать массивы.
Вы сделали аналогичные ошибки в оставшейся части программы.


hello3332

ввод осуществляется учителем, который я пытаюсь прочитать с помощью этой команды. У него есть x и y

Usman Hunjra

Уважаемый прежде всего "n" не инициализируется !!!