Ответ:
1.
program n1;
var
k, s: integer;
a: array [1..8] of integer;
begin
for k := 1 to 8 do readln(a[k]); // с клавиатуры вводится массив из 8
s := 0; элементов
for k := 1 to 8 do
if a[k] < 0 then s := s + a[1]; // в цикле 4 раза к s прибавляют 1-ый элемент
writeln(s); // выводится s
end.
Ответ: 4(т.к 1-ый элемент массива 1 и в нём 4 отрицательных элемента)
2.
Надо строку if a[k] < 0 then s := s + a[1];
Заменить на строку if a[k] < 0 then s := s + a[k];
Объяснение:
На чтение 3 мин Просмотров 1.1к. Опубликовано 25.04.2021
Вариант 1
1. Дан одномерный массив а из шести элементов:
1) Как объявить этот массив в программе, записанной на языке Паскаль?
2) Чему равно значение элемента массива с индексом 4?
3) Чему равно значение элемента массива а[а[4]]?
2. Программа обрабатывает одномерный целочисленный массив Dat:
Заполните трассировочную таблицу и определите, какие числа будут выведены в результате выполнения следующего фрагмента программы.
3. Дополнительное задание. Программисту было поручено написать программу нахождения суммы отрицательных элементов одномерного целочисленного массива. Программист разработал программу, но допустил в ней одну ошибку. Текст программы с ошибкой представлен ниже:
Каким окажется ответ после исполнения этой программы, если в качестве элементов массива будут введены числа 1,
Как исправить программу, чтобы она решала поставленную перед программистом задачу?
Вариант 2
1. Дан одномерный массив а из семи элементов:
1) Как объявить этот массив в программе, записанной на языке Паскаль?
2) Чему равно значение элемента массива с индексом 5?
3) Чему равно значение элемента массива а[а[5]]?
2. Программа обрабатывает одномерный целочисленный массив Dat:
Заполните трассировочную таблицу и определите, какие числа будут выведены в результате выполнения следующего фрагмента программы.
3. Дополнительное задание. В представленном фрагменте программы значения одномерного массива задаются с помощью следующего оператора цикла:
Какие значения будут присвоены элементам массива?
07.06.2019
5 июня Что порешать по физике
30 мая Решения вчерашних ЕГЭ по математике
На обработку поступает последовательность из четырёх целых чисел. Нужно написать программу, которая выводит на экран сумму всех отрицательных чисел последовательности и максимальное число в последовательности.
Известно, что вводимые числа по абсолютной величине не превышают 1000. Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на пяти языках программирования.
Бейсик | Python |
---|---|
for i in range(1, 5):
Алгоритмический язык
Паскаль
нц для i от 1 до 4
var s,i,x,mx: integer;
for i := 1 to 4 do
using namespace std;
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе последовательности -5 2 -4 3.
2. Приведите пример такой последовательности, содержащей хотя бы одно неотрицательное число, что, несмотря на ошибки, программа печатает правильный ответ.
3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т.е. приведите правильный вариант строки.
Достаточно указать ошибки и способ их исправления для одного языка программирования.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения.
Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Решение использует запись программы на Паскале. Допускается использование программы на трёх других языках.
1. Программа выведет два числа: -4 и 3.
2. Программа напечатает правильный ответ, например, для последовательности -4 7 8 9
3. Первая ошибка. Неверная инициализация максимума.
Строка с ошибкой:
Возможный вариант исправления:
4. Вторая ошибка. Неверно ведётся суммирование элементов.
int main() <
int n,m,k,cnt;
for (int i=0; i cout cout >n;
cout cin>>m; cnt=0;
for (int j=1; j cin>>k;
if (k>m) cnt++;
m=k;
>
cout >
system(“pause”);
return 0;
>
Nikitamce 0 / 0 / 0 Регистрация: 22.02.2021 Сообщений: 109 |
||||
1 |
||||
Что нужно исправить чтобы программа решили задачу08.04.2021, 22:15. Показов 1329. Ответов 7 Метки нет (Все метки)
Дана информация о среднесуточной температуре каждого дня месяца. Подсчитать среднемесячную температуру. Сколько раз столбик термометра опускался ниже нуля? Сколько раз среднесуточная температура держалась выше 10 градусов. P.s. Я пока написал формулы но она ссылается на ошибку Expexted ‘=’ but ‘(‘ found
0 |
ZX Spectrum-128 6805 / 4564 / 4817 Регистрация: 05.06.2014 Сообщений: 22,438 |
||||
09.04.2021, 07:51 |
2 |
|||
Сообщение было отмечено Nikitamce как решение Решение
1 |
0 / 0 / 0 Регистрация: 22.02.2021 Сообщений: 109 |
|
09.04.2021, 15:37 [ТС] |
3 |
ZX Spectrum-128, в среднемесячной температуре выходит число вроде 12.45e18. Как сделать чтобы выводилось обычное число без е?
0 |
mr-Crocodile 2866 / 1526 / 614 Регистрация: 19.03.2019 Сообщений: 5,089 |
||||||||
09.04.2021, 15:49 |
4 |
|||||||
1 |
0 / 0 / 0 Регистрация: 22.02.2021 Сообщений: 109 |
|
09.04.2021, 15:55 [ТС] |
5 |
mr-Crocodile, в делфи нет writeln. Поэтому мне выдаёт ошибку при вводе данных
0 |
Почетный модератор 64285 / 47584 / 32739 Регистрация: 18.05.2008 Сообщений: 115,182 |
|
09.04.2021, 15:59 |
6 |
в делфи нет writeln. А какого хрена Вас занесло в раздел Турбо Паскаль?
2 |
0 / 0 / 0 Регистрация: 22.02.2021 Сообщений: 109 |
|
09.04.2021, 16:10 [ТС] |
7 |
понимаю…. извините
0 |
mr-Crocodile 2866 / 1526 / 614 Регистрация: 19.03.2019 Сообщений: 5,089 |
||||
09.04.2021, 16:15 |
8 |
|||
mr-Crocodile, в делфи нет writeln. Поэтому мне выдаёт ошибку при вводе данных
понимаю не делай так больше.
1 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
09.04.2021, 16:15 |
Помогаю со студенческими работами здесь Не работает программа, что нужно исправить? Эта задача сделана по другой структуре, нужно исправить ее исправить на нормальную задачу delphi Что исправить в коде, чтобы он не выдавал ошибку. Нужно ссылаться на БД Access Что нужно исправить в программе чтобы элемент matrix1 в методе ShowMatrix существовал Как бы вы решили задачу? Есть несколько задач: Почему эти значение нельзя сравнить, и что нужно сделать, чтобы исправить ошибку? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 8 |
Порядок выполнения
-
Зайти в Borland
Pascal. -
Набрать текст программы
для решения задачи № 1 и получить ответ
(при
и;и). -
Исправить программу так,
чтобы она решала задачу без использования
слова else. -
Набрать текст программы
для решения задачи № 2 и получить ответ
(при
;;;). -
Исправить программу так,
чтобы она решала задачу без использования
оператора case.
Примеры задач
Задача 1. Вычислить величину . |
Задача 2. |
Program |
Program |
Var |
Var |
a,b,c:real; |
Begin |
Begin |
read(a); |
writeln(‘Введи |
case a of |
read(a,b); |
0: c:=2; |
if a>b |
1..10: c:=3; |
then |
-1,11: c:=4 |
else |
else c:=5 |
writeln(‘c=’,c:10:3); |
end; |
End. |
writeln(c); |
End. |
Дополнительное задание
-
Вычислить
-
Вычислить
при -
Вычислить
,
где -
Вычислить
где. -
Вычислить
,
где -
Вычислить
. -
Найти
-
Найти
Контрольные вопросы
-
Что такое алгоритм
линейной структуры? Перечислите
операторы, реализующие этот алгоритм. -
Что такое алгоритм
разветвляющейся структуры? Перечислите
операторы, реализующие этот алгоритм. -
Какой вид имеют составной
оператор и оператор присваивания, а
также что они означают? -
Какой вид имеют операторы
ввода и вывода, а также что они означают? -
Какой вид имеет оператор
безусловного и условного перехода, а
также что они означают? -
Какой вид имеет оператор
варианта и что он означает? -
Что такое метка, условие
и селектор? К каким типам данных
относятся эти понятия? -
Напишите, что означает
каждая строка в вышеприведённых
программах. -
Напишите программу к одной
из задач дополнительного задания.
Лабораторная работа № 3. Программирование циклов Алгоритм циклической структуры
Алгоритм
циклической структуры – алгоритм,
в котором производится многократное
повторение однотипных действий.
Цикл–
многократно повторяющийся участок
алгоритма. Цикл включает заголовок
цикла, тело цикла и конец цикла.
Циклы делятся
на:
1. Цикл
с предусловием(условие выхода из
цикла проверяется в начале перед
действиями в теле цикла).
2. Цикл
с постусловием(условие выхода из
цикла проверяется в конце после действий
в теле цикла).
3. Цикл
с параметром(цикл выполняется
фиксированное количество раз, определяемое
параметром цикла).
Для реализации
алгоритма циклической структуры в
языке Pascalиспользуются
следующие операторы:
1. Оператор
цикла с предусловиемимеет вид:
while
U
do
Op
где while– пока,do– делать, U– условие, Op– оператор.
Оператор
означает, что пока условие U
истинное, повторять оператор Op
в цикле; как только условие станет
ложным, выйти из цикла.
2. Оператор
цикла с постусловиемимеет вид:
repeat
Op1;
…
OpN
until
U
где repeat– повторять,until– до тех пор пока,
Op1– оператор 1-й,OpN– операторN-й,
U– условие.
Оператор
означает, что повторять операторы
Op1
и т.д., … OpN
в цикле до тех пор, пока условие U
не станет истинным; как только
условие станет истинным, выйти из цикла.
3. Оператор
цикла с параметром(при увеличении
параметра) имеет вид:
for Par
:= Nz
to Kz
do Op
где for– для,to– до,do– делать,Par– параметр цикла,Nz– начальное значение,Kz– конечное значение,Op– оператор.
Оператор
означает, что для параметра Par
, увеличивающегося от начального
значения Nz
до конечного значения Kz
с шагом 1,
повторять оператор Op
в цикле.
4. Оператор
цикла с параметром(при уменьшении
параметра) имеет вид:
for Par
:= Nz
downto Kz
do Op
где for– для,downto– вниз до,do– делать,Par– параметр цикла,Nz– начальное значение,Kz– конечное значение,Op– оператор.
Оператор
означает, что для параметра Par
, уменьшающегося от начального значения
Nz
до конечного значения Kz
с шагом (-1),
повторять оператор Op
в цикле.
Параметр
цикла (или счётчик циклов) –
переменная порядкового типа, которая
изменяется в цикле от начального до
конечного значения с каким-либо шагом.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
На чтение 3 мин Просмотров 1.1к. Опубликовано 25.04.2021
Вариант 1
1. Дан одномерный массив а из шести элементов:
1) Как объявить этот массив в программе, записанной на языке Паскаль?
2) Чему равно значение элемента массива с индексом 4?
3) Чему равно значение элемента массива а[а[4]]?
2. Программа обрабатывает одномерный целочисленный массив Dat:
Заполните трассировочную таблицу и определите, какие числа будут выведены в результате выполнения следующего фрагмента программы.
3. Дополнительное задание. Программисту было поручено написать программу нахождения суммы отрицательных элементов одномерного целочисленного массива. Программист разработал программу, но допустил в ней одну ошибку. Текст программы с ошибкой представлен ниже:
Каким окажется ответ после исполнения этой программы, если в качестве элементов массива будут введены числа 1,
Как исправить программу, чтобы она решала поставленную перед программистом задачу?
Вариант 2
1. Дан одномерный массив а из семи элементов:
1) Как объявить этот массив в программе, записанной на языке Паскаль?
2) Чему равно значение элемента массива с индексом 5?
3) Чему равно значение элемента массива а[а[5]]?
2. Программа обрабатывает одномерный целочисленный массив Dat:
Заполните трассировочную таблицу и определите, какие числа будут выведены в результате выполнения следующего фрагмента программы.
3. Дополнительное задание. В представленном фрагменте программы значения одномерного массива задаются с помощью следующего оператора цикла:
Какие значения будут присвоены элементам массива?
07.06.2019
5 июня Что порешать по физике
30 мая Решения вчерашних ЕГЭ по математике
На обработку поступает последовательность из четырёх целых чисел. Нужно написать программу, которая выводит на экран сумму всех отрицательных чисел последовательности и максимальное число в последовательности.
Известно, что вводимые числа по абсолютной величине не превышают 1000. Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на пяти языках программирования.
Бейсик | Python |
---|---|
for i in range(1, 5):
Алгоритмический язык
Паскаль
нц для i от 1 до 4
var s,i,x,mx: integer;
for i := 1 to 4 do
using namespace std;
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе последовательности -5 2 -4 3.
2. Приведите пример такой последовательности, содержащей хотя бы одно неотрицательное число, что, несмотря на ошибки, программа печатает правильный ответ.
3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т.е. приведите правильный вариант строки.
Достаточно указать ошибки и способ их исправления для одного языка программирования.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения.
Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Решение использует запись программы на Паскале. Допускается использование программы на трёх других языках.
1. Программа выведет два числа: -4 и 3.
2. Программа напечатает правильный ответ, например, для последовательности -4 7 8 9
3. Первая ошибка. Неверная инициализация максимума.
Строка с ошибкой:
Возможный вариант исправления:
4. Вторая ошибка. Неверно ведётся суммирование элементов.
int main() <
int n,m,k,cnt;
for (int i=0; i cout cout >n;
cout cin>>m; cnt=0;
for (int j=1; j cin>>k;
if (k>m) cnt++;
m=k;
>
cout >
system(«pause»);
return 0;
>
1) Как объявить этот массив в программе, записанной на языке Паскаль?
2) Чему равно значение элемента массива с индексом 4?
3) Чему равно значение элемента массива а[а[4]]?
2. Программа обрабатывает одномерный целочисленный массив Dat:
Заполните трассировочную таблицу и определите, какие числа будут выведены в результате выполнения следующего фрагмента программы.
3. Дополнительное задание. Программисту было поручено написать программу нахождения суммы отрицательных элементов одномерного целочисленного массива. Программист разработал программу, но допустил в ней одну ошибку. Текст программы с ошибкой представлен ниже:
Каким окажется ответ после исполнения этой программы, если в качестве элементов массива будут введены числа 1,
Как исправить программу, чтобы она решала поставленную перед программистом задачу?
Вариант 2
1. Дан одномерный массив а из семи элементов:
1) Как объявить этот массив в программе, записанной на языке Паскаль?
2) Чему равно значение элемента массива с индексом 5?
3) Чему равно значение элемента массива а[а[5]]?
2. Программа обрабатывает одномерный целочисленный массив Dat:
Заполните трассировочную таблицу и определите, какие числа будут выведены в результате выполнения следующего фрагмента программы.
3. Дополнительное задание. В представленном фрагменте программы значения одномерного массива задаются с помощью следующего оператора цикла:
Дан одномерный массив а из семи элементов25 24 10 60 4 100 -11
//Задача 1
var d:integer;
begin
readln(d);
if d mod 2 =0 then
Writeln(‘Четное’)
else
Writeln(‘Не четное’);
<span>end.
//Задача 2
var d:integer;
begin
readln(d);
if d mod 3 =0 then
Writeln(‘Делится’) else
Writeln(‘Не делится’);
<span>end.</span></span>
Program Rick_and_Morty;
Var i: integer;
begin
write(‘Ваш год: ‘);
readln(i);
case i mod 12 of
0: writeln(‘Год обезьяны’);
1: writeln(‘Год петуха’);
2: writeln(‘Год собаки’);
3: writeln(‘Год кабана’);
4: writeln(‘Год крысы’);
5: writeln(‘Год быка’);
6: writeln(‘Год тигра’);
7: writeln(‘Год кролика’);
8: writeln(‘Год дракона’);
9: writeln(‘Год змеи’);
10: writeln(‘Год лошади’);
11: writeln(‘Год овцы’);
ПОМОГИТЕ ПО ИНФОРМАТИКЕ
1.Дан одномерный массив а из семи элементов:
25 24 10 60 4 100 -11
1)Как объявить этот массив в программе, записанной на языке Паскаль?
2)Чему равно значение элемента массива с индексом 5?
3)Чему равно значение элемента массива а [а [5]]?
const a: array [1..7] of integer = (25, 24, 10, 60, 4, 100, -11);
begin
writeln (‘a[5] = ‘,a[5]);
writeln (‘a[a[5]] = ‘, a[a[5]]);
end.
1) const a: array [1..7] of integer = (25, 24, 10, 60, 4, 100, -11);
2) a[5]=4
3) a[a[5]] = 60
Порядок выполнения
-
Зайти в Borland
Pascal. -
Набрать текст программы
для решения задачи № 1 и получить ответ
(при
и;и). -
Исправить программу так,
чтобы она решала задачу без использования
слова else. -
Набрать текст программы
для решения задачи № 2 и получить ответ
(при
;;;). -
Исправить программу так,
чтобы она решала задачу без использования
оператора case.
Примеры задач
Задача 1. Вычислить величину . |
Задача 2. |
Program |
Program |
Var |
Var |
a,b,c:real; |
Begin |
Begin |
read(a); |
writeln(‘Введи |
case a of |
read(a,b); |
0: c:=2; |
if a>b |
1..10: c:=3; |
then |
-1,11: c:=4 |
else |
else c:=5 |
writeln(‘c=’,c:10:3); |
end; |
End. |
writeln(c); |
End. |
Дополнительное задание
-
Вычислить
-
Вычислить
при -
Вычислить
,
где -
Вычислить
где. -
Вычислить
,
где -
Вычислить
. -
Найти
-
Найти
Контрольные вопросы
-
Что такое алгоритм
линейной структуры? Перечислите
операторы, реализующие этот алгоритм. -
Что такое алгоритм
разветвляющейся структуры? Перечислите
операторы, реализующие этот алгоритм. -
Какой вид имеют составной
оператор и оператор присваивания, а
также что они означают? -
Какой вид имеют операторы
ввода и вывода, а также что они означают? -
Какой вид имеет оператор
безусловного и условного перехода, а
также что они означают? -
Какой вид имеет оператор
варианта и что он означает? -
Что такое метка, условие
и селектор? К каким типам данных
относятся эти понятия? -
Напишите, что означает
каждая строка в вышеприведённых
программах. -
Напишите программу к одной
из задач дополнительного задания.
Лабораторная работа № 3. Программирование циклов Алгоритм циклической структуры
Алгоритм
циклической структуры – алгоритм,
в котором производится многократное
повторение однотипных действий.
Цикл–
многократно повторяющийся участок
алгоритма. Цикл включает заголовок
цикла, тело цикла и конец цикла.
Циклы делятся
на:
1. Цикл
с предусловием(условие выхода из
цикла проверяется в начале перед
действиями в теле цикла).
2. Цикл
с постусловием(условие выхода из
цикла проверяется в конце после действий
в теле цикла).
3. Цикл
с параметром(цикл выполняется
фиксированное количество раз, определяемое
параметром цикла).
Для реализации
алгоритма циклической структуры в
языке Pascalиспользуются
следующие операторы:
1. Оператор
цикла с предусловиемимеет вид:
while
U
do
Op
где while– пока,do– делать, U– условие, Op– оператор.
Оператор
означает, что пока условие U
истинное, повторять оператор Op
в цикле; как только условие станет
ложным, выйти из цикла.
2. Оператор
цикла с постусловиемимеет вид:
repeat
Op1;
…
OpN
until
U
где repeat– повторять,until– до тех пор пока,
Op1– оператор 1-й,OpN– операторN-й,
U– условие.
Оператор
означает, что повторять операторы
Op1
и т.д., … OpN
в цикле до тех пор, пока условие U
не станет истинным; как только
условие станет истинным, выйти из цикла.
3. Оператор
цикла с параметром(при увеличении
параметра) имеет вид:
for Par
:= Nz
to Kz
do Op
где for– для,to– до,do– делать,Par– параметр цикла,Nz– начальное значение,Kz– конечное значение,Op– оператор.
Оператор
означает, что для параметра Par
, увеличивающегося от начального
значения Nz
до конечного значения Kz
с шагом 1,
повторять оператор Op
в цикле.
4. Оператор
цикла с параметром(при уменьшении
параметра) имеет вид:
for Par
:= Nz
downto Kz
do Op
где for– для,downto– вниз до,do– делать,Par– параметр цикла,Nz– начальное значение,Kz– конечное значение,Op– оператор.
Оператор
означает, что для параметра Par
, уменьшающегося от начального значения
Nz
до конечного значения Kz
с шагом (-1),
повторять оператор Op
в цикле.
Параметр
цикла (или счётчик циклов) –
переменная порядкового типа, которая
изменяется в цикле от начального до
конечного значения с каким-либо шагом.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
Denarevsliy 1 / 1 / 0 Регистрация: 21.02.2017 Сообщений: 50 |
||||
1 |
||||
26.02.2017, 13:16. Показов 1360. Ответов 9 Метки нет (Все метки)
Модифицировать задачу так, чтобы она решала задачу с 10 000 000 элементов менее чем за минуту. Сама задача:
как лучше изменить программу?
__________________ 0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
26.02.2017, 13:16 |
Ответы с готовыми решениями: Создать массив из 1 000 000 000 и более элементов, а потом заполнить и вывести его #include <stdio.h> Найти вероятность того,что из 10 000 машин будет не менее 8 000 и не более 8050 исправных Написать программу, которая открывает файл 1.000.000 раз Нужно написать программу для поиска палиндромов от 1 до 1 000 000 в десятичной системе счисления и двоичной одновременно begin 9 |
16931 / 12508 / 3286 Регистрация: 17.09.2011 Сообщений: 20,745 |
|
26.02.2017, 13:33 |
2 |
как лучше изменить программу? А зачем? Ну и вы не дали условие задачи, чтобы говорить об оптимизациях. 0 |
1 / 1 / 0 Регистрация: 21.02.2017 Сообщений: 50 |
|
26.02.2017, 15:21 [ТС] |
3 |
вот условия примера : 0 |
16931 / 12508 / 3286 Регистрация: 17.09.2011 Сообщений: 20,745 |
|
26.02.2017, 15:37 |
4 |
Denarevsliy, в вашем случае программу нужно не изменять, а переписывать, т.к. в предоставленном вами коде выполняются ровно два условия из поставленных: создается файл и числа положительные. 0 |
1 / 1 / 0 Регистрация: 21.02.2017 Сообщений: 50 |
|
26.02.2017, 23:22 [ТС] |
5 |
так как нужно сделать? 0 |
Denarevsliy 1 / 1 / 0 Регистрация: 21.02.2017 Сообщений: 50 |
||||
28.02.2017, 21:50 [ТС] |
6 |
|||
я задачу нету показал, уже создал новую тему Добавлено через 31 минуту
0 |
16931 / 12508 / 3286 Регистрация: 17.09.2011 Сообщений: 20,745 |
|
28.02.2017, 22:05 |
7 |
Сама задача Это не задача, а одно из множества решений. Возможно, даже неправильное. Как сама задача выглядит? 0 |
1 / 1 / 0 Регистрация: 21.02.2017 Сообщений: 50 |
|
28.02.2017, 22:38 [ТС] |
8 |
та что сверху: 0 |
269 / 253 / 186 Регистрация: 28.10.2015 Сообщений: 723 |
|
01.03.2017, 10:50 |
9 |
Думаю, можно попробовать так. Отсортировать числа по убыванию (с сохранением индексов, например, в туплу все запихать). Очевидно, максимальное произведение будет у двух максимальных чисел. Проверяем, различаются ли их индексы больше, чем на 7. Если да — работа программы закончена, ответ получен. Нет — проверяем дальше. Только вот надо подумать над очередностью проверок. Стандартный вложенный цикл тут не подходит, надо проверять в таком порядке: первое число со вторым, потом второе с третьим, и так далее, как круги по воде. То есть потом проверять значения «первый с третьим, второй с четвертым»… По идее, три цикла надо, внешний из которых задает «радиус круга». 0 |
906 / 663 / 318 Регистрация: 23.10.2016 Сообщений: 1,538 |
|
01.03.2017, 11:34 |
10 |
Это задача на динамическое программирование. Решение для k элементов — это либо решение для k-1 элемента, либо произведение k-го элемента на максимум из первых k-8 элементов. 0 |
Автор материалов — Лада Борисовна Есакова.
Самая распространенная ошибка, которую нужно найти и исправить – это неправильное использование вложенных условных операторов. Для усложнения поиска возможно неправильное форматирование текста (неправильно поставленные отступы).
Для того, чтобы найти ошибку, нужно поставить в соответствие друг другу все части условного оператора if и else.
Помним, что часть else относится к ближайшему if. При этом наличие части else не обязательно.
Кроме того, часто присутствует ошибка при вводе или выводе. Обязательно нужно проверить, та ли информация выводится на экран.
Особого внимания требует инициализация переменных.
Формат книги не позволяет рассмотреть все основные типы задач 2 части, рассмотрим лишь те, которые встречались на проверочных и экзаменационных работах последних двух лет.
Пример 1.
На обработку поступает положительное целое число, не превышающее 109. Нужно написать программу, которая выводит на экран сумму цифр этого числа, меньших 7. Если в числе нет цифр, меньших 7, требуется на экран вывести 0. Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на пяти языках программирования.
Бейсик |
Python |
DIM N, DIGIT, SUM AS LONG
INPUT N SUM = 0 WHILE N > 0 DIGIT = N MOD 10 IF DIGIT < 7 THEN SUM = SUM + 1 END IF N = N 10 WEND PRINT DIGIT |
N = int(input())
sum = 0 while N > 0: digit = N % 10 if digit < 7: sum = sum + 1 N = N // 10 print(digit) |
Паскаль |
Алгоритмический язык |
var N, digit, sum: longint;
begin readln(N); sum := 0; while N > 0 do begin digit := N mod 10; if digit < 7 then sum := sum + 1; N := N div 10; end; writeln(digit) end. |
алг
нач цел N, digit, sum ввод N sum := 0 нц пока N > 0 digit := mod(N,10) если digit < 7 то sum := sum + 1 все N := div(N,10) кц вывод digit кон |
Си |
|
#include
int main() { int N, digit, sum; scanf(«%d», &N); sum = 0; while (N > 0) { digit = N % 10; if (digit < 7) sum = sum + 1; N = N / 10; } printf(«%d»,digit); return0; } |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 456.
2. Приведите пример такого трёхзначного числа, при вводе которого программа выдаёт верный ответ.
3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т.е. приведите правильный вариант строки.
Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Решение:
Решение использует запись программы на Паскале. Допускается использование программы на любом из четырёх других языков.
1. Программа выведет число 4.
2. Пример числа, при вводе которого программа выдаёт верный ответ: 835.
Программа работает неправильно из-за неверной выводимой на экран переменной и неверного увеличения суммы. Соответственно, программа будет работать верно, если в числе старшая цифра (крайняя левая) равна сумме цифр, меньших 7.
3. В программе есть две ошибки.
Первая ошибка. Неверное увеличение суммы.
Строка с ошибкой:
sum := sum + 1;
Верное исправление:
sum := sum + digit;
Вторая ошибка. Неверный вывод ответа на экран.
Строка с ошибкой:
writeln(digit)
Верное исправление:
writeln(sum)
Пример 2.
Для заданного положительного вещественного числа A необходимо найти максимальное целое число K, при котором выполняется неравенство
(при K = 0 сумма считается равной 0).
Для решения этой задачи ученик написал такую программу.
Бейсик |
Python |
DIM A, S AS DOUBLE
DIM K AS INTEGER INPUT A K = 1 S = 1 WHILE S < A S = S + 1.0/K K = K + 1 WEND PRINT K END |
a = float(input())
k = 1 s = 1 while s < a: s = s + 1.0/k k = k + 1 print(k) |
Алгоритмический язык |
Паскаль |
алг
нач вещ a, s цел k ввод a k := 1 s := 1 нц пока s<a s := s + 1.0/k k := k + 1 кц вывод k кон |
var a, s: real;
k: integer; begin read(a); k := 1; s := 1; while s<a do begin s := s + 1.0/k; k := k + 1; end; write(k); end. |
Си |
|
#include <stdio.h>
int main(){ double a, s; int k; scanf(«%lf»,&a); k = 1; s = 1; while (s<a) { s = s + 1.0/k; k = k + 1; } printf(«%d», k); return 0; } |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 1.2.
2. Приведите пример числа, при вводе которого программа даст верный ответ.
3. Найдите в программе все ошибки (их может быть одна или несколько).
Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.
Обратите внимание: вам нужно исправить приведённую программу, а не написать свою. Вы можете только исправлять ошибочные строки; удалять строки или добавлять новые строки нельзя. Постарайтесь также не внести новые ошибки – за это оценка снижается.
Решение:
Решение использует запись программы на Паскале. Допускается использование программы на других языках.
1. При вводе числа 1.2 программа выведет число 2.
2. Примеры чисел, при вводе которых программа выводит верный ответ: 1.6, 2.05.
Программа содержит две ошибки, одна из которых приводит к увеличению ответа, другая – к уменьшению.
В некоторых случаях эти ошибки компенсируют друг друга, и ответ оказывается правильным. Это происходит, если значение A попадает в один из следующих диапазонов: 1.5 < A < 1.83, 2 < A < 2.08.
3. Программа содержит две ошибки.
1) Неверная инициализация. Начальное значение S должно быть равно нулю.
В приведённом варианте вычисленная сумма оказывается на 1 больше правильного значения.
Строка с ошибкой:
s := 1;
Правильная строка:
s := 0;
2) Неверное определение ответа. Приведённая программа находит не максимальное K, при котором выполняется неравенство, а минимальное, при котором оно не выполняется, то есть увеличивает верное значение на 1.
Кроме того, использованный порядок действий в цикле (увеличение K после увеличения S) приводит к увеличению ещё на 1. Это можно было бы исправить, изменив порядок действий в цикле и уменьшив K после завершения цикла, но эти действия не разрешены по условию задачи.
Поэтому для исправления ошибки можно просто скорректировать значение при выводе.
Строка с ошибкой:
write(k);
Правильная строка:
write(k-2);
Благодарим за то, что пользуйтесь нашими публикациями.
Информация на странице «Задача №24. Исправление ошибок в программе.» подготовлена нашими редакторами специально, чтобы помочь вам в освоении предмета и подготовке к ЕГЭ и ОГЭ.
Чтобы успешно сдать необходимые и поступить в высшее учебное заведение или колледж нужно использовать все инструменты: учеба, контрольные, олимпиады, онлайн-лекции, видеоуроки, сборники заданий.
Также вы можете воспользоваться другими статьями из разделов нашего сайта.
Публикация обновлена:
07.02.2023