
Приветствуем читателей нашего сайта! Сегодня мы с вами решим задачи series29-40.
Series29-40
Series29. Даны целые числа K, N, а также K наборов целых чисел по N элементов в каждом наборе. Вывести общую сумму всех элементов, входящих в данные наборы.
Program series29;
var
k, n, a, i, j, summ: integer;
begin
write('Введите K: ');
readln(k);
write('Введите N: ');
readln(n);
for i:=1 to k do
for j:=1 to n do
begin
read(a);
summ := summ + a;
end;
write('Общая сумма всех элементов: ', summ);
end.Series30°. Даны целые числа K, N, а также K наборов целых чисел по N элементов в каждом наборе. Для каждого набора вывести сумму его элементов.
Program series30;
var
k, n, a, i, j, summ: integer;
begin
write('Введите K: ');
readln(k);
write('Введите N: ');
readln(n);
for i:=1 to k do begin
for j:=1 to n do
begin
read(a);
summ := summ + a;
end;
writeln('Сумма элементов: ', summ);
summ := 0;
end;
end.Series31. Даны целые числа K, N, а также K наборов целых чисел по N элементов в каждом наборе. Найти количество наборов, содержащих число 2. Если таких наборов нет, то вывести 0.
Program series31;
var
k, n, a, i, j, count: integer;
prov: boolean;
begin
write('Введите K: ');
readln(k);
write('Введите N: ');
readln(n);
for i:=1 to k do begin
for j:=1 to n do
begin
read(a);
if (a = 2) and (prov = false) then //prov = false, если набор не содержит число 2
begin
inc(count);
prov := true;
end;
end;
prov := false;
end;
write('Количество наборов, содержащих число 2: ', count);
end.Series32. Даны целые числа K, N, а также K наборов целых чисел по N элементов в каждом наборе. Для каждого набора вывести номер его первого элемента, равного 2, или число 0, если в данном наборе нет двоек.
Program series32;
var
k, n, a, i, j: integer;
prov: boolean;
begin
write('Введите K: ');
readln(k);
write('Введите N: ');
readln(n);
for i:=1 to k do begin
for j:=1 to n do
begin
read(a);
if (a = 2) and (prov = false) then //prov = true в том случае, когда 2 в наборе уже встречалась
begin
writeln('Номер первого элемента набора, равного 2: ', j);
prov := true;
end;
end;
if prov=false then writeln('Номер первого элемента набора, равного 2: ',0)
else prov:=false;
end;
end.Series33. Даны целые числа K, N, а также K наборов целых чисел по N элементов в каждом наборе. Для каждого набора вывести номер его последнего элемента, равного 2, или число 0, если в данном наборе нет двоек.
Program series33;
var
k, n, a, i, j, num: integer;
begin
write('Введите K: ');
readln(k);
write('Введите N: ');
readln(n);
for i := 1 to k do begin
for j := 1 to n do
begin
read(a);
if a = 2 then
num := n; //заносим номер элемента, равного 2, в переменную num
end;
writeln('Номер последнего элемента набора, равного 2: ', num);
num := 0;
end;
end.Series34. Даны целые числа K, N, а также K наборов целых чисел по N элементов в каждом наборе. Для каждого набора выполнить следующее действие: если в наборе содержится число 2, то вывести сумму его элементов; если в наборе нет двоек, то вывести 0.
Program series34;
var
k, n, i, j, a, summ: integer;
prov: boolean;
begin
prov := false;
write('Введите K: ');
readln(k);
write('Введите N: ');
readln(n);
for i := 1 to k do begin
for j := 1 to n do
begin
read(a);
summ := summ + a;
if a = 2 then
prov := true; //отмечаем, что число 2 в наборе встретилось
end;
if not prov then writeln(0)
else begin
writeln('Сумма элементов данного набора: ', summ);
prov := false;
end;
summ := 0;
end;
end.Series35. Дано целое число K, а также K наборов ненулевых целых чисел. Признаком завершения каждого набора является число 0. Для каждого набора вывести количество его элементов. Вывести также общее количество элементов во всех наборах.
Program series35;
var
a, k, i, summ, summ1: integer;
begin
write('Введите K: ');
readln(k);
for i:= 1 to k do
begin
read(a);
while a<>0 do
begin
inc(summ); //количество элементов данного набора
inc(summ1); //количество элементов всех наборов
read(a);
end;
writeln('Сумма элементов данного набора: ', summ);
summ := 0; //обнуляем значение переменной, отвечающей за подсчет кол-ва элементов в наборе
end;
write('Сумма элементов всех наборов: ', summ1);
end.Series36. Дано целое число K, а также K наборов ненулевых целых чисел. Каждый набор содержит не менее двух элементов, признаком его завершения является число 0. Найти количество наборов, элементы которых возрастают.
Program series36;
var
a, k, i, count, tmp: integer;
prov: boolean; {вводим логическую переменную, показывающую, была последовательность возрастающей (при false) или же нет (true)}
begin
write('Введите K: ');
readln(k);
for i:= 1 to k do
begin
read(tmp);
read(a);
while a<>0 do
begin
if a <= tmp then prov := true; {если возрастание последовательности нарушено, изменяем значение логической переменной}
tmp := a;
read(a);
end;
if prov = false then inc(count) {в конце итерации цикла for увеличиваем значение переменной count, если последовательность является возрастающей}
end;
writeln('Количество наборов, элементы которых возрастают: ', count);
end.Series37. Дано целое число K, а также K наборов ненулевых целых чисел. Каждый набор содержит не менее двух элементов, признаком его завершения является число 0. Найти количество наборов, элементы которых возрастают или убывают.
program series37;
var
a, k, i, count, tmp: integer;
up, down, prov: boolean;
begin
write('Введите K: ');
readln(k);
for i := 1 to k do
begin
read(tmp);
read(a);
while a <> 0 do
begin
if a <> tmp then //элементы не должны быть равны, если же они равны, выходим из цикла
begin
if (a > tmp) and (down = false) then //если два данных числа возрастают, и предыдущие числа тоже
up := true else //то обозначаем эту последовательность как возрастающую, дабы не путаться в будущем
if (a < tmp) and (up = false) then //аналогично поступаем и в случае с убыванием
down := true else //но если числа не равны, не возрастают и не убывают, то
begin
prov := true;
break; //выходим из цикла
end;
end
else begin //то есть если a = 0
prov := true; //это значит, что последовательность ни возрастает, ни убывает
break; //выход из цикла
end;
tmp := a;
read(a);
end;
if prov = false then inc(count) else prov := false;
up := false; //данная итерация цикла for завершается, а значит, возвращаем значения переменных в исходный вид
down := false;
end;
writeln('Количество наборов, элементы которых возрастают или убывают: ', count);
end.Series38. Дано целое число K, а также K наборов ненулевых целых чисел. Каждый набор содержит не менее двух элементов, признаком его завершения является число 0. Для каждого набора выполнить следующее действие: если элементы набора возрастают, то вывести 1; если элементы набора убывают, то вывести −1; если элементы набора не возрастают и не убывают, то вывести 0.
program series38;
var
a, k, i, tmp: integer;
up, down, prov: boolean;
begin
write('Введите K: ');
readln(k);
for i := 1 to k do
begin
read(tmp);
read(a);
while a <> 0 do
begin
if a <> tmp then
begin
if (a > tmp) and (down = false) then
up := true else
if (a < tmp) and (up = false) then
down := true else
begin
prov := true;
break;
end;
end
else begin
prov := true;
break;
end;
tmp := a;
read(a);
end;
if prov = false then begin
if up = true then writeln(1) else //совсем немного изменяем предыдущий код
writeln(-1) end
else begin
writeln(0);
prov := false;
end;
up := false;
down := false;
end;
end.Series39. Дано целое число K, а также K наборов ненулевых целых чисел. Каждый набор содержит не менее трех элементов, признаком его завершения является число 0. Найти количество пилообразных наборов (определение пилообразного набора дано в задании Series23).
За основу кода решения данной задачи я взяла решение series23. Как вы видите, оно почти не изменилось.
program series39;
// previous_digit = prev_d
// next_digit = next_d
var
i, count, k, prev_d, next_d, tooth_d: integer;
teeth: boolean;
begin
write('Введите K: ');
readln(k);
for i := 1 to k do
begin
teeth := true;
read(prev_d, tooth_d, next_d);
while next_d <> 0 do
begin
if (tooth_d > prev_d) and (tooth_d > next_d) or (tooth_d < next_d ) and (tooth_d < prev_d)
then
begin
prev_d := tooth_d;
tooth_d := next_d;
read(next_d);
end
else
begin
teeth := false;
break
end;
end;
if teeth
then
inc(count)
end;
writeln('Количество пилообразных наборов: ', count);
end.Series40. Дано целое число K, а также K наборов ненулевых целых чисел. Каждый набор содержит не менее трех элементов, признаком его завершения является число 0. Для каждого набора выполнить следующее действие: если набор является пилообразным (см. задание Series23), то вывести количество его элементов; в противном случае вывести номер первого элемента, который не является зубцом.
program series40;
// previous_digit = prev_d
// next_digit = next_d
var
i, count, k, prev_d, next_d, tooth_d: integer;
teeth: boolean;
begin
write('Введите K: ');
readln(k);
for i := 1 to k do
begin
teeth := true;
read(prev_d, tooth_d, next_d);
count := 3;
while next_d <> 0 do
begin
if (tooth_d > prev_d) and (tooth_d > next_d) or (tooth_d < next_d ) and (tooth_d < prev_d)
then
begin
prev_d := tooth_d;
tooth_d := next_d;
read(next_d);
inc(count)
end
else
begin
teeth := false;
break;
end;
end;
if (teeth = false) then
writeln('Номер первого элемента, который не является зубцом: ', count - 1);
if teeth
then
writeln('Количество элементов в наборе: ', count-1); //Вычитаем ноль, который элементом не является
end;
end.На сегодня всё! Если у вас возникли вопросы, задавайте их в комментариях. И не забывайте рассказывать о нашем сайте своим друзьям, кликая по этим замечательным круглым (квадратным) кнопочкам!
Всем привет. Не судите строго, но я считаю, что без использования массивов эти задачи не имеют ни малейшего смысла, так как не очень то удобно получить решения во время ввода данных, и после того, как данные будут введены искать » а что же нам тут показала наша задача».
Гараздо приятнее смотреть на результат работы такой задачи, например для
Всем привет. Не судите строго, но я считаю, что без использования массивов эти задачи не имеют ни малейшего смысла
program mas;
uses crt;
var k,n,i,j:integer;
a:array[1..100,1..100] of real;
l:boolean;
begin
clrscr;
writeln(‘Введите размерность матрицы k,n: ‘);
readln(k,n);
for i:=1 to k do
for j:=1 to n do
begin
write(‘a[‘,i,’,’,j,’] = ‘);
readln(a[i,j]);
end;
for i:=1 to k do
begin
l := false;
for j:=1 to n do
if a[i,j] = 2 then
begin
l:=true;
writeln(‘В строке ‘,i,’ индекс элемента равного двум ‘,j);
break;
end;
if not l then
writeln(‘В строке ‘,i,’ элемента равного двум нет’);
end;
readln;
end.
всем привет))помогите решить задачу в Паскале.
Перемножение двух матриц.
Заданы трехмерные матрицы
одинаковых размеров 7x7x7,
заполненные случайными числами из диапазона [1, 100]. Перемножить их элементы,
имеющие одинаковые индексы, и вывести результаты на экран и записать в файл
«output.txt».
у вас ошибочка в 32 задании writeln(‘Номер первого элемента набора, равного 2: ‘,n);
а должно быть так writeln(‘Номер первого элемента набора, равного 2: ‘,j);
Ай-яй-яй, у вас ошибка в Series33.
Не «num := n», а «num := j»!
У вас ошибка в Series36.
Вы коде вы пропустили одну строчку, из-за которой весь код не работает. Итак, вводим K=4 (то есть у нас 4 набора). Теперь, если в первом наборе НЕТ возрастающей последовательности, а в ПОСЛЕДУЮЩИХ она есть, то эти последующие наборы не будут засчитываться! А всё потому, что в начале работы с каждым набором ваша переменная «prov» типа boolean должна снова становиться «false». Иначе после ввода элементов первого набора, который НЕ является возрастающим, все последующие после него наборы, которые ЯВЛЯЮТСЯ возрастающими, НЕ будут засчитаны.