В
Все
М
Математика
А
Английский язык
Х
Химия
Э
Экономика
П
Право
И
Информатика
У
Українська мова
Қ
Қазақ тiлi
О
ОБЖ
Н
Немецкий язык
Б
Беларуская мова
У
Українська література
М
Музыка
П
Психология
А
Алгебра
Л
Литература
Б
Биология
М
МХК
О
Окружающий мир
О
Обществознание
И
История
Г
Геометрия
Ф
Французский язык
Ф
Физика
Д
Другие предметы
Р
Русский язык
Г
География
asya13051
asya13051
14.07.2022 21:53 •  Информатика

с информатикой
Практическая работа

Линейные программы. Арифметические выражения

Задание 1. Даны x, y, z. Написать программу для вычисления a

hello_html_266d9dc3.gif

Этапы выполнения задания

I Определение исходных данных: переменные x, y, z.

II Определение результатов: переменная a.

III Алгоритм решения задачи.

1 Ввод исходных данных

2 Вычисление значения выражения

3 Вывод результата.

IV Описание переменных:

Все переменные, определенные для решения задачи, имеют тип real. (Переменные x, y, z могут быть и целого типа, а переменная а только вещественного типа, поскольку в выражении используется операция деления.)

V Программа:

program Prim_1

Var x,y,z,a: real;

Begin

Write(‘введите значение x=’);

Readln(x);

Write(‘введите значение y=’);

Readln(y);

Write(‘введите значение z=’);

Readln(z);

a:=(2*x+3*y-z)/(3+2*x);

Writeln(‘a=’,a:7:3);

End.

VI Тестирование программы:

1. Запустите программу и введите значения

x=3

y=2

z=0

Проверьте, результат должен быть следующим:

a= 1.333

Проверить правильность вычислений можно на калькуляторе.

2. Заполните таблицу

x
y

z

a

1.

2

-5

1

2.

2.362

4.258

-7.458

3.

-1.2358

-4.554

5.562

3. Подберите такие значения x, y, z, чтобы значение а= 2.000

4. Что изменится и почему, если в программе заменить команду Writeln(‘a=’,a:7:3); на команду Writeln(a);?

5. Как распечатать только целую часть результата?

Примечание. Тип real предназначен для переменных вещественного типа. Переменные данного типа выводятся на экран монитора с большим дробным хвостом. Во избежание этого можно указать количество цифр выводимых вообще и после запятой (дробной части). Например, Writeln(‘a=’,a:5:2) - первая цифра 5 обозначает количество мест выделенных для цифр всего числа, вторая 2 - цифры дробной части. Точка тоже захватывается в количество мест для всего числа (т.е. в 5, в данном случае).

Задание 2. Даны x, y, z. Написать программу для вычисления b.

hello_html_3bacba08.gif

Тестирование программы:

1. Запустите программу и введите значения

x=9

y=-7

Проверьте, результат должен быть следующим:

a= 1.000

Проверить правильность вычислений можно на калькуляторе.

2. Заполните таблицу:

x

y

b

1

16

-5

2

2.362

4.258

3

-1.2358

-4.554

Задание 3. Составить программу вычисления значения выражения:

hello_html_m14161d4a.png

Заполните таблицу:

a

b

c

y

1

2,23

4,48

-2,5

2

Показать ответ
Ответ:
Nataliaroy
Nataliaroy
15.01.2020 14:39

Объяснение:

program zadachiGAME;

uses crt;

var a:array [1..59] of array [1..59] of string{integer};

var n,x,y,x1,y1,x3,y3,spawn,x4,y4,x5,y5,Xx,Yy,Xb,Yb,delta1,delta2,deltaGAMER,live:integer; var j:char;label restart1;label otskok1;label otskok2;

begin

restart1:

window (1,1,80,50);

clrscr;

cursoroff;

x1:=35;

y1:=44;

delta1:=1;

delta2:=1;

cursoroff;

live:=10;

y:=50;

x:=25;

deltagamer:=1;

gotoxy(x,y);

x3:=24;

y3:=1;

x4:=6;

y4:=45;

 

 

write('press for begin!');

readkey;

gotoxy(X,Y);

write('                ');

n:=1;

 

 

spawn:=1;

 y3:=1;

 x3:=24;

TextColor(3);

      for spawn:=1 to 50 do

      begin

         gotoxy(x3,y3);

         writeln('|                                  |');

         x3:=24;

         y3:=y3+1;

      end;

 

      TextColor(11);

       

      gotoxy(40,12);

       

   

      begin

       

      for y5:=10 to 22 do

       for x5:=36 to 44 do

           begin

           gotoxy(x5,y5);  

             a[x5,y5]:=('a');

             gotoxy(x5,y5);

             write ('a');

           end;

           

       end;

 

