menu
person

Задача №2900

Дан мас­сив, со­дер­жа­щий 2014 не­от­ри­ца­тель­ных целых чисел, не п

Поиск задачи:

Дан мас­сив, со­дер­жа­щий 2014 не­от­ри­ца­тель­ных целых чисел, не пре­вы­ша­ю­щих 10 000. Опи­ши­те на одном из язы­ков про­грам­ми­ро­ва­ния ал­го­ритм, поз­во­ля­ю­щий найти и вы­ве­сти сумму всех со­дер­жа­щих­ся в мас­си­ве трёхзнач­ных чисел, де­ся­тич­ная за­пись ко­то­рых окан­чи­ва­ет­ся на 9, но не на 99. Если под­хо­дя­щих чисел в мас­си­ве нет, про­грам­ма долж­на вы­ве­сти число –1. Ис­ход­ные дан­ные объ­яв­ле­ны так, как по­ка­за­но ниже. За­пре­ща­ет­ся ис­поль­зо­вать пе­ре­мен­ные, не опи­сан­ные ниже, но раз­ре­ша­ет­ся не ис­поль­зо­вать часть из опи­сан­ных.

 

 

Пас­каль Бей­сик

 

const N=2014; 
var a : array [1..N] of integer; 
 i, j, s: integer; 
begin 
 for i:=1 to N do 
 readln(a[i]); 
 … 
end.

 

 

N=2014 
DIM A(N) AS INTEGER 
DIM I, J, S AS INTEGER 
FOR I = 1 TO N 
 INPUT A(I) 
NEXT I 
… 
END

 

Си Ал­го­рит­ми­че­ский

 

#include <stdio.h> 
#define N 2014 
void main() 
{ 
 int a[N]; 
 int i, j, s; 
 for (i=0; i scanf("%d", &a[i]); 
 … 
}

 

 

алг
нач
 цел N=2014 
 цел­таб a[1:N] 
 цел i, j, s 
 нц для i от 1 до N 
 ввод a[i] 
кц
 … 
кон

 

 

В ка­че­стве от­ве­та Вам не­об­хо­ди­мо при­ве­сти фраг­мент про­грам­мы, ко­то­рый дол­жен на­хо­дить­ся на месте мно­го­то­чия. Вы мо­же­те за­пи­сать ре­ше­ние также на дру­гом языке про­грам­ми­ро­ва­ния (ука­жи­те на­зва­ние и ис­поль­зу­е­мую вер­сию языка про­грам­ми­ро­ва­ния, на­при­мер, Free Pascal 2.4) или в виде блок-схемы. В этом слу­чае Вы долж­ны ис­поль­зо­вать те же самые ис­ход­ные дан­ные и пе­ре­мен­ные, какие были пред­ло­же­ны в усло­вии.

 

По­яс­не­ние.

Про­грам­ма про­смат­ри­ва­ет все числа в мас­си­ве, для каж­до­го числа про­ве­ря­ет его со­от­вет­ствие усло­ви­ям и под­счи­ты­ва­ет сумму под­хо­дя­щих чисел. Если после окон­ча­ния про­смот­ра сумма равна нулю, зна­чит, под­хо­дя­щих чисел не было, в этом слу­чае сумму для вы­во­да нужно за­ме­нить на −1.

 

 

Пас­каль Ал­го­рит­ми­че­ский

S : = 0 ;

for i:=1 to N do begin

if (100<=a [i]) and (a[i]<=999) and

(a[i] mod 10 = 9) and (a [i] mod 100 <> 99) then s := s + a [ i] ;

end ;

if s=0 then s:=-1; writeln(s);

 

Можно ис­поль­зо­вать от­дель­ную пе­ре­мен­ную для подсчёта ко­ли­че­ства най­ден­ных эле­мен­тов.

 

S : = 0 j :=0

нц для i от 1 до N

если 100<=а [i] <=999 и mod(a[i] ДО) =9 и mod(a[i] ,100) <>99 то

s : = s + a [i] j := j+1

все

кц

если j =0

то вывод -1 иначе вывод s

все

 

 

До­пус­ка­ют­ся и дру­гие спо­со­бы ре­ше­ния, если они со­от­вет­ству­ют ука­зан­ным в усло­вии огра­ни­че­ни­ям и при­во­дят к пра­виль­но­му от­ве­ту.

 

 

Категория: по информатике | Добавил: Просмотров: 1 | Теги: Ал­го­рит­мы обработки массивов | Рейтинг: 0.0/0
Всего комментариев: 0