Найдите ошибку в программе паскаль

Найдите ошибки в программе(паскаль) program exmpl var C : char begin write (‘Введите длины трех сторон треугольника : ’) read (A, B, C) write (‘Треугольник со сторонами ’, a, b, c) if a + b > ; c and b + c > ; a and a + c > ; b then write (‘существует.

’) else write (‘не существует.

’) end.

Вы находитесь на странице вопроса Найдите ошибки в программе(паскаль) program exmpl var C : char begin write (‘Введите длины трех сторон треугольника : ’) read (A, B, C) write (‘Треугольник со сторонами ’, a, b, c) if a + b &gt ; c an? из категории Информатика.
Уровень сложности вопроса рассчитан на учащихся 10 — 11 классов. На странице
можно узнать правильный ответ, сверить его со своим вариантом и обсудить
возможные версии с другими пользователями сайта посредством обратной связи.
Если ответ вызывает сомнения или покажется вам неполным, для проверки
найдите ответы на аналогичные вопросы по теме в этой же категории, или создайте
новый вопрос, используя ключевые слова: введите вопрос в поисковую строку,
нажав кнопку в верхней части страницы.

Evri

0 / 0 / 0

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

Сообщений: 15

1

найти ошибку в программе

23.09.2010, 22:24. Показов 952. Ответов 12

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

после оператора while (на заполнение массива) прога не идёт….

Задание следующее: В данном числовом массиве определить количество элементов массива, больших среднего арифметического

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
var n,i,s:integer;
a:array[1..100] of integer;
sa:real;
begin
writeln('vvedite razmer massiva');
readln(n);
i:=1;
while (i<=n) do
begin
writeln('a(',i,')=');
readln(a[i]);
i:=i+1;
end;
s:;
for i:=1 to n do
begin
s:=s+a[i];
sa:=s/n;
readln(sa);
end;
i:=1;
while (a[i]>sa) do
begin
writeln('a(',i,')=');
readln(a[i]);
end;
end.



0



Programming

Эксперт

94731 / 64177 / 26122

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

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

23.09.2010, 22:24

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

Найти ошибку в программе!
Здравствуйте уважаемые форумчане! Прошу вашей помощи, два дня сижу и все не могу понять почему…

Найти ошибку в программе
Составить 3 программы табулирования функции y=tg(lnx) на отрезке с шагом h=0,1. В первой программе…

Найти ошибку в программе
я вот тут набросал что смог!!!
program fun;
var c:real;
a,m,x,delt:integer;
function…

Найти ошибку в программе
Program lab_proc;
uses crt;
type t=array of integer;
var B,C:t;n,m:integer; Sum,kol:integer;…

12

47 / 47 / 13

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

Сообщений: 106

23.09.2010, 22:31

2

А можно немного на свой лад переделать, думаю, проще получится?



0



0 / 0 / 0

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

Сообщений: 15

23.09.2010, 22:34

 [ТС]

3

ну тольк не сильно)))

я же могу чего-то не понять если сильно продвинуто……



0



krvnk

13 / 13 / 10

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

Сообщений: 174

23.09.2010, 22:37

4

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var k,n,i,s:integer;
a:array[1..100] of integer;
sa:real;
begin
writeln('vvedite razmer massiva');
readln(n);
i:=0;
while (i<=n) do
begin
i:=i+1;
writeln('a(',i,')=');
readln(a[i]);
end;
s:=0;
for i:=1 to n do
s:=s+a[i];
sa:=s/n;k:=0;
for i:=1 to n do
if a[i]>sa then k:=k+1;
write(k:4);
end.



0



0 / 0 / 0

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

Сообщений: 15

23.09.2010, 22:41

 [ТС]

5

а k это знач счётчик для количества эл-ов, больше ср.ариф?



0



IVoLution

47 / 47 / 13

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

Сообщений: 106

23.09.2010, 22:43

6

Я все-таки свой доделал. Может пригодится ещё)

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
program example;
uses
   crt;
var
   a: array[1..100] of integer;
   count, i, n, sa: integer;
