Member 13272723 Ответов: 2

Программа для отображения всех чисел Армстронга от 1 до 500


Может ли кто-нибудь сказать мне,в чем проблема с кодом,который я создал, чтобы отобразить числа Армстонга от 1 до 500?

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

#include <stdio.h>
#include <conio.h>

void main()
{
  int i,r,s=0,a;
  for(i=1;i<=500;i++)
  {
      a=i;
      while(i>0)
      {
          r=i%10;
          s=s+(r*r*r);
          i=i/10;
      }
      if(a==s)
      {
          printf(" %d ",a);
      }
  }
  getch();
}

2 Ответов

Рейтинг:
7

Patrice T

Одной из проблем является положение s=0 как и предполагал ОГ.

Существует инструмент, который позволяет вам видеть, что делает ваш код, его имя-отладчик. Это также отличный инструмент обучения, потому что он показывает вам реальность, и вы можете увидеть, какие ожидания соответствуют реальности.
Когда вы не понимаете, что делает ваш код или почему он делает то, что делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволяет вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения, это невероятный инструмент обучения.

Отладчик-Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010-YouTube[^]
Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.


Member 13272723

Спасибо

Рейтинг:
20

OriginalGriff

На самом деле это действительно очевидно, но только когда вы смотрите на это.
И использование отладчика сразу же покажет вам, в чем именно заключается проблема.

Поместите точку останова в первую строку функции и запустите код через отладчик. Затем посмотрите на свой код и на свои данные и определите, что должно произойти вручную. Затем по одному шагу в каждой строке проверяйте, что именно то, что вы ожидали, произошло. Когда это не так, тогда у вас есть проблема, и вы можете вернуться назад (или запустить ее снова и посмотреть более внимательно), чтобы выяснить, почему.

Да, я мог бы рассказать вам, в чем проблема, но это очень простой пример и очень простая ошибка, так что это хорошая возможность для вас получить опыт в разработке проблем - время для вас, чтобы освоить новый (и очень, очень полезный) навык: отладка!

Подсказка: внимательно следите за буквой "s".


Member 13272723

Спасибо

OriginalGriff

Пожалуйста!