標題:
202411新手3-陣列運算 (Array)
[打印本頁]
作者:
may
時間:
2024-12-25 23:24
標題:
202411新手3-陣列運算 (Array)
問題敘述 資訊老師最近在教陣列,為了讓大家練習陣列,他出了一道習題,要求大家撰寫一個程式,輸入兩個數列並儲存在兩個陣列中,然後按照下列規則進行運算:
1.第一輪處理第一個陣列。
2.自第二輪開始,如果上一輪的輸出是奇數,本輪處理第一個陣列;上輪的輸出是偶數,則處理第二個陣列。
3.處理陣列時,先檢查陣列的第一個數值是否可以被3整除。
3.1. 如果可以被3整除,則找到當前陣列的最大值(可能不只一個),輸出此值,然後把它們除以2(無條件捨去)。
3.2. 如果不能被 3 整除,則找到當前陣列的非 0 最小值(可能不只一個),輸出此值,然後把它們減去1。
4.重複步驟2到4,直到輸出0後停止。
[attach]20340[/attach]
評分說明 此題目測資分為兩組,每組測資有多筆測試資料,需答對該組所有測資才能獲得該組分數,各組詳細限制如下。
第一組 (20 分):確保同一列輸入的所有值均相同。
第二組 (80 分):無特別限制。
作者:
may
時間:
2024-12-27 12:21
#include <bits/stdc++.h>
using namespace std;
int main()
{
int A[5], B[5], last = 1;//預設最後的輸出是1,才能先處理第一輪
for (int i = 0; i < 5; ++i)
{
cin >> A[i];
}
for (int i = 0; i < 5; i++)
{
cin >> B[i];
}
while (1)
{
if (last % 2 == 1) // 處理第一個陣列
{
if (A[0] % 3 == 0) // 如果第一個數值可以被3整除
{
int max = 0;
for (int i = 0; i < 5; ++i) // 找到最大值
{
if (A[i] > max)
{
max = A[i];
}
}
cout << max << endl;
for (int i = 0; i < 5; i++) // 將他們除以2
{
if (A[i] == max)
{
A[i] /= 2;
}
}
last = max;
}
else // 如果第一個數值不能被3整除
{
int min = 2147483647;
for (int i = 0; i < 5; ++i) // 找到非0最小值
{
if (A[i] < min && A[i] != 0)
{
min = A[i];
}
}
cout << min << endl;
for (int i = 0; i < 5; ++i) // 將他們減去1
{
if (A[i] == min)
{
A[i] -= 1;
}
}
last = min;
}
}
else // 處理第二個陣列
{
if (B[0] % 3 == 0) // 如果第一個數值可以被3整除
{
int max = 0;
for (int i = 0; i < 5; ++i) // 找到最大值
{
if (B[i] > max)
{
max = B[i];
}
}
cout << max << endl;
for (int i = 0; i < 5; ++i) // 將他們除以2
{
if (B[i] == max)
{
B[i] /= 2;
}
}
last = max;
}
else // 如果第一個數值不能被3整除
{
int min = 2147483647;
for (int i = 0; i < 5; ++i) // 找到非0最小值
{
if (B[i] < min && B[i] != 0)
{
min = B[i];
}
}
cout << min << endl;
for (int i = 0; i < 5; ++i) // 將他們減去1
{
if (B[i] == min)
{
B[i] -= 1;
}
}
last = min;
}
}
if (last == 0)
{
break;
}
}
}
複製代碼
歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://istak.org.tw/seed/)
Powered by Discuz! 7.2