Одномерные массивы

Автор: Пользователь скрыл имя, 25 Февраля 2013 в 17:46, контрольная работа

Описание работы

Пример 2.1. Вычислить сумму элементов числового массива A = (a1 , a2 , ... , aN ).
Пример 2.2. Найти наибольший элемент числового массива A = (a1, a2 , ..., aN ) и его номер.
Пример 2.3. В баскетбольную команду могут быть приняты ученики, рост которых превышает 170 см. Составьте список кандидатов в команду из учеников класса.
Пример 2.5. Дан массив X(N). Получить новый массив Y(N) такой, что в нем сначала идут положительные числа, затем нулевые, и затем отрицательные из X.

Работа содержит 1 файл

Одномерны массив. Схема заданий.doc

— 146.00 Кб (Скачать)

 

Тема: Одномерные массивы

Алгоритмы, реализуемые  с помощью циклов типа ДЛЯ

Циклы типа для применяются, когда число повторений цикла известно к началу его выполнения.  

Язык

Пример

Величина шага

Школьный АЯ

 нц  для  i  от  1  до  N   
     тело цикла   
  кц

Всегда 1

Pascal

For  i := 1  to  N  do   
     тело цикла ;

 1

For  i := N  downto  1  do   
     тело цикла ;

-1


 

 

Пример 2.1. Вычислить сумму элементов числового массива   A = (a1 , a2 , ... , aN ). 

Тест

Данные

Результат

N=5

A=(3, 5, -2, 6, 3)

S=15.0


 

 

Школьный  АЯ 

алг Сумма (арг цел N, арг вещ

           таб A[1:N], рез вещ S) 

 дано N>0

нач цел i 

S:=0 

 нц для i от 1 до N

    S := S + A[i] 

 кц

кон

Исполнение алгоритма

i

S

 

1

0 + a1 = 0+3 = 5 

2

a1 + a2 = 3+5 = 8 

3

a1+a2+a3 = 8-2 = 6 

4

a1+a2+a3+a4 = 6+6 = 12 

5

a1+a2+a3+a4+a5 = 12+3=15


 

 

  

Pascal 

Program Summa; 

Uses Crt; 

Type Mas = Array [1..20] of Real; 

Var A    : Mas;

      i, N : Integer;

      S    : Real;

BEGIN 

 ClrScr;    {очистка экрана } 

Write('Введите N = '); 

ReadLn(N); {ввод значения N} 

 For i := 1 to N dо {цикл по элементам массива}

    begin

      Write('A [ ', i , ' ] = ');

      ReadLn(A[i])   {ввод элементов массива}

    end; 

 S := 0; {присваивание начального значения} 

 For i := 1 to N do S := S+A[i]; {суммирование}  

WriteLn; 

 WriteLn('Сумма равна ', S : 5 : 1); 

 ReadLn

END.

Блок-схема


 

  

Результаты работы Pascal-программы   
 

 Введите N = 5 <Enter>    
  A[1] =  3   <Enter>    
  A[2] =  5   <Enter>    
  A[3] = -2   <Enter>    
  A[4] =  6   <Enter>    
  A[5] =  3   <Enter>    

 Сумма равна  15.0


 
 

 

 

Пример 2.2. Найти наибольший элемент числового массива A = (a1, a2 , ..., aN ) и его номер. 

 

Тест 

 

Данные

Результаты

N=4

A=(3, -1, 10, 1)

Amax=10

K=3


 

 

 

 

 

Школьный  АЯ 

алг МаксЭлемент (арг цел N, арг вещ таб A[1:N],

                 рез вещ Amax, рез цел k)

нач цел i 

Amax := A[1]; k := 1 

 нц для i от 2 до N

    если A[i] > Amax

      то Amax:=A[i]; k := i

    все 

 кц

кон

Исполнение  алгоритма   
 

i

A[i] > Amax

Amax

k

2

3

4

-

+

-

3

10 

1


 

Блок-схема 


Pascal

Program MaxElem; 

Uses Crt; 

Type Mas = Array [1..20] of Real; 

Var A    : Mas;

      i, N : Integer;

      k    : Integer;

      Amax : Real;

BEGIN 

 СlrScr; 

Write('Введите N = '); 

