المپدیا

دانش‌نامه‌ی المپیاد کامپیوتر ایران

ابزار کاربر

ابزار سایت


سوالات المپیاد:دوره ی تابستان:دوره ی ۲۱:برنامه نویسی:سوال ۵

سوال ۵

تابع SumP قرارست دو اشاره‌گر به دو خانه از وسط یک آرایه از int را به‌عنوان آرگومان گرفته و حاصل‌جمع تمام مقادیر بین این دو خانه (با احتساب خود خانه‌ها) را برگرداند. این تابع را (با افزودن خطوطی در محل مشخص شده در کد زیر و بدون تغییر در سایر قسمت‌های کد) با زمان اجرای خطی در حالتی بنویسید که:

  1. شما مجاز به تعریف آرایه یا تابع جدیدی نمی‌باشید. الزامی هم ندارد P حتماً به اندیس کمتری نسبت به q اشاره کند.
  2. علاوه بر محدودیت‌های قسمت ۱، شما مجاز به استفاده از عملگرهای < یا یا > یا >= نیستید.
SumP.c
1.	#include <iostream>
2.	using namespace std;
3.	
4.	long long SumP(int *p, int *q) {
5.	// کد خود را در این قسمت بنویسید
6.	}
7.	
8.	int main() {
9.	int a[10];
10.	for (int i=0; i<10; i++)
11.	a[i] = 1000 + i;      
12.	cout << "sum is" << SumP(&a[2], &a[5]) << endl; // عدد ۴۰۱۴ باید چاپ شود  
13.	return 0;
14.	}

ابزار صفحه