Как я могу печатать из (любого целого числа, введенного пользователем) в 0, а затем обратно в целое число без использования рекурсии?(Вычисление класса присвоения) - PullRequest
1 голос
/ 25 сентября 2019

Мой профессор хочет использовать ТОЛЬКО циклы while и вызывать 2 разные функции, что я и сделал.Я действительно застрял в том, как настроить это так, чтобы, если я введу, скажем, 16, он перечислял 16 к 0 в отдельных строках, а также 0–16 снова в отдельных строках.По какой-то причине я могу сделать это с помощью рекурсии очень хорошо, но, не имея возможности это сделать, я теряюсь в том, как сделать эту работу.Мой компьютерный класс учится на языке Си, поэтому мой код и написан на нем. Мы также не обязаны проверять ввод и предполагаем, что пользователь вводит допустимый ввод (положительное целое число).Любые советы приветствуются!Спасибо.


          #include <stdio.h>

       void loop_down_to_zero(int number);
       void loop_up_to_int(int number);

      int main(int argc, char* argv[])
    {
      printf("please enter a positive integer:");
      int number;
      number = ("%d" >= 0);
      loop_down_to_zero(number);
      loop_up_to_int(number);
      scanf("%d", &number);
      printf("****\n");

      return 0;
    }

     void loop_down_to_zero(int number)
     {
      while ( number > 0 )
     {
        loop_down_to_zero(number - 1);
        printf("\n%d", number-1);

     }

     }

    void loop_up_to_int(int number)
   {
    while ( number >= 0 )
   {
      loop_up_to_int(number+ 1);
      printf("%d\n", number+1);
    } 
     return;
     }

1 Ответ

2 голосов
/ 25 сентября 2019

Это не C

number = ("%d" >= 0);

По крайней мере, никакого значащего C.

Замените его фактическим вводом-чтением несколькими строками позже,

scanf("%d", &number);

Так что у вас есть смысл number для вызовов функций.

Это должно решить вашу точку немедленной блокировки.
Затем взгляните на подсказку к вашей следующей проблеме, представленную в качестве комментарияby arvind:
«Также ваш номер положительный, и вы увеличиваете его, поэтому while ( number >= 0 ) не имеет никакого смысла».Вы, вероятно, хотите что-то, включая (current_number <= number).
Затем для рекурсивного решения используйте if вместо while.
Затем, чтобы начать нерекурсивное решение, фактически измените в теле цикла переменнуювы тестируете внутри условия цикла;
в противном случае у вас гарантированный бесконечный цикл, убивающий функциональность ваших программ.

( Я намеренно не даю полного решения, согласно описанному здесь компромиссу Как я могу задавать вопросы на домашние задания и отвечать на них? Сторона, которую задают, ОП хорошо заслужила в моем мнении. )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...