пятница, 27 января 2017 г.

Факультатив 10-11 класс_ЕГЭ_Задание С1

1. Дано целое по­ло­жи­тель­ное число N. Не­об­хо­ди­мо опре­де­лить наи­мень­шее целое число K, для ко­то­ро­го вы­пол­ня­ет­ся не­ра­вен­ство:

1 + 2 + … + K > N.
Для ре­ше­ния этой за­да­чи уче­ник на­пи­сал про­грам­му, но, к со­жа­ле­нию, его про­грам­ма не­пра­виль­ная.
Ниже эта про­грам­ма для Ва­ше­го удоб­ства при­ве­де­на на пяти язы­ках про­грам­ми­ро­ва­ния.



Бей­сикPython
DIM N, K AS INTEGER
INPUT N
K = 1
WHILE N > 0
  N = N - K
  K = K + 1
WEND
PRINT K
END
n = int(input())
k = 1
while n>0:
  n = n - k
  k = k + 1
print(k)
Пас­кальАл­го­рит­ми­че­ский язык
var n, k: integer;
begin
  read(n);
  k := 1;
  while n>0 do begin
    n := n- k;
    k := k + 1;
  end;
  writeln(k)
end.
алг
нач
  цел n, k
  ввод n
  k := 1
  нц пока n>0
    n := n - k
    k := k + 1
  кц
  вывод k
кон
Си
#include <stdio.h>
int main(){
int n, k;
scanf("%d",&n);
k = 1;
while (n>0) {
n = n - k;
k = k + 1;
}
printf("%d", k);
return 0;
}

По­сле­до­ва­тель­но вы­пол­ни­те сле­ду­ю­щее.
1. При­ве­ди­те при­мер числа N, при вводе ко­то­ро­го про­грам­ма вы­ве­дет не­вер­ный ответ. Ука­жи­те вер­ный ответ и ответ, ко­то­рый вы­ве­дет про­грам­ма.
2. При­ве­ди­те при­мер числа N, при вводе ко­то­ро­го про­грам­ма вы­ве­дет вер­ный ответ. Ука­жи­те этот ответ.
3. Най­ди­те в про­грам­ме все ошиб­ки (их может быть одна или не­сколь­ко). Для каж­дой ошиб­ки вы­пи­ши­те стро­ку, в ко­то­рой она до­пу­ще­на, и при­ве­ди­те эту же стро­ку в ис­прав­лен­ном виде.
До­ста­точ­но ука­зать ошиб­ки и спо­соб их ис­прав­ле­ния для од­но­го языка про­грам­ми­ро­ва­ния.
Об­ра­ти­те вни­ма­ние: Вам нужно ис­пра­вить при­ведённую про­грам­му, а не на­пи­сать свою. Вы мо­же­те толь­ко за­ме­нять оши­боч­ные стро­ки, но не мо­же­те уда­лять стро­ки или до­бав­лять новые. За­ме­нять сле­ду­ет толь­ко оши­боч­ные стро­ки: за ис­прав­ле­ния, внесённые в стро­ки, не со­дер­жа­щие оши­бок, баллы будут сни­жать­ся.
2. Тре­бо­ва­лось на­пи­сать про­грам­му, при вы­пол­не­нии ко­то­рой с кла­ви­а­ту­ры счи­ты­ва­ет­ся на­ту­раль­ное число N, не пре­вос­хо­дя­щее 109, и вы­во­дит­ся мак­си­маль­ная цифра этого числа. Про­грам­мист то­ро­пил­ся и на­пи­сал про­грам­му не­пра­виль­но. (Ниже для Ва­ше­го удоб­ства про­грам­ма пред­став­ле­на на четырёх язы­ках про­грам­ми­ро­ва­ния.)


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

DIM N AS LONG
INPUT N
max_digit = 9
WHILE N >= 10
    digit = N MOD 10
    IF digit > max_digit THEN
        max_digit = digit
    END IF
    N = N \ 10
WEND
PRINT max_digit
END
var N: longint;
    digit, max_digit: integer;
begin
    readln(N);
    max_digit := 9;
    while N >= 10 do
    begin
        digit := N mod 10;
        if digit > max_digit then
            max_digit := digit;
        N := N div 10;
    end;
    writeln(max_digit);
end.
СиАл­го­рит­ми­че­ский

#include <stdio.h>
int main()
{
    long int N;
    int digit, max_digit;
    scanf("%ld", &N);
    max_digit = 9;
    while (N >= 10)
    {
        digit = N % 10;
        if (digit > max_digit)
            max_digit = digit;
        N = N /10;
    }
    printf("%d", max_digit);
}
алг
нач
    цел N, digit, max_digit
    ввод N
    max_digit := 9
    нц пока N >= 10
        digit := mod(N, 10)
        если digit > max_digit то
            max_digit := digit
        все
        N := div(N, 10)
    кц
    вывод max_digit
кон

