2015-10-25 5 views
-1

, поэтому я новичок в C++, и я надеялся, что сообщество поможет мне в моей домашней работе. Теперь я не прошу кого-то сделать это для меня, потому что я очень способен это сделать сам по себе, я просто прошу помощи в определенной части. Итак, мое задание включало в себя создание программы, которая могла бы находить и печатать все простые числа от 2 до 100. Мне нужно использовать двойной цикл (это то, что сказал мой профессор), поэтому я установил оператор if пробег всех чисел от 2 до 100 и второй цикл внутри первого, чтобы определить, является ли текущий номер простым числом, а затем распечатать его. Вот где моя проблема вступает в игру, когда я запускаю ее, она открывает консольное окно и закрывает его так быстро, что я не вижу, чтобы что-то напечатало его. Поэтому я добавил точку останова, чтобы убедиться, что это так. Когда я нажимаю F5 для перехода на каждый следующий шаг, он проходит через цикл один раз, а затем начинает переходить в разные окна, просматривая строки из разных исходных файлов (я думаю, что они являются исходными файлами). В конце концов окно консоли закрывается ничем, напечатанным на нем, и оно не запускает цикл снова, как должно. Мой вопрос в том, что, как и в Visual Basic, где вы можете поместить console.readline(), чтобы нажатие кнопки нужно было нажимать с клавиатуры, чтобы продолжить, как вы можете сделать то же самое на C++, чтобы после цикла, чтобы увидеть, номер является простым пробегом и напечатал номер, программа будет ждать нажатия клавиши сразу после ее печати?Получите вывод в окно консоли в C++

Вот мой текущий код следующим образом. Еще раз спасибо за любую помощь, я очень ценю это.

#include "stdafx.h" 
#include<iostream> 

using namespace std; 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
int counter=2; 
int primeCounter=counter; 
//two variables, one to keep track of the number we are one, the other to check to see if its prime. 
if(counter<101) 
{//I want the counter to increment by 1 everytime the loops runs until it gets to 100. 
    if(!(counter%(primeCounter-1)==0))//if the counter has a remainer, then it is prime 
    {//each time the main loop run i want this loop to run too so it can check if it is a prime number and then print it. 

     cout<<counter<<endl; 
    //if this was VB, here is where i would want to have my console.Readline() 
    } 
    else 
    { 

    } 
    counter+=1; 
} 
else 
{ 

} 
+1

*** Вот где моя проблема вступает в игру, когда я запускаю ее, она открывает окно консоли и закрывает ее так быстро, что я не вижу, чтобы что-то напечатало ее. *** Я могу сказать вам, что есть 100s дублирует вопросы об этой части здесь на SO. – drescherjm

+0

@ drescherjm. И я ясно спрашиваю, потому что они работают на меня. Я занимаюсь этим вопросом в течение 2 с половиной часов, просматривая всюду по всему миру. Я не добираюсь никуда. – dknight317

ответ

1

cin.get() будет делать то, что вы хотите.

+0

Это непродуманный совет, и поэтому лишний. –

+1

Я не согласен, но вопрос специально спросил, как заставить его программу ждать нажатия клавиши, и я считаю, что я ответил на это. – izzy

+0

Это нормально, чтобы ответить на вопрос о том, как использовать факел сварщика, чтобы зажечь свечу, когда в ответ также содержится совет об использовании зажигалки или спичек для выполнения задания, а также советы об использовании фонарика вместо свечи (учитывая, что это очевидно, что он не используется по романтическим причинам). –

4

Поскольку вы используете Visual Studio, вы можете просто использовать Ctrl + F5 запустить программу без отладки. Таким образом, консольное окно остается после завершения программы.

В качестве альтернативы вы можете запустить программу из командной строки.

Или вы можете установить точку останова на последних } из main и запустить ее в отладчике.

Это не a хорошая идея добавить “ здесь ” в конце.


Если вы хотите увидеть каждую строку вывода, как это производится, просто поместите точку останова после выхода заявления и запустить программу в отладчике, в Visual Studio нажатием клавиши F5 .


Пропущенный, <stdafx.h> не является стандартным заголовком. Он поддерживает предварительно скомпилированные заголовки Visual C++, что является особенностью, которая дает совершенно нестандартное поведение препроцессора. Лучше отключите это в настройках проекта и включите >stdafx.h>.


Также

int _tmain(int argc, _TCHAR* argv[]) 

не глупый нестандартная Microsoft-изм, в свое время в поддержке Windows 9x, но уже не с какой-либо другой целью, кроме вендора.

Просто написать стандартный

int main() 

или с задним синтаксисом типа возвращаемого значения,

auto main() -> int 

Наконец, вместо

!(counter%(primeCounter-1)==0) 

просто написать

counter%(primeCounter-1) != 0 
+0

, когда я делаю трюк CTRL + F5, открывается окно, говорящее, чтобы нажать любую клавишу, чтобы продолжить, а затем она закрывается после того, как я нажимаю клавишу, и ничего не появляется на экране. Хотя точка останова в последней скобке для главной была отличной идеей. Теперь я вижу, что ничего не печатает в окне консоли. Вы знаете, действительно ли команда «Cout <<» выводит на консольное окно по умолчанию? – dknight317

+1

Любое число по модулю 1 равно 0. И поэтому с текущим кодом ничего не выводится. ;-) –

0

В Visual Studio вы можете позвонить по номеру system("pause"); в место, где вам нужно приостановить действие приложения.

+1

Это не переносится в дополнение к тому, чтобы быть непрактичным и ненужным. –

+0

Ctrl-F5 для запуска приложения автоматически добавит «нажмите любую клавишу, чтобы продолжить». – nicomp

+0

@ Cheersandhth.-Alf действительно ли этот предмет действительно нужен, чтобы этот пример был переносимым? Я так не думаю. Это просто один из самых простых способов добиться результата, и я не вижу причин, чтобы избежать его использования в этой конкретной задаче. Давайте оставим все просто, пока мы в состоянии. – Tony

0

поэтому я понял свою проблему. Во-первых, цикл не работал, потому что первый оператор if не делал цикл. Я меняю это на некоторое время, и теперь результат работает как шарм. посмотрите

#include "stdafx.h" 
#include<iostream> 

using namespace std; 

int main() 
{ 
int counter=2; 
int primeCounter=counter; 
//two variables, one to keep track of the number we are one, the other to check to see if its prime. 
while(counter<101) 
{//I want the counter to increment by 1 everytime the loops runs until it gets to 100. 
    if((counter%(primeCounter-1)==0))//if the counter has a remainer, then it is prime 
    {//each time the main loop run i want this loop to run too so it can check if it is a prime number and then print it. 



    } 
    else 
    { 
     cout<<counter<<endl; 
    } 
    counter+=1; 
    primeCounter=counter; 
} 


} 

Теперь мне просто нужно отполировать состояние, чтобы на самом деле определить простые числа. В очередной раз благодарим за помощь.!!!!