ReadLn(N); 

 For i := 1 to N do {Ввод значений элементов массива А}

    begin

      Write('A [ ', i, ' ] = '); ReadLn(A[i])

    end; 

 Amax := A[1]; k:=1; {Поиск максимального элемента}  

 For i := 2 to N do

    If A[i] > Amax then

      begin

        Amax := A[i]; k := i

      end; 

 WriteLn; WriteLn('Наибольший элемент' , k , '-й');  

 WriteLn('Его значение ', Amax : 5 : 1); ReadLn

END. 

  

 

 

 

Пример 2.3. В баскетбольную команду могут быть приняты ученики, рост которых превышает 170 см. Составьте список кандидатов в команду из учеников класса.  

 

Система тестов 

 

Номер 

теста

Проверяемый 

случай

Число 

учеников

Фамилии

Рост

Результаты

1

Есть 

кандидаты

3

Кулов 

Чехин 

Уваров

171

165

178

Кулов 

Уваров

2

Нет 

кандидатов

2

Ершов 

Иванов

170

165

Нет 

кандидатов


 

 

Школьный  АЯ

алг Баскетбол (арг цел N, арг лит таб Фам[1:N], арг вещ

               таб Рост[1:N], рез лит таб Канд [1:N] )

нач цел i, k 

k:=0 

 нц для i от 1 до N | запись фамилий кандидатов в таблицу Канд

    если Рост[i]>170

      то k:=k+1; Канд [k] := Фам [i]

    все 

 кц 

 если k=0

    то вывод "В КЛАССЕ НЕТ КАНДИДАТОВ В КОМАНДУ."

    иначе нц для i от 1 до k

            вывод Канд [i]

          кц 

все

кон

Исполнение алгоритма  

 

N теста

i

Рост[i] > 170

K

Кондидаты в команду

1

1

2

3

+

-

+

0

1

2

Кулов  

Уваров

2

1

2

-

-

0

-


 

   

Pascal

Program BascetBall; 

Uses Crt; 

Var

     SurName : Array [1..30] of String;  { фамилии учеников }

     Height  : Array [1..30] of Real;    { рост учеников }

     Cand    : Array [1..30] of String;  { фамилии кандидатов }

     NPupil, i, K : Integer;             { NPupil - число учеников,

                                           K - количество зачисленных}

BEGIN ClrScr; 

 Write('В КОМАНДУ ЗАЧИСЛЯЮТСЯ УЧЕНИКИ, '); 

WriteLn('РОСТ КОТОРЫХ ПРЕВЫШАЕТ  170 СМ.'); WriteLn; 

Write('Сколько всего учеников ? '); 

ReadLn(NPupil); 

WriteLn('Введите фамилии  и рост учеников :'); 

 For i := 1 to NPupil do

    begin Write(i, '. Фамилия - '); ReadLn(SurName[i]);

          Write('     Рост - ');    ReadLn(Height[i]);

    end; WriteLn; 

 K:=0; { Составление списка команды } 

 For i := 1 to NPupil do

    If Height[i]>170 then

      begin K:=K+1; Cand[K] := SurName[i] end; 

 If K=0 then WriteLn('В КЛАССЕ НЕТ КАНДИДАТОВ В КОМАНДУ.')

    else

      begin WriteLn('КАНДИДАТЫ В БАСКЕТБОЛЬНУЮ КОМАНДУ :');

            For i := 1 to K do WriteLn( i, '. ' , Cand[i]);

      end; 

ReadLn

END. 

  
 

 

Пример 2.4. Для заданного x вычислить  

Здесь n! = 1. 2. 3 .... n (читается как "n-факториал"). 

 

Тест 

 

Данные

Результат

X=1

n=3


 

 

Школьный  АЯ

алг Сумма Ряда (арг вещ х, арг цел n, рез вещ S)

нач цел i, вещ P     | P - очередное слагаемое  

S := 1; P := 1 

 нц для i от 1 до n

    P := - P*x /i    | получение очередного слагаемого

    S := S + P 

 кц

кон

Pascal 

Program SumUp; 

Uses Crt; 

Var x, S, P : Real; 

                {P - очередное слагаемое}

      i, n : Integer;

BEGIN ClrScr; 

 Write('Введите n = ');  ReadLn(n); 

Write('Введите x = ');  ReadLn(x); WriteLn; 

 S := 1; P := 1; 