По­сле­до­ва­тель­но вы­пол­ни­те сле­ду­ю­щее.
1. На­пи­ши­те, что вы­ве­дет эта про­грам­ма при вводе числа 423.
2. Най­ди­те все ошиб­ки в этой про­грам­ме (их может быть одна или не­сколь­ко). Для каж­дой ошиб­ки:
1) вы­пи­ши­те стро­ку, в ко­то­рой сде­ла­на ошиб­ка;
2) ука­жи­те, как ис­пра­вить ошиб­ку, — при­ве­ди­те пра­виль­ный ва­ри­ант стро­ки.
Об­ра­ти­те вни­ма­ние, что тре­бу­ет­ся найти ошиб­ки в име­ю­щей­ся про­грам­ме, а не на­пи­сать свою, воз­мож­но, ис­поль­зу­ю­щую дру­гой ал­го­ритм ре­ше­ния. Ис­прав­ле­ние ошиб­ки долж­но за­тра­ги­вать толь­ко стро­ку, в ко­то­рой на­хо­дит­ся ошиб­ка.
3. Тре­бо­ва­лось на­пи­сать про­грам­му, при вы­пол­не­нии ко­то­рой с кла­ви­а­ту­ры счи­ты­ва­ет­ся на­ту­раль­ное число N, не пре­вос­хо­дя­щее 109, и вы­во­дит­ся про­из­ве­де­ние цифр этого числа. Про­грам­мист то­ро­пил­ся и на­пи­сал про­грам­му не­пра­виль­но. (Ниже для Ва­ше­го удоб­ства про­грам­ма пред­став­ле­на на четырёх язы­ках про­грам­ми­ро­ва­ния.)



Бэй­сикПас­каль
DIM N AS LONG
DIM product AS LONG
INPUT N
product = N mod 10
WHILE N >= 10
    digit = N MOD 10
    product = product*digit
    N = N \ 10
WEND
PRINT product
END
var N, product: longint;
    digit: integer;
begin
    readln(N);
    product := N mod 10;
    while N >= 10 do
    begin
        digit := N mod 10;
        product := product*digit;
        N := N div 10;
    end;
    writeln(product);
end.
СиАл­го­рит­ми­че­ский язык

#include <stdio.h>
int main()
{
    long int N, product;
    int digit;
    scanf("%ld", &N);
    product = N % 10;
    while (N >= 10)
    {
        digit = N % 10;
        product = product*digit;
        N = N / 10;
    }
    printf("%ld", product);
}
алг
нач
    цел N, digit, product
    ввод N
    product := mod(N, 10)
    нц пока N >= 10
        digit := mod(N, 10)
        product := product*digit
        N := div(N, 10)
    кц
    вывод product
кон

По­сле­до­ва­тель­но вы­пол­ни­те сле­ду­ю­щее.
1. На­пи­ши­те, что вы­ве­дет эта про­грам­ма при вводе числа 532.
2. Най­ди­те все ошиб­ки в этой про­грам­ме (их может быть одна или не­сколь­ко). Для каж­дой ошиб­ки:
1) вы­пи­ши­те стро­ку, в ко­то­рой сде­ла­на ошиб­ка;
2) ука­жи­те, как ис­пра­вить ошиб­ку, — при­ве­ди­те пра­виль­ный ва­ри­ант стро­ки.

Об­ра­ти­те вни­ма­ние, что тре­бу­ет­ся найти ошиб­ки в име­ю­щей­ся про­грам­ме, а не на­пи­сать свою, воз­мож­но, ис­поль­зу­ю­щую дру­гой ал­го­ритм ре­ше­ния. Ис­прав­ле­ние ошиб­ки долж­но за­тра­ги­вать толь­ко стро­ку, в ко­то­рой на­хо­дит­ся ошиб­ка.
4. Тре­бо­ва­лось на­пи­сать про­грам­му, при вы­пол­не­нии ко­то­рой с кла­ви­а­ту­ры счи­ты­ва­ет­ся на­ту­раль­ное число N, не пре­вос­хо­дя­щее 109, и вы­во­дит­ся ко­ли­че­ство цифр этого числа. Про­грам­мист то­ро­пил­ся и на­пи­сал про­грам­му не­пра­виль­но. (Ниже для Ва­ше­го удоб­ства про­грам­ма пред­став­ле­на на четырёх язы­ках про­грам­ми­ро­ва­ния.)


















Бей­сикПас­каль
DIM N AS LONG
INPUT N
sum = 1
WHILE N > 1
N = N \ 10
sum = sum + 1
WEND
PRINT sum
END
var N: longint;
sum: integer;
begin
readln(N);
sum := 1;
while N > 1 do
begin
N := N div 10;
sum := sum + 1;
end;
writeln(sum);
end.
СиАл­го­рит­ми­че­ский
#include<stdio.h>
int main()
{
long int N;
int sum;
scanf("%ld", &N);
sum = 1;
while (N > 1)
{
N = N /10;
sum = sum + 1;
}
printf("%d", sum);
}
алг
нач
цел N, sum
ввод N
sum := 1
нц пока N > 1
N := div(N, 10)
sum := sum + 1
кц
вывод sum
кон


По­сле­до­ва­тель­но вы­пол­ни­те сле­ду­ю­щее.

