10 Август 2011 – 18:58 | 40 пікір

Құрметті ИНФОРМАТИКТЕР!
Cайтымыз сіздердің арқаларыңызда, аз уақытта Қазақстандағы ең танымал сайттардың біріне айналып келеді. Кейбір қазақ тілді сайттар өз контенттерін біздің сайтқа қарап өзгертіп қолданушыларын да көбейтті. Біздің үлгімізбен біршама жаңа сайттар ашылды. Соған қарағанда Информатик …

Толығырақ »
Информатика

Бәрі информатикаға байланысты

Педагогика

Тәлім-тәрбиеге байланысты материалдар

Басқа пәндер

Ұстаздар шығармашылығы

Оқушылар шығармашылығы

Басты бет » Паскаль туралы

Информатика 2010-2011. Олимпиада есептері шығарылуымен.

Опубликовал Мұқаметжан Жақаев в 24 Август 2011 – 18:061 пікір
Бұл мақала 10946 рет оқылды, 7 рет бүгін

F есебі минималды қосынды

Матемтаика сабағында мұғалім N сан жазды. Соңғы партада отырған Бахытжан, тізбектегі қатар жазылған сандардың минималды қосындысы қаншаға тең болатыны жайлы ойланып қалды. Бақытжанға көмектесіңіз, керекті санды қосындыны табатын бағдарламаны жазыңыз.

І-тур

А есебіProgram bakytty_kun;
var
a,b,c,d,e,y,z:integer; {е-akpan}
BEGIN
write(‘ai (01-kantar, 02-akpan…)- ‘);
readln(a);
write(‘kun - ‘);
readln(b);
write(‘jyl (от 1901 до 2099) - ‘);
readln(c);
write(‘apta kuni (1-duisembi, 2-seisembi…)- ‘);
readln(d);
IF(c mod 4=0) THEN e:=29 ELSE e:=28; {vicokosnyi jyldy tekseru}
Case (a) of
1: z:= (b-1) mod 7;
2: z:= (31 + (b-1)) mod 7;
3: z:= (31 + e + (b-1)) mod 7;
4: z:= (62 + e + (b-1)) mod 7;
5: z:= (92 + e + (b-1)) mod 7;
6: z:= (123 + e + (b-1)) mod 7;
7: z:= (153 + e + (b-1)) mod 7;
8: z:= (184 + e + (b-1)) mod 7;
9: z:= (215 + e + (b-1)) mod 7;
10: z:= (245 + e + (b-1)) mod 7;
11: z:= (276 + e + (b-1)) mod 7;
12: z:= (306 + e + (b-1)) mod 7;
13: z:= (337 + e + (b-1)) mod 7;
end;
y:=d+z;
case (y) of
1,8: write (b,’.',a,’.',c,’ - ‘,’duisembi’);
2,9: write (b,’.',a,’.',c,’ - ‘,’seisembi’);
3,10: write (b,’.',a,’.',c,’ - ‘,’sarsembi’);
4,11: write (b,’.',a,’.',c,’ - ‘,’beisembi’);
5,12: write (b,’.',a,’.',c,’ - ‘,’juma’);
6,13: write (b,’.',a,’.',c,’ - ‘,’sembi’);
7,14: write (b,’.',a,’.',c,’ - ‘,’jeksembi’);
end;
end. 

9-сынып, І-тур

А есебі

program  stroka;
var s,s1,s2:string;
i,j:integer;
begin
s1:=”;
write(‘matin engiz ‘); read(s);
writeln(‘s = ‘,s);
for i:=1 to length(s) do
if s[i] in ['0'..'9'] then s1:=s1+s[i];
for i:=1 to length(s1) do
s2:=s2+s1[(length(s1)-i+1)];
j:=1;
for i:=1 to length(s) do
if s[i] in ['0'..'9'] then begin s[i]:=s2[j];j:=j+1;end;
writeln(‘keri sandar s = ‘,s);
end.

В есебі.program tizbek;
var i,n,l:longint;
s:string; label 10;
begin
writeln(‘san tizbegin engiz ‘); read(s);
writeln(‘retin engiz ‘);  read(n);
l:=length(s);
for i:=1 to l do
if i=n then begin write(s[n]); goto 10; end;
10:end. 

С есебі.

program angime;
var i,j,n,l,s:integer;
soz:array[1..1000] of string;
procedure story;
begin
l:=length(soz[i]);
for j:=i to l-5 do
if ‘story’=copy(soz[i],j,5) then s:=s+1;
end;
begin
s:=0;
write(‘kansha jol ‘);read(n);
writeln(‘matin joldaryn engiz ‘);
for i:=1 to n do read(soz[i]);
for i:= 1 to n do story;
writeln(‘story matini ‘,s,’ ret kezdesedi ‘);
end.

F есебі минималды қосынды

Матемтаика сабағында мұғалім N сан жазды. Соңғы партада отырған Бахытжан, тізбектегі қатар жазылған сандардың минималды қосындысы қаншаға тең болатыны жайлы ойланып қалды. Бақытжанға көмектесіңіз, керекті санды қосындыны табатын бағдарламаны жазыңыз.

