Как исправить программу чтобы она решала поставленную перед программистом задачу

Ответ:

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

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,Math;
 
type
  TForm1 = class(TForm)
    Label2: TLabel;
    Edit1: TEdit;
    Memo1: TMemo;
    Label3: TLabel;
    Button1: TButton;
    Button2: TButton;
    Label1: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    procedure TForm1.Button1Click(Sender:TObject);
    procedure Button2Click(Sender:TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
  a: array[1..31] of real;
  n: integer;
  i: integer;
  so: integer;
  sv: integer;
  summa, sred: real;
begin
  n := strtoint(Edit1.Text);
  so := 0;
  sv := 0;
  summa := 0;
  sred := 0;
  for i := 1 to n do
  begin
    summa := summa + a[i];
    sred := summa / n;
    label1.Caption := 'ñðåäíåìåñÿ÷íàÿ òåìïåðàòóðà= ' + floattostrF(sred, fffixed, 10, 1);
  end;
  for i := 1 to n do
  begin
    a[i] := strtofloat(memo1.Lines[i - 1]);
    if a[i] < 0 then
      so := so + 1
    else if a[i] > 10 then
      sv := sv + 1;
  end;
  label4.Caption := ' êîë-âî äíåé, êîãäà òåìïåðàòðà íèæå 0=' + inttostr(so);
  label5.Caption := ' êîë-âî äíåé, êîãäà òåìïåðàòóðà âûøå 10= ' + inttostr(sv);
end;



0



ZX Spectrum-128

Эксперт Pascal/Delphi

6805 / 4564 / 4817

Регистрация: 05.06.2014

Сообщений: 22,438

09.04.2021, 07:51

2

Лучший ответ Сообщение было отмечено Nikitamce как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
var
  a: array[1..31] of real;
  n: integer;
  i: integer;
  so: integer;
  sv: integer;
  summa, sred: real;
  s: string;
 
begin
  writeln('Введите количество дней в месяце: ');
  readln(s);
  n := strtoint(s);
  so := 0;
  sv := 0;
  summa := 0;
  sred := 0;
  for i := 1 to n do
  begin
    a[i] := -n div 2 + random * n;
    write(a[i]:8:2);
    if a[i] < 0 then
      so := so + 1
    else if a[i] > 10 then
      sv := sv + 1;
    summa := summa + a[i];
  end;
  writeln;
  sred := summa / n;
  writeln('Среднемесячная температура: ' + floattostr(sred));
  writeln('Сколько раз столбик термометра опускался ниже нуля: ' + inttostr(so));
  writeln('Сколько раз среднесуточная температура держалась выше 10 градусов: ' + inttostr(sv));
end.



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

Цитата
Сообщение от ZX Spectrum-128
Посмотреть сообщение

Pascal
30
writeln('Среднемесячная температура: ' + floattostr(sred));
Pascal
30
writeln('Среднемесячная температура: ', sred:8:2);



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

Цитата
Сообщение от Nikitamce
Посмотреть сообщение

в делфи нет 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

Цитата
Сообщение от Nikitamce
Посмотреть сообщение

mr-Crocodile, в делфи нет writeln. Поэтому мне выдаёт ошибку при вводе данных

Delphi
1
label1.Caption := 'Среднемесячная температура = ' + floattostrF(sred, fffixed, 10, 1);

Цитата
Сообщение от Nikitamce
Посмотреть сообщение

понимаю

не делай так больше.



1



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

09.04.2021, 16:15

Помогаю со студенческими работами здесь

Не работает программа, что нужно исправить?
Вывод на экран фамилий авоторв книг, общая стоимость всех книг в фонде превышает заданную величину,…

Эта задача сделана по другой структуре, нужно исправить ее исправить на нормальную задачу delphi
Эта задача сделана по другой структуре, помогит ее исправить на нормальную задачу delphi

Что исправить в коде, чтобы он не выдавал ошибку. Нужно ссылаться на БД Access
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;…

Что нужно исправить в программе чтобы элемент matrix1 в методе ShowMatrix существовал
Что нужно испарвить в программе чтобы элемент matrix1 в методе ShowMatrix существовал (не…

Как бы вы решили задачу?
Здравствуйте, уважаемые форумчане

Есть несколько задач:
1. Дан массив целых чисел, найдите…

Почему эти значение нельзя сравнить, и что нужно сделать, чтобы исправить ошибку?
Помогите исправить ошибку.

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

8

Порядок выполнения

  1. Зайти в Borland
    Pascal
    .

  2. Набрать текст программы
    для решения задачи № 1 и получить ответ
    (при
    и;и).

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

  4. Набрать текст программы
    для решения задачи № 2 и получить ответ
    (при
    ;;;).

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

Примеры задач

Задача 1.

Вычислить величину

.

Задача 2.
Вычислить величину
,
где
a и
c
целые числа.

Program
Lab2a;

Program
Lab2b;

Var

Var
a,c:integer;

a,b,c:real;

Begin

Begin

read(a);

writeln(‘Введи
a,b’);

case a of

read(a,b);

0: c:=2;

if a>b

1..10: c:=3;

then
c:=(a-b)/(a*b)

-1,11: c:=4

else
c:=exp(b*ln(a));

else c:=5

writeln(‘c=’,c:10:3);

end;

End.

writeln(c);

End.

Дополнительное задание

  1. Вычислить

  2. Вычислить
    при

  3. Вычислить
    ,
    где

  4. Вычислить
    где.

  5. Вычислить
    ,
    где

  6. Вычислить
    .

  7. Найти

  8. Найти

Контрольные вопросы

  1. Что такое алгоритм
    линейной структуры? Перечислите
    операторы, реализующие этот алгоритм.

  2. Что такое алгоритм
    разветвляющейся структуры? Перечислите
    операторы, реализующие этот алгоритм.

  3. Какой вид имеют составной
    оператор и оператор присваивания, а
    также что они означают?

  4. Какой вид имеют операторы
    ввода и вывода, а также что они означают?

  5. Какой вид имеет оператор
    безусловного и условного перехода, а
    также что они означают?

  6. Какой вид имеет оператор
    варианта и что он означает?

  7. Что такое метка, условие
    и селектор? К каким типам данных
    относятся эти понятия?

  8. Напишите, что означает
    каждая строка в вышеприведённых
    программах.

  9. Напишите программу к одной
    из задач дополнительного задания.

Лабораторная работа № 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

Порядок выполнения

  1. Зайти в Borland
    Pascal
    .

  2. Набрать текст программы
    для решения задачи № 1 и получить ответ
    (при
    и;и).

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

  4. Набрать текст программы
    для решения задачи № 2 и получить ответ
    (при
    ;;;).

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

Примеры задач

Задача 1.

Вычислить величину

.

Задача 2.
Вычислить величину
,
где
a и
c
целые числа.

Program
Lab2a;

Program
Lab2b;

Var

Var
a,c:integer;

a,b,c:real;

Begin

Begin

read(a);

writeln(‘Введи
a,b’);

case a of

read(a,b);

0: c:=2;

if a>b

1..10: c:=3;

then
c:=(a-b)/(a*b)

-1,11: c:=4

else
c:=exp(b*ln(a));

else c:=5

writeln(‘c=’,c:10:3);

end;

End.

writeln(c);

End.

Дополнительное задание

  1. Вычислить

  2. Вычислить
    при

  3. Вычислить
    ,
    где

  4. Вычислить
    где.

  5. Вычислить
    ,
    где

  6. Вычислить
    .

  7. Найти

  8. Найти

Контрольные вопросы

  1. Что такое алгоритм
    линейной структуры? Перечислите
    операторы, реализующие этот алгоритм.

  2. Что такое алгоритм
    разветвляющейся структуры? Перечислите
    операторы, реализующие этот алгоритм.

  3. Какой вид имеют составной
    оператор и оператор присваивания, а
    также что они означают?

  4. Какой вид имеют операторы
    ввода и вывода, а также что они означают?

  5. Какой вид имеет оператор
    безусловного и условного перехода, а
    также что они означают?

  6. Какой вид имеет оператор
    варианта и что он означает?

  7. Что такое метка, условие
    и селектор? К каким типам данных
    относятся эти понятия?

  8. Напишите, что означает
    каждая строка в вышеприведённых
    программах.

  9. Напишите программу к одной
    из задач дополнительного задания.

Лабораторная работа № 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 элементов менее чем за минуту.

Сама задача:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
namespace DoubleBinary
{
 class Program
 {
 public static double F(double x)
 {
 return x * x-50*x+10;
 }
 public static void SaveFunc(string fileName, double a,double b,double h)
 {
 FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write);
 BinaryWriter bw = new BinaryWriter(fs);
 double x = a;
 while (x<=b)
 {
 bw.Write(F(x));
 x += h;// x=x+h;
 }
 bw.Close();
 fs.Close();
 }
 public static double Load(string fileName)
 {
 FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
 BinaryReader bw = new BinaryReader(fs);
 double min = double.MaxValue;
 double d;
 for(int i=0;i<fs.Length/sizeof(double);i++)
 {
 // Считываем значение и переходим к следующему
 d = bw.ReadDouble();
 if (d < min) min = d;
 }
 bw.Close();
 fs.Close();
 return min;
 }
 static void Main(string[] args)
 {
 SaveFunc("data.bin", -100, 100, 0.5);
 Console.WriteLine(Load("data.bin"));
 Console.ReadKey();
 }
 }
}

как лучше изменить программу?

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

0

Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

26.02.2017, 13:16

Ответы с готовыми решениями:

Создать массив из 1 000 000 000 и более элементов, а потом заполнить и вывести его
создаю массив, и все идет нормально

#include &lt;stdio.h&gt;
#include &lt;malloc.h&gt;
#include…

Найти вероятность того,что из 10 000 машин будет не менее 8 000 и не более 8050 исправных
Найти вероятность того,что из 10 000 машин,отправленных с завода,Будет не менее 8 000 и не более…

Написать программу, которая открывает файл 1.000.000 раз
Напишите програму которая открывает файл 1.000.000 раз плюс должен быть там путь к файлу!

Нужно написать программу для поиска палиндромов от 1 до 1 000 000 в десятичной системе счисления и двоичной одновременно
Program v1;
var
f:array of integer;
a,b,i,k,n,g,v,m:integer;

begin
for i:=0…

9

Эксперт .NET

16931 / 12508 / 3286

Регистрация: 17.09.2011

Сообщений: 20,745

26.02.2017, 13:33

2

Цитата
Сообщение от Denarevsliy
Посмотреть сообщение

как лучше изменить программу?

А зачем?
У меня ваша программа обрабатывает 10 миллионов значений за 13 секунд — это уже меньше минуты.

Ну и вы не дали условие задачи, чтобы говорить об оптимизациях.

0

1 / 1 / 0

Регистрация: 21.02.2017

Сообщений: 50

26.02.2017, 15:21

 [ТС]

3

вот условия примера :
Для заданной последовательности неотрицательных целых чисел необходимо найти максимальное
произведение двух её элементов, номера которых различаются не менее, чем на 8. Значение каждого
элемента последовательности не превышает 100 000. Количество элементов последовательности
равно 100 000. Сгенерировать файл из случайных чисел и решить эту задачу:

0

Эксперт .NET

16931 / 12508 / 3286

Регистрация: 17.09.2011

Сообщений: 20,745

26.02.2017, 15:37

4

Denarevsliy, в вашем случае программу нужно не изменять, а переписывать, т.к. в предоставленном вами коде выполняются ровно два условия из поставленных: создается файл и числа положительные.
А всё остальное — неправильно: числа в файле не случайные, не все являются меньшими или равными 100000, их генерируется не 100000, максимальное произведение двух элементов не находится, разрыв в 8 номеров не соблюдается.

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 минуту

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
static void Save(string fileName, int n)
{
Random rnd = new Random();
FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write);
BinaryWriter bw = new BinaryWriter(fs);
for (int i = 1; i < n; i++)
{
bw.Write(rnd.Next(0,100000)); // int -занимает 4 байта
}
fs.Close();
bw.Close();
}
static void Load(string fileName)
{
DateTime d = DateTime.Now;
FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
int[] a = new int[fs.Length / 4];
for (int i = 0; i < fs.Length / 4; i++) // int занимает 4 байта
{
a[i] = br.ReadInt32();
// if (i % 3 == 0) Console.WriteLine("{0,3} {1}", i, a);
}
br.Close();
fs.Close();
int max = 0;
for (int i = 0; i < a.Length; i++)
for (int j = 0; j < a.Length; j++)
if (Math.Abs(i - j) >= 8 && a[i] * a[j] > max) max = a[i] * a[j];
Console.WriteLine(max);
Console.WriteLine(DateTime.Now - d);
}
static void Main(string[] args)
{
Save("data.bin", 100000);
Load("data.bin");
Console.ReadKey();
}

0

Эксперт .NET

16931 / 12508 / 3286

Регистрация: 17.09.2011

Сообщений: 20,745

28.02.2017, 22:05

7

Цитата
Сообщение от Denarevsliy
Посмотреть сообщение

Сама задача

Это не задача, а одно из множества решений. Возможно, даже неправильное.

Как сама задача выглядит?

0

1 / 1 / 0

Регистрация: 21.02.2017

Сообщений: 50

28.02.2017, 22:38

 [ТС]

8

та что сверху:
Для заданной последовательности неотрицательных целых чисел необходимо найти максимальное
произведение двух её элементов, номера которых различаются не менее, чем на 8. Значение каждого
элемента последовательности не превышает 100 000. Количество элементов последовательности
равно 100 000. Сгинерировать файл из случайных чисел и решить эту задачу:
а нужно:
Модифицировать эту же задачу так, чтобы она решала задачу с 10 000 000
элементов менее чем за минуту

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

Добавить комментарий