Задания школьного тура олимпиады по информатике в 9 – 10 – 11 классе
2010 – 2011 учебный год
Задача №1. Найти наибольшее целое число из четырех введенных с клавиатуры.
Решение задачи №1
Program n1;
Uses Crt;
var
x,y,z,w:integer;
begin
writeln('Введите четыре целых числа');
write('x=');readln(x);
write('y=');readln(y);
write('z=');readln(z);
write('w=');readln(w);
if x < y then x := y;
if x < z then x := z;
if x < w then x := w;
writeln('Максимальное число = ', x);
end.
Задача №2. Написать программу, которая будет менять местами два введенных с клавиатуры слова. Слова разделены пробелом.
Тест. Введено «Иван Петров», результат «Петров Иван».
Решение задачи №2.
Решение, предложенное авторами олимпиады.
Program n2;
Uses Crt;
var
str, str2:string;
i:integer;
begin
writeln('Введите строку символов');
readln(str);
for i := 1 to length(str) do
if str[i] = ' ' then
begin
str2 := copy(str,1,i-1);
delete(str,1,i);
end;
writeln('Итоговая строка - ',str + ' '+ str2); readln;
end.
Мой вариант
Program n2;
Uses Crt;
var
str,str1, str2:string;
i:integer;
begin
write('Введите строку символов');readln(str);
i:=1;
while str[i]<>' ' do i:=i+1;
str1:=copy(str,1,i);
str2:=copy(str,i,length(str));
writeln('Итоговая строка - ',str2 + ' '+ str1); readln;
end.
Задача №3. Подсчитайте, сколько слов во введенном предложении начинается с буквы «w» .
Решение задачи №3
Program n3;
Uses Crt;
var
str:string;
x ,i:integer;
begin
writeln('Введите предложение');
readln(str);
x:=0;
for i:=1 to length(str) do
if (str[i]=' ') and (str[i+1]= 'w')then x:=x+1;
if str[1]='w' then
x:=x+1;
writeln(‘Количество слов в предложении начинающихся буквой «w» = ‘ , x);
end.
Задача №4. В массиве А[1..n], состоящем из целых чисел, найдите самую длинную последовательность идущих подряд нулей. Укажите начало и конец.
Решение задачи №4
program n5;
uses crt;
var a:array [1..10]of integer;
i,lmax,l,flag,nac,max_nac,con,max_con:integer;
begin
writeln('Введите элементы массива :) ;
for i:=1 to 10 do read (a[i]) ;
for i:=1 to 10 do write (a[i],' ' );
writeln;
lmax:=0;
l:=1;
flag:=0;
nac:=0;
con:=0;
if a[1]=0 then nac:=1;
for i:=1 to 9 do begin
if (a[i+1]<>0) and (a[i]=0)then con:=i;
if (a[i]=a[i+1]) and (a[i]=0) then
begin
if i>=2 then if (a[i-1]<>0) and (a[i]=0) then nac:=i;
l:=l+1;
flag:=1;
end
else begin
if l>lmax then begin
lmax:=l;
max_nac:=nac;
max_con:=con;
end;
l:=1;
end;
end;
if l>lmax then begin
lmax:=l;
max_nac:=nac;
max_con:=i+1;
end;
if flag=0 then writeln('0-нет') else begin
writeln('самая длинная последовательность 0 =',lmax);
writeln('начало 0 =',max_nac);
writeln('конец 0 =',max_con);
end;
end.