Мәліметтерді енгізу форматы:

Енгізу файлдың бірінші жолында n - сандардың саны берілген (1 <= n <= 1000). Екінші жолда әрқайсысы модулі бойынша 1 000 000 000 -дан аспайтын  n сан беріледі.

Мәліметтерді шығару форматы

Ұатар жазылған сандардың минмиалды қосындысын шығарыңыз
Мысал:

F.in F.out Түсініктеме

-7 10 -2 -3 4 -7 1

-8 Қатар жазлыған сандардың минимал қосындысы 3-орыннан басталып 6-орынмен а\қталады: (-2)+(-3)+4+(-7)=-8

Бағадарлау иеясы:

Алгоритм екі бөлімнен тұрады. Алдымен сол шеттен бастап оң жақ ештке дейін қосындылаймыз. Әр циклде оң жақ щет бір орынға кеміп (k2:=n-i+k+1;) отырады.  k1=k2 болғанда оң жақ шетті бір орын кемітіп тағы да қосындылаймыз. Бұл жолы да әр цикл сайын оң жақ шет бір орынға кеміп (k2:=n-i+k+1;) отырады.

Тізбекті сол жақтағы 1-ші (k1) саннан бастап оң жақ шеттегі соңғы санға (k2) дейін қосып шығамыз, нәтижені S (procedure sum ;) деп аламыз

Тізбекті сол жақтағы 1-ші (k1) саннан бастап оң жақтағы соңғының алдындағы санға дейін (k2:=n-i+k+1;) нәтижені min деп аламыз.

Егер  min>s онда min:=s деп өзгертеміз

Осылайша k1=k2 болғанша жалғастырамыз. Еегер k1=k2 болса k:=k+1  k1:=k; операторларын орындап, сол жақтағы келесі саннан бастап осы алгоритмді бірінші жолдан бастап орындаймыз.

program mini_kosyndy;
var i,k1,k2,j,k,min,s:integer;
n:longint;
a:array[1..1000000] of longint;
procedure sum;
begin
s:=0;
for j:=k1 to k2 do s:=s+a[j];
end;
begin
write(‘kansha san n= ‘);  read(n);
writeln(‘Sandar kataryn engiz ‘);
for i:=1 to n do Read(a[i]);
k:=1;min:=0;s:=0;i:=1;
while i<=2*n do
begin
if min>s then min:=s;
k1:=k; k2:=n-i+k+1;if k1=k2 then begin k:=k+1; i:=k;end;
sum;
i:=i+1;
end;
writeln(‘minsumma= ‘,min);
end.

ІІ-тур.Е есебі. 

program  ademi_takyryp;
var s:string; i,m,l2:integer; label 20,30;
procedure zhai_san;
var j,k:integer; label 10;
begin k:=2;
for j:=2 to Trunc(i/2) do
begin
if i mod j =0 then k:=k+1;
if k>2 then begin k:=2;l2:=0;goto 10;end;
end;
l2:=i; 10:end;
begin write(‘Soz engiz ‘); read(s);
m:=length(s);
if (m=2) or (m=3) then writeln(‘ademi_takyryp: ‘,s);goto 20;
i:=4; l2:=0;
while i<=m do
begin
zhai_san;
if l2=0 then goto 30;
writeln(‘ademi_takyryp: ‘,Copy(s,1,l2));goto 20;
30:i:=i+1;
end;
20:end.

F есебіprogram  mini_kosyndy;
var i,k1,k2,j,k,min,s:integer;
n:longint;
a:array[1..1000000] of longint;
procedure sum;
begin
s:=0;
for j:=k1 to k2 do s:=s+a[j];
end;
begin
write(‘kansha san n= ‘);  read(n);
writeln(‘Sandar kataryn engiz ‘);
for i:=1 to n do Read(a[i]);
k:=1;min:=0;s:=0;i:=1;
while i<=2*n do
begin
if min>s then min:=s;
k1:=k; k2:=n-i+k+1;if k1=k2 then begin k:=k+1; i:=k;end;
sum;
i:=i+1;
end;
writeln(‘min=’,min);
end.
D есебі.program  kinoteatr;
var i,n:integer;
k,l:longint;
begin
write(‘kinoteatr sany ‘); read(n);
for i:=1 to n do
begin  writeln;
write(‘katar sany ‘); read(k);
write(‘katardagy oran sany ‘);read(l); writeln;
if ((k mod 2)=1) and ((l mod 2)=1) then Write(‘ GOOD’)
else Write(‘ NOT GOOD’);
end;
end.

Ұқсас тақырыптар:

1 пікір »

Оставьте комментарий

Добавьте комментарий ниже или обратную ссылку со своего сайта. Вы можете также подписаться на эти комментарии по RSS.

Всего хорошего. Не мусорите. Будьте в топе. Не спамьте.

Вы можете использовать коды HTML:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

На сайте используются Gravatar. Чтобы его получить зарегистрируйтесь Gravatar.