For i := 1 to n do

    begin

      P := - P*x /i; {получение очередного слагаемого}

      S := S + P

    end; 

 WriteLn('О т в е т : S = ', S : 7 : 3 ); ReadLn

END. 

Блок-схема 


 

  

 

 Результат  работы   программы   
 

Введите n = 3   <Enter>    
Введите x = 1   <Enter>  

Ответ:  S =  .3333333


 

 

 

 

 

Пример 2.5. Дан массив X(N). Получить новый массив Y(N) такой, что в нем сначала идут положительные числа, затем нулевые, и затем отрицательные из X.  

 

Тест 

 

Данные

Результат

N=7 

X=(-1, 2, 0, 4, -3,-2,0) 

Y=(2, 4, 0, 0, -1, -3, -2)


Школьный  АЯ

алг Новый Порядок (арг цел N, арг вещ таб Х[1:N], рез вещ таб Y[1:N])

нач цел i, k   | k - индекс массива Y 

k := 0 

 нц для i от 1 до N | Занесение в Y положительных чисел из X   

 если X[i] > 0      

 то k := k+1; Y[k] := X[i]

    все 

 кц 

 нц для i от 1 до N | Занесение в Y чисел, равных нулю, из X

    если X[i] = 0

      то k := k+1; Y[k] := X[i]

    все 

 кц 

 нц для i от 1 до N | Занесение в Y отрицательных чисел из X

    если X[i] < 0

      то k := k+1; Y[k] := X[i]

    все 

 кц

кон

Pascal 

Program NewOrder; 

Uses Crt; 

Var N, i, k : Integer;

      X, Y    : Array [1..20] of Real;

BEGIN 

 ClrScr; 

Write('Введите N = '); ReadLn(N); 

For i := 1 to N do

    begin

      Write('X[ ', i, ' ] = '); ReadLn(X[i])

    end; 

 k:=0; 

For i := 1 to N do

    If X[i]>0 then

      begin k:=k+1; Y[k]:=X[i]

      end; 

For i := 1 to N do

    If X[i]=0 then

      begin k:=k+1; Y[k]:=X[i]

      end; 

For i := 1 to N do

    If X[i]<0 then

      begin k:=k+1; Y[k]:=X[i]

      end; 

 Write('О т в е т : полученный массив'); 

 For i := 1 to N do Write(Y[i] : 5 : 1); 

 WriteLn; ReadLn

END.

Блок-схема

(фрагмент)


 

 

 

 

Задачи для  самостоятельного решения

 

 

2.1. Подсчитайте число и сумму положительных, число и произведение отрицательных элементов заданного массива A(N).

 

2.2   Варианты заданий Array1-140  из электронного задачника по программированию

 М.Э. Абрамяна (стр 49-63)

ТЕМА: № задач

Формирование

массива и вывод его  элементов

1-17

Анализ элементов массива

 

18-50

Работа с несколькими  массивами

51-64

Преобразование массива

65-89

90-111

*112-115

Серии

116-130

Множества точек на плоскости

131-140

Модуль с основными  алгоритмами

обработки одномерных массивов

Баллы

3

4

2

4

3

3

4

1

1-3

5

18,22,

33, 34

 

51

70   90

116

140

 

2

1-3

6

19, 21

32, 35

52

69 91

117

139

 

3

1-3

8

18,22,

31, 36

53

68 92

118

138

 

4

1-3

9

19, 21

30, 37

54

67 93

119

137

 

5

1-3

10

18,22,

29, 38

55

66 94

120

136

 

6

1-3

13

19, 21

28, 39

56

65 95

121

135

 

7

1-3

14

18,22,

27, 40

57

64 96

122

134

 

8

1-3

15

19, 21,

26, 41

58

63 97

123

133

 

9

1-3

16

18,22,

25, 42

59

62 98

124

132

 

10

1-3

17

19, 21

24, 43

60

61 99

125

131

 



 

 

 

Дополнительные индивидуальные задания ( 3 балла)

Задания учебника : 44-50;  71-89; 100-111;  112-115; 126-130

2.34. У кассы аэрофлота выстроилась очередь из N человек. Время обслуживания кассиром i-го клиента равно Ti (i = 1, ..., N).  
  а) Определите время пребывания в очереди каждого клиента;  
  б) Укажите номер клиента, для обслуживания которого кассиру потребовалось больше всего время.

Информация о работе Одномерные массивы