一、請利用 Python, Java, C#, C 和 C++五種程式語言的任一種程式語言,撰寫 一個包含 main()函式(function 或 method)且至少包含有一個子函式 (function 或 method)的完整程式,應用它來從一系列輸入的整數中找到 最大值。但必須要能有防呆機制,用於檢查使用者輸入是否為整數。如果 使用者輸入的是整數,程式將進行比較並找到最大值;如果輸入的不是整 數,程式將提示使用者輸入有誤,要求重新輸入。(25 分)
詳解 (共 2 筆)
詳解
C++
#include <iostream>
#include <vector>
#include <limits>
#include <vector>
#include <limits>
using namespace std;
int getMaxValue(const vector<int>& numbers) {
int max_value = numeric_limits<int>::min();
for (int number : numbers) {
if (number > max_value) {
max_value = number;
}
}
return max_value;
}
int max_value = numeric_limits<int>::min();
for (int number : numbers) {
if (number > max_value) {
max_value = number;
}
}
return max_value;
}
int main() {
vector<int> numbers;
string user_input;
vector<int> numbers;
string user_input;
while (true) {
cout << "Enter an integer (or type 'done' to finish): ";
cin >> user_input;
cout << "Enter an integer (or type 'done' to finish): ";
cin >> user_input;
if (user_input == "done") {
break;
}
break;
}
try {
int number = stoi(user_input);
numbers.push_back(number);
} catch (invalid_argument&) {
cout << "Invalid input. Please enter a valid integer." << endl;
}
}
int number = stoi(user_input);
numbers.push_back(number);
} catch (invalid_argument&) {
cout << "Invalid input. Please enter a valid integer." << endl;
}
}
if (!numbers.empty()) {
int max_value = getMaxValue(numbers);
cout << "The maximum value is: " << max_value << endl;
} else {
cout << "No valid integers were entered." << endl;
}
int max_value = getMaxValue(numbers);
cout << "The maximum value is: " << max_value << endl;
} else {
cout << "No valid integers were entered." << endl;
}
return 0;
}
}
PYTHON
def get_max_value(numbers):
return max(numbers)
return max(numbers)
def main():
numbers = []
while True:
user_input = input("Enter an integer (or type 'done' to finish): ")
if user_input.lower() == 'done':
break
try:
number = int(user_input)
numbers.append(number)
except ValueError:
print("Invalid input. Please enter a valid integer.")
numbers = []
while True:
user_input = input("Enter an integer (or type 'done' to finish): ")
if user_input.lower() == 'done':
break
try:
number = int(user_input)
numbers.append(number)
except ValueError:
print("Invalid input. Please enter a valid integer.")
if numbers:
max_value = get_max_value(numbers)
print(f"The maximum value is: {max_value}")
else:
print("No valid integers were entered.")
max_value = get_max_value(numbers)
print(f"The maximum value is: {max_value}")
else:
print("No valid integers were entered.")
if __name__ == "__main__":
main()
main()
詳解
使用C++,有錯誤敬請指教
#include<iostream>
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;
bool is_integer(string number){
return (number[0]=='-' || isdigit(number[0])) && all_of(number.begin()+1,number.end(), [](char c){
return (isdigit(c));
});
}
int main(){
vector<int> number;
string get_number;
while(true){
cout<<"請輸入整數:(輸入ENTER結束)"<<endl;
getline(cin,get_number);
if(get_number.empty()){
break;
}
if(is_integer(get_number)){
number.push_back(stoi(get_number));
} else cout<<"請輸入整數"<<endl;
}
if(!number.empty()){
auto it =max_element(number.begin(), number.end(),
[](int a, int b) { return a < b; });
cout<<"最大值是"<<*it;
} else cout<<"沒數字"<<endl;
return 0;
}
//
然後bool跟排序那兩段狗幹長的lambda看不懂也可以寫成這樣:
bool is_integer(string number){
return (number[0]=='-' || isdigit(number[0])) && all_of(number.begin()+1,number.end(), ::isdigit);
}
跟
sort(number.rbegin(),number.rend()); //從大排到小
cout<<"最大值是:"<<number[0];
比較短一點XD
輸出結果如下
