int gas;
// Input Code
int user_code;
std::cout << std::endl;
std::cout << "Please enter the Code: ";
std::cin >> user_code;
std::cout << "The value you entered is " << user_code;
std::cout << std::endl;
int array1[16] = { 42011, 42017, 42029, 42045,
42091, 42101, 34001, 34005,
34007, 34009, 34011, 34015,
34033, 10001, 10003, 24015 }; // 0.2387 (23.87%)
int array2[45] = { 11001, 24003, 24510, 24005, 24009,
24013, 24017, 24019, 24021, 24025,
24027, 24029, 24031, 24033, 24035,
24037, 24041, 24043, 51510, 51013,
51043, 51047, 51600, 51059, 51610,
51061, 51069, 51630, 51099, 51107,
51683, 51685, 51153, 51157, 51177,
51179, 51187, 51840, 54003, 54027,
54037, 54065, 42001, 42055, 42133 }; //0.2710 (27.10%)
int * array1_search;
array1_search = std::find(array1, array1+ 16, user_code);
int * array2_search;
array2_search = std::find(array2, array2 + 45, user_code);
if (array1_search != array1+ 16) {
std::cout << "Codefound in Array1: " << *array1_search << '\n';
gas= 0.2387;
}
else if (array2_search != array2_search + 45) {
std::cout << "Code found in Array2: " << *array2_search << '\n';
gas= 0.2710;
}
else {
std::cout << "Not found \n";
gas= 0.1506;
}
위의 코드가 현재 코드입니다. 사용자가 변수 user_code 값을 입력하고 두 배열 array1 [16] 및 array2 [45]를 반복하려고합니다. 사용자 입력 값이 첫 번째 배열 1에있는 경우 0.2387의 가스를 할당하고 다른 배열 2에 입력 값이있는 경우 0.2710의 가스를 지정하고 어떤 배열에도없는 경우 가스는 0.1506이어야합니다.C++ 숫자에 대한 배열 검색 중 else 문을 찾을 수없는 경우 else 문을 트리거하지 않음
기본적으로 사용자 입력이 포함 된 배열에 따라 값을 지정하고 싶습니다. C++을 처음 접했을 때, 이것에 관해 가장 좋은 방법은 무엇입니까?
array1 또는 array2에있는 숫자를 입력하면 array1 또는 array2에있는 숫자가 올바르게 식별됩니다. 문제는 두 배열 중 하나가 아닌 else 문을 트리거하여 array2에있는 것으로 식별하는 숫자를 입력 할 때 발생합니다. 예를 들어, user_code로 12345를 입력하면 "Code found in Array2 : 0"이라고 표시됩니다. 나는 12345가 array2에 포함되어 있지 않다는 것을 안다. 왜 * array2_search가 0으로 할당되었는지 이해할 수 없다. user1 코드가 array1이나 array2에 들어 있지 않으면 else 문으로 간다.
'int'변수에는 분수가 없습니다. 매번 '가스'에 '0'을 지정합니다. – Barmar
'16'및 '45'와 같은 숫자를 모두 하드 코딩하지 마십시오. 명명 된 상수를 선언하십시오. – Barmar
'if (array1_search! = array1 + 16) {'- if (array1_search! = std :: end (array1))'를 사용하십시오. 또한 값으로 '45'와 같은 숫자를 사용하면 실수를하는 것이 매우 쉽습니다. 네가 '44'항목을 가지고 있고, 당신이 잘못 계산하고 45 항목이 있다고 생각하면 어떨까요? 코드는 여전히 컴파일되지만 잘못된 결과로 끝납니다. 대신 컴파일러가 계산하도록하십시오. 즉'int array2 [] = {whatever}; ' – PaulMcKenzie