begin
   ClrScr;
   write('Введите размер массива: ');
   readln(n);
   i:=1;
   sa:=0;
   while (i <= n) do
      begin
         write(' a(',i,')=');
         readln(a[i]);
         sa:=sa+a[i];
         i:=i+1;
      end;
   sa:=sa div n;
   for i:=1 to n do
      if (a[i] > sa) then count:=count+1;
   write('Количество элементов, больших ср.арифм = ',sa,': ',count);
   readln;
end.



0



13 / 13 / 10

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

Сообщений: 174

23.09.2010, 22:43

7

да это счёткчик



0



0 / 0 / 0

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

Сообщений: 15

23.09.2010, 22:47

 [ТС]

8

ты её запускал? сначала 94 ошибка, там просит после end в середине «.» если его убрать то ваще запрашивает на один элемент больше чем размер и больш ничо не делает



0



47 / 47 / 13

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

Сообщений: 106

23.09.2010, 22:50

9

Это ты мне? У меня все работает, несколько раз испытывал. Проверь, мож не правильно списал код.



0



633 / 376 / 7

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

Сообщений: 1,372

23.09.2010, 22:51

10

Обычно такие простые программы исследуются пошагово с использованием Деббагера. Выводятся переменные для просмотра и на каждом шаге смотрятся значения



0



0 / 0 / 0

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

Сообщений: 15

23.09.2010, 23:00

 [ТС]

11

IVoLution тебе)

она даж у мну не запускается из-за ошибки….

Добавлено через 5 минут
IVoLution ой.. не тебе.. предыдущемуу…. у тя всё оки)) спс



0



633 / 376 / 7

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

Сообщений: 1,372

23.09.2010, 23:11

12

Evri,
А что за sa должно вводиться на строке 19, если оно перед этим вычисляется? Наверное должен быть вывод.
Ну и как уже писали в 14-й строке ошибка. Наверное должно быть s:=0;
(это по первоначальному вашему коду)



0



0 / 0 / 0

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

Сообщений: 15

23.09.2010, 23:16

 [ТС]

13

ну на 14 так и есть S присваиваем 0 прост тут чо то нет а у мну в проге есть..

а на 19 мы считываем среднее арифметическое.хотя незачем.. правильную прогу кинули.. там по-другому



0



IT_Exp

Эксперт

87844 / 49110 / 22898

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

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

23.09.2010, 23:16

13

Автор материалов — Лада Борисовна Есакова.
Самая распространенная ошибка, которую нужно найти и исправить – это неправильное использование вложенных условных операторов. Для усложнения поиска возможно неправильное форматирование текста (неправильно поставленные отступы).

Для того, чтобы найти ошибку, нужно поставить в соответствие друг другу все части условного оператора 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.06.2023

Даны двумерные массивы. a[5,5], b[4,4],c[6,6]
Найти произведение и сумму элементов не выше главной диагонали.

Program zad1;
Type mas=array[1..6,1..6] of integer;
Var a,b,c:mas;
 n,i,j,S,P:integer;
Procedure full(a:mas; n:integer; S,P:integer);
Var i,j:integer;
Begin
 S:=0;
  P:=1;
  For i:=1 to n do
   For j:=1 to n do
    If (i>=j)then begin
     S:=s+a[i,j];
     P:=P*a[i,j];
end;
end;
Procedure r(a:mas; n:integer);
Var i,j:integer;
Begin
 Randomize;
  For i:=1 to n do
   For j:=1 to n do
    a[i,j]:=random(50);
end;
Begin
n:=5;
r(a,5);
full(a,5,S,P);
Writeln('S=',S);
Writeln('P=',P);
n:=4;
r(b,4);
full(b,4,S,P);
Writeln('S=',S);
Writeln('P=',P);
n:=6;
r(c,6);
full(c,6,S,P);
Writeln('S=',S);
Writeln('P=',P);
end.

Найди ошибку в программе

Avatar

30.11.2020.
Тест. Информатика, 9 класс

Внимание! Все тесты в этом разделе разработаны пользователями сайта для собственного
использования.
Администрация сайта не
проверяет возможные ошибки,
которые могут встретиться в тестах.

Задания на знание структуры программы на языке Паскаль, а также форматов операторов присваивания, ввода и вывода

Список вопросов теста

Вопрос 1

Найдите ошибку в программе:
program ;
var a,b,c,d,f,p:integer;
begin
writeln(‘Введите 5 численных значений:’);
readln(a,b,c,d,f );
p:=a+b+c+d+f;
writeln(‘p=’,p);
end.
 

