برنامه ای بنویسید که مجموع عناصر چند آرایه را محاسبه کند.
دو عدد N و L را از ورودی دریافت کند. در n خط بعدی، در هر خط یک آرایه به طول L با مقادیر بین 1 تا 100 قرار دارد.
مجموع عناصر آرایه ها به روش معمولی به صورت زیر محاسبه می شود:
public static void main(String[] args) throws InterruptedException {
Scanner scanner= new Scanner(System.in);
// read N & L
int N= scanner.nextInt(), L= scanner.nextInt();
int[][] arrs= new int[N][L];
// read arrays
for (int i = 0; i < N; i++) {
for (int j = 0; j < L; j++) {
arrs[i][j]= scanner.nextInt();
}
}
long start= System.currentTimeMillis();
// calculate sum of arrays
int[] sum= Arrays.copyOf(arrs[0], arrs[0].length);
for (int i = 1; i < N; i++) {
// add curr array to sum array
for (int j = 0; j < L; j++) {
sum[j] += arrs[i][j];
}
}
// print final sum
System.out.printf("Total time: %d ms%nFinal sum: %s%n", System.currentTimeMillis()-start, Arrays.toString(sum));
}
ورودی نمونه:
3 4
1 2 3 4
2 3 4 5
5 6 7 8
خروجی نمونه:
Total time: 0 ms
Final sum: [8, 11, 14, 17]
حال برنامه ای بنویسید که همین عمل را با استفاده از چند نخ انجام دهد. خروجی یک تفاوت جزئی با خروجی بالا دارد و آن تعداد نخ های مورد استفاده است:
Total time: 0 ms with 3 threads
Final sum: [8, 11, 14, 17]
نکته ها:
- استفاده از آرایه یا collection ها آزاد است.
- از فایل برای خواندن ورودی استفاده کنید.
- استفاده از کلاس Thread توصیه می شود.
- چندین آرایه بزرگ در فایل ورودی قرار دهید و زمان مصرف شده توسط روش تک نخی و چند نخی را باهم مقایسه کنید.
ارسال تمرین:
- فرصت ارسال این تمرین تا روز چهارشنبه، 5 خرداد، ساعت 12:00 است.
- فرصت ارسال تمرین به هیچ عنوان تمدید نخواهد شد.
- عنوان ایمیل: برنامه نویسی پیشرفته، نام دانشجو، عنوان تمرین
- مثال: برنامه نویسی پیشرفته، علی بهرامی، تمرین دهم