如何在C++中正确使用用户输入的参数
如何正确传递average()中所需的参数/重载。函数那里面我的主要功能? 正如你可以创建一个函数,它需要两个参数,但我如何通过主参数?如何在C++中正确使用用户输入的参数
#include <iostream>
using namespace std;
float average(int v[], int n) {
//n = number of elements
//v = the vector
int sum = 0;
int avg = 0;
for (int i = 0; i <= n; i++) {
cout << "Enter a number: ";
cin >> v[i];
sum += v[i];
}
avg = (double)sum/n;
cout << avg;
return 0;
}
int main() {
average();
}
1日的事情是要改变的主要方法取参数...
int main(int argc, char** argv)
然后
你可以做一个遍历ARGV
for(auto x = 0; x < argc; x++)
{
std::cout << "argv[" << x << "] = " << argv[x] << std::endl;
}
记住所有这些都是字符串,并且参数0是可执行文件的名称...
现在,您可以在运行时循环并接受来自用户的输入...
如果那是您想要的alg。然后做一些事情,如:通过允许用户为他/她想要进入尽可能多的数字,然后用一个特殊的数字或字符结束他们
#include <iostream>
using namespace std;
int main() {
const auto K = 10;
int array[K];
std::cout << "Please give then numbers..." << std::endl;
int sum = 0;
for (size_t i = 0; i < K; i++)
{
std::cin >> array[i];
}
for (int i = 0; i < K; i++) {
sum = sum + array[i];
}
double avg = double(sum)/K;
std::cout << "avg: " << avg << std::endl;
return 0;
}
你让它看起来更加复杂,你介意做一个更“简单”的版本,我知道你刚刚发布的方法是“简单”,但如果你看我的代码,我打破了更多一点:p –
嗨@ChristofferNilsson,感谢您的反馈.... –
这更可读,但我试图使用参数,所以,我想创建一个函数的参数,然后起诉它在主要:p –
你可以做更多的互动(介意转换的字符的情况下, )例如0,那么你可以计算总和或平均值或...这样的代码是这样的:
#include <iostream>
using namespace std;
int main() {
int current = 0;
int sum = 0;
int count = 0;
while(true)
{
cout << "Please enter next number(end by entering 0): ";
cin << current;
cout << endl;
sum = sum + current;
count++;
}
double avg = sum/count;
cout << "sum: " << sum << endl;
cout << "avg: " << avg << endl;
return 0;
}
编辑: 如果你真的想使用的参数和功能,这是方式:
#include <iostream>
#include <stdlib.h> /* atoi */
using namespace std;
double avg(int argc, char** argv){
int i=1;
double sum = 0;
while(i<argc){
try{
sum = sum + atoi(argv[i]);
}
catch(int ex){
cout << "Failed to calculate average" << endl;
exit;
}
i++;
}
sum = sum/(argc-1); /* note that we have one extra argument because of the name of program. */
return sum;
}
int main(int argc, char** argv) {
double result = avg(argc, argv);
cout << "avg: " << result << endl;
return 0;
}
有没有办法用这个参数创建一个函数,然后在main中使用该函数? –
@ChristofferNilsson是的,请编辑你的问题,并把你的C#解决方案放在那里,这样我们就可以理解你真正想要的东西。 –
编辑问题 –
也许你想这样(按上次编辑):
#include <iostream>
using namespace std;
double Average(int a[], int size)
{
int sum = 0;
for (int i = 0; i < 10; i++) {
sum = sum + a[i];
}
return (double)sum/size;
}
int main() {
int a[10] = { 1,2,3,4,5,6,7,8,9,10 };
cout << Average(a, sizeof(a)/sizeof(a[0])) << endl;
system("pause");
return 0;
}
sizeof(a)/sizeof(a[0])
是一种方式来获得a
数组元素的数量。
还是更类似于C++使用vector
模板类解决方案:
#include <iostream>
#include <vector>
using namespace std;
double Average(vector<int> a)
{
int sum = 0;
for (auto & v : a)
sum = sum + v;
return (double)sum/a.size();
}
int main() {
vector<int> a = { 1,2,3,4,5,6,7,8,9,10 };
cout << "Average = " << Average(a) << endl;
system("pause");
return 0;
}
而且具有交互式用户输入:
int main() {
vector<int> a;
for (int i = 0; i < 10; i++)
{
cout << "Enter value " << i + 1 << endl;
int value;
cin >> value;
a.push_back(value);
}
cout << "Average = " << Average(a) << endl;
system("pause");
return 0;
}
更改我的问题 –
@ChristofferNilsson仍然不清楚你想要什么,你的C++代码在这个问题上没有多大意义。 Pleeeese显示你工作的** C#**代码,这样我们就可以理解你到底想要什么。 –
所以基本上你想知道如何向用户询问10号? – NathanOliver
我想多数民众赞成在一种方式来说:p –
听起来像你可以使用[良好的C++书](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) – NathanOliver