K&R 2.2 Правильно ли написано? - C (СИ)

Узнай цену своей работы

Формулировка задачи:

for( i = 0; i < MAXLINE - 1) && (c = getchar()) != EOF && c != '\n'; ++i)
        line[i] = c;
Здравствуйте, требовалось переписать код написанный выше не используя && и || , я написал так, как ниже, это корректно или требовалось другое?
for( i = 0; (i < MAXLINE - 1) + ((c = getchar()) != EOF) + (c != '\n') == 3; ++i)
        line[i] = c;

Решение задачи: «K&R 2.2 Правильно ли написано?»

textual
Листинг программы
for( i = 0; ; ++i)
{
    if(i >= MAXLINE - 1)
    {
        i--;
        break;
    }
    if((c = getchar()) != EOF)
        if( c != '\n')
        {
            line[i] = c;
            continue;
        }
    i--;
    break;      
}

Объяснение кода листинга программы

В этом коде реализована функция, которая читает ввод пользователя (предположительно строку) и записывает эту строку в массив. Список действий:

  1. Переменная i инициализируется как 0.
  2. Устанавливается условие для цикла for, которое выполняется до тех пор, пока не достигнется условие окончания цикла (не определенное в данном коде).
  3. Внутри цикла проверяется, достиг ли i значения MAXLINE - 1, если да, то выполняется следующее действие.
  4. Значение i уменьшается на 1.
  5. Условие цикла for проверяется снова.
  6. Если c не равно EOF (концу файла), то выполняется следующее действие.
  7. Проверяется, равно ли c символу новой строки \n.
  8. Если c не равно символу новой строки, то выполняется следующее действие.
  9. Значение c записывается в массив line по индексу i.
  10. Условие цикла for проверяется снова.
  11. Если c равно символу новой строки, то выполняется следующее действие.
  12. Значение i уменьшается на 1.
  13. Условие цикла for проверяется снова.
  14. Если условие цикла for выполняется, то выполняется следующее действие.
  15. Цикл for завершается. Пожалуйста, обратите внимание, что этот код не полностью завершен, поскольку не определено конечное условие цикла for.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.182 из 5
Похожие ответы