2013-03-25 2 views
1

Я пытаюсь решить http://projecteuler.net/problem=1 с помощью Visual C# Express.Простой для цикла в C#

Я создал консольное приложение и написал следующий код:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace Euler_1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      int num = 0; 
      int sum = 0; 
      for (int i = 0; i <= 10; i++) 
      { 
       if (num/3 == 0) 
        sum = sum + num; 
       num++; 
       System.Console.WriteLine(num); 
      } 

     } 
    } 
} 

Просто, чтобы проверить, могу ли я получить какой-либо вывод. Я не уверен, что это лучший способ решить эту проблему. Окно консоли открывается только на секунду, а затем исчезает. Как я могу это исправить?

+0

Возможно, вы используете 'i' вместо' num'. – MikeSmithDev

+2

Кстати, если вы хотите N итераций цикла, используйте форму для (int i = 0; i SecurityMatt

+2

Не '(num/3 == 0)' то же самое, что 'num == 0'? Возможно, вы имели в виду '(num% 3 == 0)' –

ответ

3

Вы можете исправить это, используя Console.ReadKey(). Как правило, в консольных приложениях, где это происходит (хотя я бы никогда не рекомендовал его, если вы можете помочь ему ... Консоли, как правило, запускаются из существующей командной строки и, как ожидается, немедленно выйдут, когда это будет сделано, обратно в контекст терминала), вы видите что-то вроде этого:

Console.WriteLine("press any key to exit..."); 
Console.ReadKey(); 
+2

Но где * Any * key? –

+0

@MikeChristensen Харди-ха-ха - я не вижу в нем титула или цитаты, чтобы указать, что это отдельная вещь сама по себе; это буквально означает, что любой данный ключ выполнит эту работу. –

+1

@Grant Это ссылка на популярное телешоу «The Simpsons» –

2

попробовать

Console.ReadKey(); 

после цикла

0

вы можете поставить точку останова на последней строке, так что отладчик остановится, добавьте вызов как ReadLine чтобы пользовательский ввод был необходим, добавьте задержку (Сон), чтобы Windows оставаться на дисплее в течение нескольких секунд или запускать его из командной строки.

0

есть слишком много операций

if (i/3 == 0) 
    sum+=i; 

И как другие говорили,

Console.ReadKey() 

позволит вам увидеть результаты.

+0

'sum ++;' is * not * то же самое, что 'sum = sum + num;' –

+0

вы правы, конечно, я исправлю это, спасибо! – gkovacs90

0

Проблема заключается в том, что приложение заканчивается (консоль закрывается), после вашей отделки цикла. Чтобы консоль открыть можно выполнить одно из следующих действий:

  1. Если запустить приложение без отладчика, нажав Ctrl + F5 вместо того, чтобы просто F5, вы увидите Press any key to continue . . . непосредственно перед программа выходит.

  2. Для меня лучший способ сделать это с помощью отладчик, чтобы добавить точку останова (F9) к закрывающей скобкой вашего метода main.

Добавление дополнительного кода, который поможет вам отладить вашу программу, является для меня вредной привычкой.

+0

Только когда-либо был введен код, как в # 1, в одной или двух «альтернативных» IDE. Это, конечно, не стандарт, например, Visual Studio (и, насколько мне известно, не C# -компилятор); возможно, вы говорите о конкретном приложении? Возможно, я ошибаюсь, но это очень странная вещь, чтобы предложить, не сказав, как ее использовать. –

+0

Это тестирование на Visual Studio 2010 – Odys

0

Ctrl + F5 оставит вас с Press any key to continue... Это остановит консоль от автоматического закрытия.

Кроме того, вы можете перейти на панель инструментов Debug и нажать Start Without Debugging.

Это решение предотвратит добавление кода в проект.

0

Здесь чистый код со всеми изменениями, указанными другими. В основном, modulo (см.%) И Console.ReadKey

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace Euler 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      const int max = 10; 
      int sum = 0; 

      for (int i = 0; i < max; i++) 
      { 
       if (i % 3 == 0 || i % 5 == 0) 
        sum += i; 
      } 

      Console.WriteLine("The sum of all multiples of 3 and 5 from 0 to {0} is: {1}", max, sum); 

      Console.WriteLine("Press any key to exit."); 
      Console.ReadKey(); 
     } 
    } 
}