0
제 문제는 마지막 함수 print_valid_data입니다. 배열 A[]
에서 두 번째 최소값을 삭제해야합니다. 값이 삭제 된 후 배열의 요소는 비어 있어야하며 배열의 마지막 열린 자리는 비어 있어야합니다. 필자가 수행 한 작업에서 건너 뛴 다음 남은 것을 인쇄합니다. 나는 그것을 삭제하고 다음으로 이동함으로써 어떻게 할 수 있습니까?배열에서 요소를 제거한 다음 다른 요소를 이동하는 방법은 무엇입니까?
사이드 노트 : Var.h는 "const int NUM = 10"데이터 만있는 파일이므로 변경 될 수 있습니다. 이는 배열의 인덱스를위한 것입니다. "data.txt"파일에는 Load_file_to_array
함수를 사용하여 읽은 일부 정수 (프로그램 번호가 10보다 큰 숫자 또는 < 10 개의 숫자가 있음)가 있습니다.
#include <iostream>
#include "Var.h"
#include <fstream>
#include <string>
using namespace std;
void Load_File_To_Array(int A[], string filename, int size);
int Get_2nd_Smallest(int A[], int size);
void Print_valid_data(int A[], int SecondMin, int size);
int main()
{
int A[NUM];
int size = NUM;
int SecondMin = 0;
string filename = "Data.txt";
Load_File_To_Array(A, filename, size);
Get_2nd_Smallest(A, size);
Print_valid_data(A, SecondMin, size);
cout << endl;
system("Pause");
return 0;
}
void Load_File_To_Array(int A[], string filename, int size)
{
ifstream infile;
infile.open(filename);
cout << "The array is: ";
for (int i = 0; i < NUM; i++)
{
if (infile.eof())
break;
infile >> A[i];
cout << A[i] << ", ";
}
return;
}
int Get_2nd_Smallest(int A[], int size)
{
int Min = A[0];
int SecondMin = 0;
for (int i = 0; i < NUM; i++)
{
if (Min > A[i])
Min = A[i];
}
//Exchange-sort to sort the array in descending order
int j, k;
int counter;
for (j = 0; j < (size - 1); j++)
{
for (k = (j + 1); k < size; k++)
{
if (A[j] < A[k])
{
counter = A[j];
A[j] = A[k];
A[k] = counter;
}
}
}
for (int n = (NUM - 1); n > -1; n--)
{
SecondMin = A[n];
if (SecondMin >= 0)
{
SecondMin = A[n - 1];
break;
}
else;
}
cout << endl << "The minimum number is: " << Min << endl;
cout << "The second smallest integer is: " << SecondMin << endl;
return SecondMin;
}
void Print_valid_data(int A[], int SecondMin, int size)
{
cout << "The new array is: ";
for (int i = 0; i < size; i++)
{
if (A[i] != SecondMin)
{
cout << A[i] << ", ";
}
}
return;
}
이 잘 신속하고 더러운 방법은 인덱스를 잡아하는 것 두 번째로 작은 숫자를 찾은 다음 배열을 다시 반복하여 다음 위치의 값을 빈 곳에서 시작하여 다시 지정합니다. 배열의 끝에 도달하면 마지막 위치 인 null을 할당하면됩니다. –
지우기 방법이있는 벡터 컨테이너를 사용해보십시오. – Tracer
@Tracer 벡터를 사용할 수 있다는 것을 알고 있지만이 프로그램을 작성하는 방식이 아닙니다. –