C++ 数组不';不要在执行代码时打印任何内容
我正在创建一个函数,它接受一个整数,在这个数之后找到下一个5的倍数,然后如果这个倍数和这个数之间的差小于3,那么它会打印出这个倍数,否则就是这个数本身,最后打印出一个所有数的数组C++ 数组不';不要在执行代码时打印任何内容,c++,arrays,loops,return,C++,Arrays,Loops,Return,我正在创建一个函数,它接受一个整数,在这个数之后找到下一个5的倍数,然后如果这个倍数和这个数之间的差小于3,那么它会打印出这个倍数,否则就是这个数本身,最后打印出一个所有数的数组 #include <bits/stdc++.h> #include <iostream> using namespace std; vector<int> gradingStudents(vector<int> grades) { int size=grade
#include <bits/stdc++.h>
#include <iostream>
using namespace std;
vector<int> gradingStudents(vector<int> grades) {
int size=grades.size();
int c=0;
int d;
vector<int> array;
for(int i=0;i<size;i++){
while(grades[i]>(c*5)){
c++;
}
d=c*5;
if((d-grades[i])<3){
array[i]=d;
}else{
array[i]=grades[i];
}
d=0;
c=0;
}
return array ;
#包括
#包括
使用名称空间std;
向量分级学生(向量等级){
int size=grades.size();
int c=0;
int d;
矢量阵列;
对于(int i=0;i(c*5)){
C++;
}
d=c*5;
如果首先((d-grades[i]),我不得不说这段代码效率极低。通过以下方法可以简单地找到最接近的5和一个数字之间的差异:
int差=(n-(n+4)/5*5)-n;
< C++ >舍入除法,所以<代码>(n+1)/5 < /COD>是<代码> n/5 < /Calp>四舍五入,因此<代码>(n+1)/5*5 < /C> >是最接近的乘法5。< /p>
另外,您声明了一个数组,但从未调整其大小,因此其大小为0。您需要通过在构造函数中指定大小或使用std::vector::resize
方法来调整其大小
代码:
std::向量分级学生(std::向量分级){
std::size_t size=grades.size();
std::向量数组(大小);
对于(int i=0;i
首先,我不得不说,这段代码效率极低。要找出最接近的5和一个数字之间的差异,只需通过以下方法:
int差=(n-(n+4)/5*5)-n;
< C++ >舍入除法,所以<代码>(n+1)/5 < /COD>是<代码> n/5 < /Calp>四舍五入,因此<代码>(n+1)/5*5 < /C> >是最接近的乘法5。< /p>
另外,您声明了一个数组,但从未调整其大小,因此其大小为0。您需要通过在构造函数中指定大小或使用std::vector::resize
方法来调整其大小
代码:
std::向量分级学生(std::向量分级){
std::size_t size=grades.size();
std::向量数组(大小);
对于(int i=0;i
你的代码可能会崩溃,这就是为什么它不会打印任何东西。它崩溃的一个原因是你的向量使用错误
初学者编写这样的代码是很常见的
vector<int> array;
for (int i=0;i<size;i++) {
array[i] = ...;
2) 使用push_back
向向量添加项目,每次调用push_back
向量的大小都会增加一个
vector<int> array(size);
for (int i=0;i<size;i++) {
array.push_back(...);
向量数组(大小);
对于(inti=0;i来说,您的代码可能会崩溃,这就是为什么它不会打印任何内容。崩溃的原因之一是您的向量使用错误
初学者编写这样的代码是很常见的
vector<int> array;
for (int i=0;i<size;i++) {
array[i] = ...;
2) 使用push_back
向向量添加项目,每次调用push_back
向量的大小都会增加一个
vector<int> array(size);
for (int i=0;i<size;i++) {
array.push_back(...);
向量数组(大小);
对于(int i=0;i我觉得你的函数没有什么问题,但是调用这个函数有点棘手,让我给你一个快速的main来尝试一下,可能会对你有所帮助
int main() {
vector <int> test ;
test.push_back(1);
test.push_back(2);
gradingStudents(test);
return 0;
}
intmain(){
病媒试验;
测试。推回(1);
测试。推回(2);
给学生打分(测试);
返回0;
}
开始尝试向量的大小是空的,我希望你是从main发送一些东西。你的代码效率很低,只要你有时间就必须阅读如何编写有效的代码。我觉得你的函数没有问题,但是调用这个函数有点棘手。让我给你一个快速的main来尝试可能会对你有所帮助。
int main() {
vector <int> test ;
test.push_back(1);
test.push_back(2);
gradingStudents(test);
return 0;
}
intmain(){
病媒试验;
测试。推回(1);
测试。推回(2);
给学生打分(测试);
返回0;
}
开始尝试向量的大小是空的,我希望您是从main发送一些内容。您的代码效率非常低,只要您有时间,就必须阅读如何编写有效的代码。向量开始时是空的。空数组中的任何索引都将超出范围。向量数组(大小);
。关于,“但是,代码不会打印任何内容"这并不奇怪,因为在发布的代码中绝对没有IO,即使你做了我建议的修复。现在我尝试运行这个函数——当没有main
启动程序时,你是如何运行这个函数的?无关:你似乎只使用c
将它与5
相乘,那么为什么不执行c呢+=5;
而是跳过乘法?@PaulMcKenzie我实际上只是在这里粘贴了函数,而不是整个代码。向量开始是空的。空数组中的任何索引都将是越界的。向量数组(大小);
。关于“但是代码不打印任何内容”这并不奇怪,因为在发布的代码中绝对没有IO,即使你做了我建议的修复。现在我尝试运行这个函数——当没有main
启动程序时,你是如何运行这个函数的?无关:你似乎只使用c
将它与5
相乘,那么为什么不执行c呢+=5;
而是跳过乘法?@PaulMcKenzie我实际上只是在这里粘贴了函数,而不是整个代码。谢谢你的建议。谢谢你的建议。