gpt4 book ai didi

c++ - 从另一个数组中将值写入另一个数组,排除不需要的值c++

转载 作者:行者123 更新时间:2023-12-02 10:21:11 24 4
gpt4 key购买 nike

就上下文而言,我不能使用csc101中未讲授的任何内容(您可能学到的东西可能有所不同),因此不能使用 vector ,结构和类之类的东西。在更多情况下,我有一个分配,要求我有一个函数,该函数采用具有随机值的numarray数组,并从20到40中删除值。据我所知,最好的方法是制作一个新数组并采用来自numarray的有效值,并将它们放在新数组temparray中。我尝试实现此最佳方法来实现,但似乎只能反复吐出一个设置的数字,该数字是一个较长的负数。我知道它是这个函数,因为不调用时我没有问题。如果我在函数末尾注释掉while循环,也不会发生此问题。我将首先附加有问题的功能,然后附加整个程序以添加上下文。可以接受任何批评,但是通过类是我的首要任务,而不是优雅和效率。如果教授想以某种方式做某事,我必须承担义务。谢谢你的时间。

所需功能:

void Delete(int* numarray, int *temparray) {

int arrayindex = 0;
for (int index = 0; index < 100; index++) {
if (numarray[index] < 20 && numarray[index] > 40) {
temparray[arrayindex] = numarray[index];
} arrayindex++;
}
cout << arrayindex << endl;
cout << temparray[arrayindex] << endl;
while (arrayindex <! 0) {
cout << temparray[arrayindex - 1] << endl;
}
}

整个项目:
#include <iostream> 
#include <fstream>
#include <time.h>
#include <stdlib.h>
#include <cstddef>
#include <array>


using namespace std;
ofstream randomData;
ifstream inputrandomData;
void randomgenerator();
void read(int *numarray);
void printArray(int *numarray);
void searchArray(int* numarray);
void Delete(int* numarray, int* temparray);


void randomgenerator() {
srand(time(0));
randomData.open("randomData.txt");
for (int counter = 0; counter < 100; counter++) {
randomData << rand() % 100+1 << endl;
}
randomData.close();

}


void read(int *numarray) {
inputrandomData.open("randomData.txt");

for (int i = 0; i < 100; i++) {
inputrandomData >> numarray[i];

}
inputrandomData.close();

}



void printArray(int *numarray) {

for (int index = 0; index < 100; index++) {
cout << numarray[index] << endl;
}

}

void searchArray(int* numarray) {
int searchedArray[6] = {};
for (int index=0; index < 100; index++) {
if (numarray[index] > searchedArray[0]) {
searchedArray[0] = numarray[index];
searchedArray[1] = index;

}
}
for (int index = 0; index < 100; index++) {
if (numarray[index] > searchedArray[2] && numarray[index] < searchedArray[0]) {
searchedArray[2] = numarray[index];
searchedArray[3] = index;
}
}

for (int index = 0; index < 100; index++) {
if (numarray[index] > searchedArray[4] && numarray[index] < searchedArray[2]) {
searchedArray[4] = numarray[index];
searchedArray[5] = index;
}
}
cout << "Largest Number: " << searchedArray[0] << " " << "Index: " << searchedArray[1] << endl;
cout << "Second Largest Number: " << searchedArray[2] << " " << "Index: " << searchedArray[3] << endl;
cout << "Third Largest Number: " << searchedArray[4] << " " << "Index: " << searchedArray[5] << endl;

}

void Delete(int* numarray, int *temparray) {

int arrayindex = 0;
for (int index = 0; index < 100; index++) {
if (numarray[index] < 20 && numarray[index] > 40) {
temparray[arrayindex] = numarray[index];
} arrayindex++;
}
cout << arrayindex << endl;
cout << temparray[arrayindex] << endl;
while (arrayindex <! 0) {
cout << temparray[arrayindex - 1] << endl;
}
}


int main() {
int numarray[100] = {};
int temparray[100] = {};
randomgenerator();
read(numarray);
printArray(numarray);
searchArray(numarray);
Delete(numarray, temparray);

return 0;
}

最佳答案

这是提示我提出的解决方案。有几个逻辑缺陷。
首先,我的条件永远不会成立,因为我使用了&&运算符,这意味着该数字必须小于20并且大于40。将其更改为||。运算符(operator)检查一个或另一个。然后,如评论中所述,我一直在通过创建另一个数组来考虑它。您必须具有两个不同的索引计数器才能读取原始数据集,并将新数据集写入其后。现在,当运行时,numarray会在numarray[arrayindex]处获取值,仅在调用条件语句时该值才会增加,并从numarray[index]读取,该值在每个for循环中都会增加。这是下面的编辑功能:

void Delete(int* numarray) {

int arrayindex = 0;
for (int index = 0; index < 100; index++) {
if (numarray[index] < 20 || numarray[index] > 40) {
numarray[arrayindex] = numarray[index];
arrayindex++;
}
}
cout << arrayindex << endl;
for (int newindex = 0; newindex < arrayindex; newindex++) {
cout << numarray[newindex] << endl;
}
}

我从程序中完全删除了 temparray。谢谢您的帮助。

关于c++ - 从另一个数组中将值写入另一个数组,排除不需要的值c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60087442/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com