1. На­пи­ши­те, что вы­ве­дет эта про­грам­ма при вводе числа 938.
2. Ука­жи­те одно число для ко­то­ро­го эта про­грам­ма будет ра­бо­тать верно.
3. Най­ди­те все ошиб­ки в этой про­грам­ме (их может быть одна или не­сколь­ко). Ука­жи­те все стро­ки (одну или более), со­дер­жа­щие ошиб­ки, и для каж­дой такой стро­ки при­ве­ди­те пра­виль­ный ва­ри­ант. Об­ра­ти­те вни­ма­ние, что тре­бу­ет­ся найти ошиб­ки в име­ю­щей­ся про­грам­ме, а не на­пи­сать свою, воз­мож­но, ис­поль­зу­ю­щую дру­гой ал­го­ритм ре­ше­ния. Ис­прав­ле­ние ошиб­ки долж­но за­тра­ги­вать толь­ко стро­ку, в ко­то­рой на­хо­дит­ся ошиб­ка.
5. Тре­бо­ва­лось на­пи­сать про­грам­му, ко­то­рая вво­дит с кла­ви­а­ту­ры ко­ор­ди­на­ты точки на плос­ко­сти (x, y — дей­стви­тель­ные числа) и опре­де­ля­ет при­над­леж­ность точки за­штри­хо­ван­ной об­ла­сти (вклю­чая гра­ни­цы). Про­грам­мист то­ро­пил­ся и на­пи­сал про­грам­му не­пра­виль­но. Ниже для Ва­ше­го удоб­ства про­грам­ма пред­став­ле­на на четырёх язы­ках про­грам­ми­ро­ва­ния.
Бей­сикПас­каль
INPUT x, y
IF y<=1 THEN
IF y>=x THEN
IF x>=-1 THEN
IF x*x+y*y<=1 THEN
PRINT "при­над­ле­жит"
ELSE
PRINT "не при­над­ле­жит"
END IF
END IF
END IF
END IF
END
var x,y: real;
begin
readln(x,y);
if y<=1 then
if y>=x then
if x>=-1 then
if x*x+y*y<=1 then
write('при­над­ле­жит')
else
write('не при­над­ле­жит');
end.
СиАл­го­рит­ми­че­ский
#include<stdio.h>
void main()
{
float x,y;
scanf("%f%f",&x,&y);
if (y<=1)
if (y>=x)
if (x>=-1)
if (x*x+y*y<=1)
printf("при­над­ле­жит");
else
printf("не при­над­ле­жит");
}

алг
нач
вещ x,y
ввод x,y
если y<=1 то
если y>=x то
если x>=-1 то
если x*x+y*y<=1 то
вывод 'при­над­ле­жит'
иначе
вывод 'не при­над­ле­жит'
все
все
все
все
кон


По­сле­до­ва­тель­но вы­пол­ни­те сле­ду­ю­щее.

1. Пе­ре­ри­суй­те и за­пол­ни­те таб­ли­цу, ко­то­рая по­ка­зы­ва­ет, как ра­бо­та­ет про­грам­ма при ар­гу­мен­тах, при­над­ле­жа­щих раз­лич­ным об­ла­стям (A, B, C, D, E, F, G, H, I, J, K). Точки, ле­жа­щие на гра­ни­цах об­ла­стей, от­дель­но не рас­смат­ри­вать. Ко­ор­ди­нат­ные оси не яв­ля­ют­ся гра­ни­ца­ми об­ла­стей. В столб­цах усло­вий ука­жи­те «да», если усло­вие вы­пол­нит­ся, «нет», если усло­вие не вы­пол­нит­ся, «—» (про­черк), если усло­вие не будет про­ве­рять­ся, «не изв.», если про­грам­ма ведёт себя по-раз­но­му для раз­ных зна­че­ний, при­над­ле­жа­щих дан­ной об­ла­сти. В столб­це «Про­грам­ма вы­ве­дет» ука­жи­те, что про­грам­ма вы­ве­дет на экран. Если про­грам­ма ни­че­го не вы­во­дит, на­пи­ши­те «—» (про­черк). Если для раз­ных зна­че­ний, при­над­ле­жа­щих об­ла­сти, будут вы­ве­де­ны раз­ные тек­сты, на­пи­ши­те «не изв.». В по­след­нем столб­це ука­жи­те «да» или «нет».

Об­ластьУсло­вие1 (y<=1)Усло­вие 2 (y>=x)Усло­вие 3
(x>=−1)
Усло­вие 4 (x*x+y*y<=1)Про­грам­мавы­ве­детОб­ластьоб­ра­ба­ты­ва­ет­ся
верно
A
В
С
D
Е
F
G
Н
I
J
K
2. Ука­жи­те, как нужно до­ра­бо­тать про­грам­му, чтобы не было слу­ча­ев её не­пра­виль­ной ра­бо­ты. (Это можно сде­лать не­сколь­ки­ми спо­со­ба­ми, до­ста­точ­но ука­зать любой спо­соб до­ра­бот­ки ис­ход­ной про­грам­мы.)

Комментариев нет:

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