repeat

 

begin

 

delay(53);

x1:=x1+delta1;

y1:=y1+delta2;

gotoxy(x1,y1);

write ('*');

gotoxy(x1+delta1*(-1),y1+delta2*(-1));

write(' ');

 

 

if ((x1<>x5) and (y1<>y5)) then //место с присваванием,которое не работает по непонятным причинам

      begin

        Xx:=x1;

        Yy:=y1;

      end;

   

         

if (a[x1,y1]=('a')) then  

 

begin //проверка для ркошета в разные стороны

 

    if (((x1-Xx)=(-1)) and ((y1-Yy)=(-1)) and ((x1=x5) and (y1=y5)))

       

      then

       begin      

        a[x5,y5]:=('an');

        delta1:=delta1*(-1);    

       end;

     

   

    if (((x1-Xx)=1) and ((y1-Yy)=(-1)) and ((x1=x5) and (y1=y5)))

     

     then  

      begin

        a[x5,y5]:=('an');

        delta2:=delta2*(-1);

      end;

       

       

  end;

   

TextColor(11);

 

gotoxy(x4,y4);

begin //отображение некоторых данных

writeln('live - ',live:1);

writeln('Xx ',Xx,'Yy ',Yy);

write ('X1 ',x1,'Y1 ',y1);

end;

 

 

TextColor(5);

 

if (x1=58) or (x1=25) then

delta1:=(-1)*(delta1);

if (y1=2) then

delta2:=delta2*(-1);

 

 

if ((y1=y-1) and (x1=x)) or ((y1=y-1) and (x1=x-1)) or ((y1=y-1) and (x1=x+1)) or ((y1=y-1) and (x1=x+2))  or ((y1=y-1) and (x1=x+3)) then

delta2:=delta2*(-1)

else

if ((y1=y) and (x1<>x)) or ((y1=y) and (x1<>x-1)) or ((y1=y) and (x1<>x+1)) or ((y1=y) and (x1<>x+2))  or ((y1=y) and (x1<>x+3)) then

begin

gotoxy(x1,y1);

write(' ');

delta2:=delta2*(-1);

y1:=y1+delta2-1;

live:=live-1;

end;

 

TextColor(13);

 

if keypressed then

begin

//if keypressed then

  j:=readkey;

    case j of

     #77:deltaGAMER:=3;//вправо

     #75:deltaGAMER:=(-3);//влево

     #27:Exit;

    else

     deltagamer:=(0);

    end;

 

  if (x=25) or ((x>55) and (x<59)) then

 deltagamer:=(-1)*(deltagamer);

 

 if (x=25) and (j=#77) or (x=56) and (j=#75)then

 deltagamer:=(-1)*(deltagamer);

 

 

  x:=x+(1*deltaGamer);

 

  if j<> #75 then

   begin

    gotoxy(x,y);

    write ('---');

    end;

  if j<> #77 then

   begin

    gotoxy(x,y);

    write ('---');

    end

  else

 

 

gotoxy(x+deltagamer*(-1),wherey);

write('   ');

gotoxy(x,y);

 

  end;

end;

 

until live=0;

 

begin

clrscr;

gotoxy(37,25);

writeln (' Defith');

gotoxy(37,27);

writeln (' press "r" for restart');

j:=readkey;

case j of

#114:goto restart1;

#82:goto restart1;

#170:goto restart1;

#138:goto restart1;

#27:end;

end;

 

end.

0,0(0 оценок)
Ответ:
evstratenko001
evstratenko001
03.11.2021 02:53

Исключение IndexOutOfRangeException ("Индекс находился вне границ массива") указывает на то, что в каком либо месте программы вы пытаетесь обратится к массиву с индексом, выходящим за его границы.

Вероятнее всего, конкретно в вашем коде ошибка может быть на строке 4, т.к вы объявляете имя a как массив на 100 элементов с допустимыми индексами от 1 до 100, но позже даёте пользователю право самому ввести требуемую размерность, и никак не проверяете вводимое пользователем значение. В таком случае любое число > 100 будет приводить к исключению IndexOutOfRangeException.

Что бы избежать исключительных ситуаций, вы можете пойти двумя путями:

1. Проверять вводимые данные на соответствие диапазону допустимых индексов для массива а

2. Использовать коллекции с динамической размерностью (Array of T или List<T>)  

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота