C++ 中代码输出的问题
An issue with an output of a code in C++
我的代码有问题。
我的代码是:
#include <iostream>
#include <string>
#include <math.h>
using namespace std;
int min(int A[], int s)
{
int x = A[0];
for (int i = 0; i<s; i++)
if (A[i]<x)
x = A[i];
return x;
}
int max(int A[], int s)
{
int x = A[0];
for (int i = 0; i<s; i++)
if (A[i]>x)
x = A[i];
return x;
}
int main()
{
int Array[10] = { 15,20,8,0,17,14,2,12,10,5 };
while (1)
{
string UserInput;
cin >> UserInput;
if (UserInput == "Minimun")
{
int Minimum = min(Array, 10);
}
if (UserInput == "Maximum")
{
int Maximum = max(Array, 10);
}
if (UserInput == "Dropped ones")
{
int count = min(Array, 10) + 1;
for (int i = min(Array, 10); i<max(Array, 10) - 1; i++)
cout << count++ << "\n";
}
}
return 0;
}
它没有错误,但它并没有像我想要的那样工作。
如果我有一个数组:int Array[10]= {15,20,8,0,17,14,2,12,10,5};
然后我在这个数组中找到了最大值和最小值。我想制作一个计数器,打印 0 到 20 之间的值,数组中的值除外。
表示输出应该是:
1
3
4
6
7
9
11
13
15
16
18
19
为什么我的代码不打印此输出?
请帮帮我,我不知道这段代码哪里错了。
提前致谢。
再试一次,但是 "cbegin" 和 "cend" 出现错误:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int Array[] = { 15, 20, 8, 0, 17, 14, 2, 12, 10, 5 };
auto Minimum = *min_element( cbegin( Array ), cend( Array ) );
auto Maximum = *max_element( cbegin( Array ), cend( Array ) );
cout << "Min: " << Minimum << '\n';
cout << "Max: " << Maximum << '\n';
for( auto i = 1; i <= 20; ++i ) {
if( find( cbegin( Array ), cend( Array ), i ) == cend( Array ) ) {
cout << i << "\n";
}
}
return 0;
}
如果我理解你的 post 正确的话。根据您的要求,我将代码从使用向量更改为使用 c 数组。我拿出了用户输入的东西给你一个较小的样本来查看。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int Array[] = { 15, 20, 8, 0, 17, 14, 2, 12, 10, 5 };
// part of the xutility header
// better to use cbegin( Array );
auto begin = &Array[ 0 ];
// better to use cend( Array );
auto end = begin + sizeof( Array ) / sizeof( Array[ 0 ] );
auto Minimum = *min_element( begin, end );
auto Maximum = *max_element( begin, end );
cout << "Min: " << Minimum << '\n';
cout << "Max: " << Maximum << '\n';
for( auto i = 1; i <= 20; ++i ) {
if( find( begin, end, i ) == end ) {
cout << i << "\n";
}
}
return 0;
}
它不起作用,因为你的 cin 只得到第一个词 "Dropped" 而不是 "Dropped ones"。如果你把它写成 1 个单词,似乎工作得很好:http://ideone.com/AjtOc7。
如果你想要多个单词使用getline
std::string UserInput;
std::getline (std::cin, UserInput);
另外,考虑像答案中提到的那样使用 STL 库。
我的代码有问题。
我的代码是:
#include <iostream>
#include <string>
#include <math.h>
using namespace std;
int min(int A[], int s)
{
int x = A[0];
for (int i = 0; i<s; i++)
if (A[i]<x)
x = A[i];
return x;
}
int max(int A[], int s)
{
int x = A[0];
for (int i = 0; i<s; i++)
if (A[i]>x)
x = A[i];
return x;
}
int main()
{
int Array[10] = { 15,20,8,0,17,14,2,12,10,5 };
while (1)
{
string UserInput;
cin >> UserInput;
if (UserInput == "Minimun")
{
int Minimum = min(Array, 10);
}
if (UserInput == "Maximum")
{
int Maximum = max(Array, 10);
}
if (UserInput == "Dropped ones")
{
int count = min(Array, 10) + 1;
for (int i = min(Array, 10); i<max(Array, 10) - 1; i++)
cout << count++ << "\n";
}
}
return 0;
}
它没有错误,但它并没有像我想要的那样工作。
如果我有一个数组:int Array[10]= {15,20,8,0,17,14,2,12,10,5};
然后我在这个数组中找到了最大值和最小值。我想制作一个计数器,打印 0 到 20 之间的值,数组中的值除外。
表示输出应该是:
1
3
4
6
7
9
11
13
15
16
18
19
为什么我的代码不打印此输出?
请帮帮我,我不知道这段代码哪里错了。 提前致谢。
再试一次,但是 "cbegin" 和 "cend" 出现错误:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int Array[] = { 15, 20, 8, 0, 17, 14, 2, 12, 10, 5 };
auto Minimum = *min_element( cbegin( Array ), cend( Array ) );
auto Maximum = *max_element( cbegin( Array ), cend( Array ) );
cout << "Min: " << Minimum << '\n';
cout << "Max: " << Maximum << '\n';
for( auto i = 1; i <= 20; ++i ) {
if( find( cbegin( Array ), cend( Array ), i ) == cend( Array ) ) {
cout << i << "\n";
}
}
return 0;
}
如果我理解你的 post 正确的话。根据您的要求,我将代码从使用向量更改为使用 c 数组。我拿出了用户输入的东西给你一个较小的样本来查看。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int Array[] = { 15, 20, 8, 0, 17, 14, 2, 12, 10, 5 };
// part of the xutility header
// better to use cbegin( Array );
auto begin = &Array[ 0 ];
// better to use cend( Array );
auto end = begin + sizeof( Array ) / sizeof( Array[ 0 ] );
auto Minimum = *min_element( begin, end );
auto Maximum = *max_element( begin, end );
cout << "Min: " << Minimum << '\n';
cout << "Max: " << Maximum << '\n';
for( auto i = 1; i <= 20; ++i ) {
if( find( begin, end, i ) == end ) {
cout << i << "\n";
}
}
return 0;
}
它不起作用,因为你的 cin 只得到第一个词 "Dropped" 而不是 "Dropped ones"。如果你把它写成 1 个单词,似乎工作得很好:http://ideone.com/AjtOc7。
如果你想要多个单词使用getline
std::string UserInput;
std::getline (std::cin, UserInput);
另外,考虑像答案中提到的那样使用 STL 库。