Списки. Язык Си 1. Создать список из n (n> 0) элементов (n вводится с клавиатуры), если другое количество элементов не указано в конкретной задаче. 2. Тип ключей (информационных полей) задано по варианту. 3. Значение элементов списка взять самостоятельно такими, чтобы можно было продемонстрировать корректность работы алгоритма программы. ввод значений элементов списка можно выполнить произвольным (случайные числа, формирование значений по формуле, введение из файла или с клавиатуры). 4. Вид списка (очередь, стек, дек, прямой односвязный линейный список, обратный односвязный линейный список, двозвьязний линейный список, односвязный кольцевой список, двозвьязний кольцевой список) выбрать самостоятельно с целью наиболее целесообразного решения поставленной по варианту задачи. 5. Выполнить над созданным списком действия, указанные по варианту, и корректное освобождения памяти списка. 6.(Важно) При выполнении заданных действий, выводе значений элементов и освобождении памяти списке считать, что длина списка (количество элементов n или 2n) неизвестна на момент выполнения этих действий. 7. Повторяющиеся части алгоритма необходимо оформить в виде процедур или функций (для создания, обработки, вывода и освобождения памяти списков) с передачей списка с параметра(ов).
Перевод условия задачи: Ключами элементов списка являются целые числа. Выполнить циклический сдвиг элементов списка на k позиций вправо (k - натуральное и не превышает количества элементов списка). При необходимости разрешается использовать еще один список, другие структуры данных, кроме простых переменных, использовать запрещается.
1) Логическое выражение (A v С) & В соответствует данному фрагменту таблицы истинности;
2) Логическое выражение (A v В) & (С → А) не соответствует данному фрагменту таблицы истинности, т. к. уже на первом наборе значение рассматриваемого логического выражения не совпадает со значением F. Проведение дальнейших вычислений не имеет смысла;
3) Логическое выражение (А & В v С) & (В → А & С) не соответствует данному фрагменту таблицы истинности;
4) Логическое выражение (А → В) v (С v А → В) соответствует данному фрагменту таблицы истинности.
const n=5; var a:array[1..n,1..n] of integer; x:array[1..n] of double; i,j,k:byte; begin Randomize; Writeln('*** Исходный массив ***'); for i:=1 to n do begin for j:=1 to n do begin a[i,j]:=Random(51)-25; Write(a[i,j]:4) end; Writeln end; Writeln('*** Массив x ***'); for j:=1 to n do begin x[j]:=0; k:=0; for i:=1 to n do if a[i,j] mod 2=0 then begin x[j]:=x[j]+a[i,j]; Inc(k) end; if k>0 then x[j]:=x[j]/k; Write(x[j]:0:5,' ') end; Writeln end.
2) Логическое выражение (A v В) & (С → А) не соответствует данному фрагменту таблицы истинности, т. к. уже на первом наборе значение рассматриваемого логического выражения не совпадает со значением F. Проведение дальнейших вычислений не имеет смысла;
3) Логическое выражение (А & В v С) & (В → А & С) не соответствует данному фрагменту таблицы истинности;
4) Логическое выражение (А → В) v (С v А → В) соответствует данному фрагменту таблицы истинности.
const
n=5;
var
a:array[1..n,1..n] of integer;
x:array[1..n] of double;
i,j,k:byte;
begin
Randomize;
Writeln('*** Исходный массив ***');
for i:=1 to n do begin
for j:=1 to n do begin
a[i,j]:=Random(51)-25;
Write(a[i,j]:4)
end;
Writeln
end;
Writeln('*** Массив x ***');
for j:=1 to n do begin
x[j]:=0; k:=0;
for i:=1 to n do
if a[i,j] mod 2=0 then begin
x[j]:=x[j]+a[i,j]; Inc(k)
end;
if k>0 then x[j]:=x[j]/k;
Write(x[j]:0:5,' ')
end;
Writeln
end.
Тестовое решение:
*** Исходный массив ***
-10 18 -8 -15 5
-21 -18 6 -2 9
-7 22 -4 3 14
21 16 -10 -18 -9
17 3 -14 -18 12
*** Массив x ***
-10.00000 9.50000 -6.00000 -12.66667 13.00000