Варианты ответов
  • отсутствует имя программы
  • имя программы написано не правильно
  • отсутствует раздел переменных

Вопрос 2

Найдите ошибку в программе:
program Prim  2  1;
var a,b,c,d,f,p:integer;
begin
writeln(‘Введите 5 численных значений:’);
readln(a,b,c,d,f );
p:=a+b+c+d+f;
writeln(‘p=’,p);
end.
 

Варианты ответов
  • отсутствует раздел переменных
  • имя программы написано неправильно
  • отсутствует имя программы

Вопрос 3

Найдите ошибку в программе:
program Prim_2_1;
begin
writeln(‘Введите 5 численных значений:’);
readln(a,b,c,d,f );
p:=a+b+c+d+f;
writeln(‘p=’,p);
end.
 

Варианты ответов
  • имя программы написано не правильно
  • отсутствует раздел переменных
  • отсутствует ввод данных

Вопрос 4

Найдите ошибку в программе:
program Prim_2_1;
var a,b:integer;
begin
writeln(‘Введите 5 численных значений:’);
readln(a,b,c,d,f );
p:=a+b+c+d+f;
writeln(‘p=’,p);
end.
 

Варианты ответов
  • не все переменные описаны в разделе описания переменных
  • отсутствует раздел переменных
  • отсутствуют вычисления в программе

Вопрос 5

Найдите ошибку в программе:
program Prim_2_1;
var a,b,c,d,f,p:integer;
begin
writeln(‘Введите 5 численных значений:’);
p:=a+b+c+d+f;
writeln(‘p=’,p);
end.
 

Варианты ответов
  • отсутствует команда начала программы
  • отсутствуют вычисления в программе
  • отсутствует раздел ввода данных

Вопрос 6

Найдите ошибку в программе:
program Prim_2_1;
var a,b,c,d,f,p:integer;
begin
writeln(‘Введите 5 численных значений:’);
readln(a,b,c,d,f );
writeln(‘p=’,p);
end.
 

Варианты ответов
  • отсутствует команда завершения программы
  • отсутствует команда начала программы
  • отсутствуют вычисления в программе

Вопрос 7

Найдите ошибку в программе:
program Prim_2_1;
var a,b,c,d,f,p:integer;
writeln(‘Введите 5 численных значений:’);
readln(a,b,c,d,f );
p:=a+b+c+d+f;
writeln(‘p=’,p);
end.
 

Варианты ответов
  • допущена ошибка в операторе присваивания
  • отсутствует команда завершения программы
  • отсутствует команда начала программы

Вопрос 8

Следующий алгоритм в результате выполнения программы находит:
program Prim_2_3;
var a,b,c,d,f,p:integer;
begin
writeln(‘Введите 5 численных значений:’);
readln(a,b,c,d,f );
p:=a+b+c;
writeln(‘p=’,p);
end
 

Варианты ответов
  • находит сумму 4 чисел
  • находит сумму 3 чисел
  • находит сумму 5 чисел

Вопрос 9

Найдите ошибку в программе:
program Prim_2_1;
var a,b,c,d,f,p:integer;
begin
writeln(‘Введите 5 численных значений:’);
readln(a,b,c,d,f );
p=:a+b+c+d+f;
writeln(‘p=’,p);
end.
 

Варианты ответов
  • допущена ошибка в операторе присваивания
  • отсутствует команда начала программы
  • отсутствует команда вывода результата на экран компьютера

Вопрос 10

Следующий алгоритм в результате выполнения программы находит значение выражения:
program Prim_2_2;
var y,x:integer;
begin
writeln(‘Введите x:’);
readln(x);
y:=15*x*x*x+6*x*x+18*x-29;
writeln(‘y=’,y);
end.

Варианты ответов
  • y=15x3+6x2+18x-29

  • y=15x+6x2+18x-29

  • y=5x3+6x2+18x-9

Понравилась статья? Поделить с друзьями:
  • Найдите ошибку в программе program z175
  • Найдите ошибку в программе program prim 2 1 begin
  • Найдите ошибку в программе program al var c integer
  • Найдите ошибку в программе 175
  • Найдите ошибку в приведенном утверждении законы подлежат официальному опубликованию