Я только начал изучать C ++ и хочу спросить, почему вывод моего простого кода неправильный.
Что я хочу:
пользовательский ввод N -> выход = «N число, что мод 2 = 0, но не мод 3 = 0»
Что я имею:
пользовательский ввод N -> output = «число с mod 2, но не с mod3 = 0, с диапазоном до n»
Вот мой код:
#include <iostream>
#include <conio.h>
int main()
{
int i,n;
std::cout << "input n" << std::endl;
std::cin >> n;
std::cout << "N Number that mod2=0 but mod3!=0" << std::endl;
for ( i = 1; i <= n; ++i )
{
if ( i % 2 == 0 && i % 3 != 0 )
{
std::cout << i < " ";
}
}
getch ();
}
Если я вас правильно понимаю, вы хотите, чтобы пользователь ввел количество цифр, соответствующее вашему условию. Для этого у вас должен быть счетчик:
#include <iostream>
#include <conio.h>
#include <cmath>
using namespace std;
int main()
{
int n;
cout << "input n" << endl;
cin >> n;
cout << n << " numbers for that holds that mod2 = 0 but mod3 != 0" << endl;
int counter = 0;
for (int i = 1; counter < n; ++i)
{
if (i % 2 == 0 && i % 3 != 0)
{
cout << i << " ";
++counter;
}
}
getch ();
}
Я также изменил некоторые другие детали.
Разные вещи, которые нужно учитывать:
<iostream>
ISO <iostream.h>
(добавлю ссылку, почему)cout
, cin
а также endl
находятся в std
пространство имен, поэтому либо используйте правильное пространство имен, либо добавьте std::
operator<
а также operator<<
Код:
#include <iostream>
int main()
{
int i,n;
std::cout<<"input n"<<std::endl;
std::cin>>n;
std::cout<<"N Number that mod2=0 but mod3!=0"<<std::endl;
for (i=1;i<=n;i++)
if (i%2==0 && i%3!=0)
std::cout << i << std::endl;
return 0;
}
Не уверен, я получил вопрос полностью, но наиболее очевидным виновником является опечатка в строке:
cout<<i<" ";
Заменить «<«с оператором вывода потока, то есть»<<».