РефератыИнформатика, программирование1010 задач с решениями программированием на Паскале

10 задач с решениями программированием на Паскале

Задача 1.


Условие: Найти среднее арифметическое общей совокупности элементов тех строк заданной матрицы, последний элемент которых равен 1.


Программа:


program S2_Z1;


type m=array[1..100,1..100] of integer;


var A:m;


procedure vvod(m,n:integer;var x:m);


var i,j: integer;


begin writeln('введите элементы массива');


for i:=1 to m do


for j:=1 to n do


read(x[i,j]);


end;


procedure arf(m,n:integer;var x:m);


var i,j,s:integer;sr:real;


begin


for i:=1 to m do begin s:=0; sr:=0;


if x[i,n]=1 then begin


for j:=1 to n do


s:=s+x[i,j]; sr:=s/n;


writeln ('среднее арифметическое ',i,' строки равно ',sr:5:2); end; end;


end;


begin


vvod(3,3,A);


arf(3,3,A);


end.


Задача 2.


Условие: Получить массив Х(n) по правилу: Хi
=1, если в i-м столбце заданной матрицы есть хотя бы один элемент превышающий заданное значение С, иначе Xi
=0. Найти общее число элементов, больших С.


Программа:


program S2_Z2;


type m=array[1..100,1..100] of integer; mas=array[1..100] of integer;


var A:m;


procedure vvod(m,n:integer;var x:m);


var i,j: integer;


begin writeln('введите элементы массива');


for i:=1 to m do


for j:=1 to n do


read(x[i,j]);


end;


procedure moped(m,n:integer;var y:m);


var i,j,c,k:integer; X:mas;


begin k:=0; writeln('введите величину С='); readln(c);


for j:=1 to n do x[j]:=0;


for j:=1 to n do


for i:=1 to m do


if y[i,j]>c then begin X[j]:=1; k:=k+1; end;


writeln('элементы массива Х:');


for j:=1 to n do write(X[j],' ');


writeln;


writeln('число элементов матрици превышающих число ',c,' равно ',k)


end;


begin


vvod(2,5,A);moped(2,5,A);readln;


end.


Задача 3.


Условие: Дан массив A(5,5). Изменить часть матрицы, находящуюся под главной диагональю следующим образом: если элемент A[i,j] этой части матрицы больше элемента A[j,i], то задать элементу A[i,j] новое значение, равное полу сумме двух этих элементов.


Программа:


program S2_Z3;


type m=array[1..100,1..100] of real;


var A:m;


procedure vvod(m,n:integer;var x:m);


var i,j: integer;


begin


writeln('введите элементы массива');


for i:=1 to m do


for j:=1 to n do


read(x[i,j]);


end;


procedure mat(m,n:integer;var x:m);


var i,j: integer; t:real;


begin


writeln('изменённый матрица A[i,j] будет выглядеть так');


for i:=1 to m do


for j:=1 to n do


if i>j then if x[i,j] > x[j,i] then x[i,j]:=(x[i,j]+x[j,i])/2;


for i:=1 to m do


for j:=1 to n do


write( A[i,j]:2:1,' ');


end;


begin


vvod(5,5,A);


mat(5,5,A);


end.


Задача 4.


Условие: Определить самую длинную последовательность подряд идущих нулей в заданном одномерном массиве.


Программа:


program S2_Z4;


type m=array[1..100] of integer;


var A:m;


procedure vvod(m:integer;var x:m);


var i: integer;


begin writeln('введите элементы массива');


for i:=1 to m do


read(x[i]);


end;


procedure moped(m:integer;var x:m);


var i,k,n:integer;


begin k:=0;n:=0;


for i:=1 to m do


if x[i]=0 then k:=k+1


else begin


if x[i-1]=0 then


if k>n then n:=k;


k:=0;end;


if k>n then


writeln('самая большая последовательность нулей состовляет ',k)


else


writeln('самая большая последовательность нулей состовляет ',n);


end;


begin


vvod(20,A); moped(20,A);


end.


Задача 5.


Написать программу, считывающую заданное количество одномерных массивов, определяющую минимальный элемент в каждом из них и подсчитывающую количество нулей среди элементов, расположенных за минимальным.


Программа:


program S2_Z5;


type m=array[1..100] of integer; mas=array[1..10] of m;


var A:mas;


procedure vvod(kn:integer;x:mas);


var y:m;i,t,k,min,k0:integer;


begin


for k:=1 to kn do begin


k0:=0; min:=1000;


writeln('введите кол-во эл-ов в ',k,'-ом массиве');read (t);


writeln('теперь введите элементы этого массива');


for i:=1 to t do


read(y[i]);


for i:=1 to t do


if y[i]<min then min:=y[i];


writeln('минимальный элемент этого массива равен ',min);


for i:=1 to t do


if y[i]=min then for i:=i to t do


if y[i]=0 then k0:=k0+1;


writeln('количество нулей массива после минимального значения равно ',k0);


write;


write;


end;


end;


begin


vvod(5,A);


end.


Задача 6.


Условие: Написать программу подсчитывающую в каждой из заданных строк количество слов `мама`.


Программа:


program S2_Z6;


type str=string[100]; ms=array[1..100] of str;


var A:ms;


procedure vvod(m:integer;var x:ms);


var i:integer;


begin


for i:=1 to m do begin writeln('введите ',i,'-ю строку');


/>

readln(A[i]);end; end;


procedure moped(m:integer;var x:ms);


var i,k:integer; st:str;


begin


