Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Pascal - лаб. по изучению.doc
Скачиваний:
6
Добавлен:
04.11.2018
Размер:
992.77 Кб
Скачать

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

Номер

теста

Проверяемый 

случай

Число 

студентов

Фамилии

Рост

Результаты

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

-

  TurboPascal

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.

Пример 4. Дан массив 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]

  все

  кц

кон

Turbo 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.

Блок-схема

(фрагмент)

Пример 5 Заполнить матрицу порядка n по следующему образцу:

1

2

3

...

n-2

n-1

n

2

1

2

...

n-3

n-2

n-1

3

2

1

...

n-4

n-3

n-2

...

...

...

...

...

...

...

n-1

n-2

n-3

...

2

1

2

n

n-1

n-2

...

3

2

1

Program Massiv12;

Var I, J, K, N : Integer; A : Array [1..10, 1..10] Of Integer;

Begin

Write('Введите порядок матрицы: '); ReadLn(N);

For I := 1 To N Do

For J := I To N Do

Begin

A[I, J] := J - I + 1; A[J, I] := A[I, J];

End;

For I := 1 To N Do

Begin

WriteLn;

For J := 1 To N Do Write(A[I, J]:4);

End

End.

Задача 6. Дана целочисленная квадратная матрица. Найти в каждой строке наибольший элемент и поменять его местами с элементом главной диагонали.

Program Obmen;

Var N, I, J, Max,Ind, Vsp : Integer;A : Array [1..15, 1..15] Of Integer;

Begin

WRITE('Введите количество элементов в массиве: '); READLN(N);

FOR I := 1 TO N DO

FOR J := 1 TO N DO

Begin

WRITE('A[', I, ',', J, '] '); READLN(A[I, J])

End;

FOR I := 1 TO N DO

Begin

Max := A[I, 1]; Ind := 1;

FOR J := 2 TO N DO

IF A[I, J] > Max THEN

Begin

Max := A[I, J]; Ind := J

End;

Vsp := A[I, I]; A[I, I] := A[I, Ind]; A[I, Ind] := Vsp

End;

FOR I := 1 TO N DO

Begin

WriteLn;

FOR J := 1 TO N Do Write(A[I, J] : 3);

End; WriteLn

End.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]