for i:=1 to m do begin k:=0;


st:=A[i];


while pos('мама',st)<>0 do begin k:=k+1;delete(st,pos('мама',st),4); end;


writeln('кол-во слов мама в ',i,'-ой строке ',k);end;end;


begin


vvod(5,A);


moped(5,A);


end.


Задача 7.


Условие: Дан массив из 7 строк, в каждой из которых не более 50 элементов. Удалить из каждой строки все пробелы и записать количество удалённых пробелов в конец этой строки.


Программа:


program S2_Z7;


type s=string[50]; ms=array[1..100] of s;


var A:ms;


procedure vvod(m:integer;var x:ms);


var i:integer;


begin


for i:=1 to m do begin writeln('введите ',i,'-ю строку');


readln(A[i]);end; end;


procedure prob(m:integer;var x:ms);


var i,k:integer;st,p:s;


begin


for i:=1 to m do begin


st:=x[i]; k:=0;


while pos(' ',st)<>0 do begin delete(st,pos(' ',st),1);k:=k+1;end;


str(k,p);


insert(p,st,length(st)+1); writeln(i,'-ая строка:', st);end;


end;


begin


vvod(7,A);prob(7,A);


end.


Задача 8.


Условие: В текстовом файле отсортировать строки по возрастанию их длин.


Прграмма:


program S2_Z8;


type ft=text; mas=array[1..100] of string;


var f1:ft;k,i,j:integer;s:string;A:mas;


procedure sozd(var f:ft;n:integer);


var i:integer; s:string;


begin assign(f,'c:1.txt');rewrite (f);


for i:=1 to n do


begin writeln('введите ',i,'-ю строку');readln(s);


writeln(f,s);


end; close(f);


end;


procedure w(var f:ft);


var s:string;


begin writeln('измененный фаил будет выглядеть так:');


reset(f);


while not eof(f) do begin readln(f,s); writeln(s)


end; close(f);


end;


begin writeln('введите кол-во строк в файле'); readln(k);


sozd(f1,k);


reset(f1);


while not eof(f1) do


begin for i:=1 to k do begin readln(f1,s); A[i]:=s;end;end;


for j:=1 to k do


for i:=1 to k do


if length(a[i])<length(a[i-1]) then begin


s:=a[i];a[i]:=a[i-1];a[i-1]:=s;end;


close(f1);


rewrite(f1);


for i:=1 to k do writeln(f1,a[i]);


close(f1);


w(f1);


end.


Задача 9.


Условие: В файле из вещественных чисел переставить элементы таким образом, чтобы сначала были записаны все положительные, затем все отрицательные, а потом все нули.


Программа:


program S2_Z9;


type fi=file of integer; m=array[1..100] of integer;


var f1:fi;n:integer;


procedure vvod(n:integer;var f:fi);


var i,a:integer;


begin


assign (f,'c:f.int');


rewrite(f);


writeln('Введите компоненты файла');


for i:=1 to n do begin


read(a);write(f,a);end;


close (f);


end;


procedure sort(n:integer;var f:fi);


var buf:fi;s,i,j,k:integer; a:m;


begin


reset(f);


assign (buf,'c:buf.int');


rewrite(buf);


while not eof(f) do begin


for i:=1 to n do begin read(f,s); A[i]:=s;end;end;


for j:=1 to n do


for i:=1 to n do


if a[i]>a[i-1] then begin


s:=a[i];a[i]:=a[i-1];a[i-1]:=s;end;


k:=0;


for i:=1 to n do


if a[i]=0 then begin s:=a[i];a[i]:=a[n-k];a[n-k]:=s;k:=k+1;end;


for i:=1 to n do write(buf,a[i]);


close(buf);close(f);


erase(f);


rename(buf,'c:f.int');


end;


procedure w(var f:fi);


var a:integer;


begin


reset(f);


while not eof(f) do begin


read(f,a);write(a:4);end;


end;


begin


writeln('Задайте кол-во компонентов файла');readln(n);


vvod(n,f1);


sort(n,f1);


w(f1);


write;


end.


Блок схема:


Задача 10.


Условие: Записать в конец каждой строки текстового файла количество слов в этой строки.


Программа:


program S2_Z10;


type ft=text; mas=array[1..100] of string;


var f1:ft;k:integer;


procedure sozd(var f:ft;n:integer);


var i:integer; s:string;


begin assign(f,'c:f.txt');rewrite (f);


for i:=1 to n do


begin writeln('введите ',i,'-ю строку');readln(s);


writeln(f,s);


end; close(f);


end;


procedure kslov(var f:ft);


var s,pk,p:string;k:integer; buf:ft;


begin


reset(f);


assign(buf,'c:buf.txt');


rewrite(buf);


while not eof(f) do begin k:=0;readln(f,s);


p:=s;


while pos(' ',p)>1 do begin k:=k+1; delete(p,1,pos(' ',p));end;


str(k,pk);insert(pk,s,length(s)+1); writeln(buf,s);end;


close(f); close(buf);


erase(f);


rename(buf,'c:f.txt');


end;


procedure w(var f:ft);


var s:string;


begin writeln('измененный фаил будет выглядеть так:');


reset(f);


while not eof(f) do begin readln(f,s); writeln(s)


end; close(f);


end;


begin


writeln('введите кол-во строк в файле'); readln(k);


sozd(f1,k); kslov(f1);w(f1);


end.


Блок схема:

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

Название реферата: 10 задач с решениями программированием на Паскале

Слов:1086
Символов:12634
Размер:24.68 Кб.