Версия для печати темы
Секция спортивного ориентирования МИФИ _ Общий _ ПАСКАЛЬ!!
Автор: Cheeees December 18 2005, 17:51
Помогите пожалуйста с информатикой! нужно к четвергу,к зачету сдать проги.Они в принципе не сложные,но их очень много, а я паскаль вообще не знаю,и сама все сделать не могу. Если есть время то напишите пожалуйста эти проги:
1.(104) Даны натуральные числа N и X. Задана случайная целочисленная матрица N*N . Получить последовательность а(1), а(2),....,а(N) из нулей и единиц,где а(i)=1 если все элементы i-й строки =< X, и а(i)=0 если все элементы i-ой строки >X.
2.(74) Написать программу , которая позволяла бы выводить на экран текст и обрабатывать нажатие клавиши Delete,то есть затирать символы в текущем положении курсора. Сделать возможным перемещение курсора стрелками по экрану.
3.(81) Написать программу,которая позволяет определять код любых клавиш,в том числе системных, и вывод их кода на экран.Выход осуществляется с помощью цифры "0".
4.(62)Найти все делители заданного натурального числа . Реализовать функцию для проверки, является ди данное число делителем другого.
5.(66) Дана квадратная матрица N*N , элементами которой являются целые числа. Определить строку матрицы,имеющую наибольшее количество четных элементов. Написать функцию нахождения количества четных элементов в строке.
Автор: Scorpion[MG] December 18 2005, 18:56
я знаю алгоритм, но паскаль я уже забыл (последний раз писал прогу - три года назад)
Автор: Cheeees December 18 2005, 19:04
но если не саму прогу,то хотя бы подскажите как это осуществить,в смысле какие там действия должны быть..
Автор: ~~HellHounD~~ December 18 2005, 20:48
Цитата
1.(104) Даны натуральные числа N и X. Задана случайная целочисленная матрица N*N . Получить последовательность а(1), а(2),....,а(N) из нулей и единиц,где а(i)=1 если все элементы i-й строки =< X, и а(i)=0 если все элементы i-ой строки >X.
Условия задачи поставленны некорректно
Цитата
3.(81) Написать программу,которая позволяет определять код любых клавиш,в том числе системных, и вывод их кода на экран.Выход осуществляется с помощью цифры "0".
Что подразумевается под системными клавишами?
Цитата
4.(62)Найти все делители заданного натурального числа . Реализовать функцию для проверки, является ди данное число делителем другого.
Халява.
Функция для проверки на делимость числа a на число b:
Цитата
function division(a,b:integer):boolean;
begin
if (a mod ) = 0 then division:=true else division:=false;
end;
Цитата
5.(66) Дана квадратная матрица N*N , элементами которой являются целые числа. Определить строку матрицы,имеющую наибольшее количество четных элементов. Написать функцию нахождения количества четных элементов в строке.
Функция для подсчета числа четных элементов:
Цитата
function get_count(m:array of integer;long:integer):integer;
var i,count:integer;
begin
count:=0;
for i:=0 to long-1 do
if(m[i] mod 2 = 0) then inc(count);
get_count:=count;
end;
Автор: ViNiaMin December 18 2005, 22:12
У меня в лекции за II семестр есть вариант решения 2.(74) на Си
Логика вроде правильная, но не проверял
Автор: Cheeees December 19 2005, 17:43
Цитата(~~HellHounD~~ @ December 18 2005, 20:48) [snapback]1059[/snapback]
Условия задачи поставленны некорректно
Учловия полностью списаны с книжки слово в слово,такие какие они там были.Автора книжки не знаю,т.к. списывала задачи на инфе.
Цитата(~~HellHounD~~ @ December 18 2005, 20:48) [snapback]1059[/snapback]
Что подразумевается под системными клавишами?
клавиши F1-F12,Ctrl и кажется Alt.
Автор: ~~HellHounD~~ December 19 2005, 19:08
Цитата
Учловия полностью списаны с книжки слово в слово,такие какие они там были.Автора книжки не знаю,т.к. списывала задачи на инфе.
Цитата
Получить последовательность а(1), а(2),....,а(N) из нулей и единиц,где а(i)=1 если все элементы i-й строки =< X, и а(i)=0 если все элементы i-ой строки >X.
Не учтен случай, когда есть элементы больше и меньше X, что с такими делать?
Автор: Cheeees December 19 2005, 19:24
Цитата(~~HellHounD~~ @ December 19 2005, 19:08) [snapback]1084[/snapback]
Не учтен случай, когда есть элементы больше и меньше X, что с такими делать?
ой да ,извините, не заметила...тогда а=0.
Автор: TheBestMan December 19 2005, 19:42
Блиин. А может еще мне поможете написать процедуру (на паскале) удаления из строки слов менее трех символов (разделенных пробелами, с учетом "," ".". Но можно и без этого). Финальную лабу чудом сдал, а со сторками разбираться не охота.
Автор: Skazitel December 19 2005, 19:50
Первую кинул в Асю.
Цитата(TheBestMan @ December 19 2005, 19:42) [snapback]1091[/snapback]
а со сторками разбираться не охота.
Вот это плохо. Соне 25 прог просто не написать, хотя... + На сколько я знаю, Софья во всём разбирается, так что изволь.
Автор: ViNiaMin December 19 2005, 20:12
А в 2.(74) задаче откуда берётся текст?
Он многострочный?
Как из неё надо сделать выход?
Автор: TheBestMan December 19 2005, 20:59
Тогдаа изъяснюсь по другому, чтобы меня не считали ленивый человеком: завтра последний шанс сдать лабы по лаб. раб. по инф-ки, а тем не менее усиленно не допираю до того как делать программу. Притом очень давно допираю. Хотя очень старался..
Автор: ~~HellHounD~~ December 19 2005, 21:28
Раньше, чем завтра, заняться написанием прог не смогу, так что пишите подробное задание, может что и успею написать.
Автор: ViNiaMin December 19 2005, 22:18
Вот вариант реализации задачи 2(74) для одной строки
http://mephi.web-vnm.by.ru/StrEdit.html
Автор: TheBestMan December 19 2005, 23:43
Вводится строка, из которой удаляются слова (набор символов), меньшие 3трех символов. Программу написать используя два файловых указателя (это без проблем), с помощью процедур (не осилил).
Буду надеяться, т.к. у меня завтра только зачет первой парой а сдача лабы после четвертой и я в инсте буду находиться целый день. Так что буду нервно думать и бегать в электронный читальный зал....
Автор: ~~HellHounD~~ December 24 2005, 19:51
Цитата
1.(104) Даны натуральные числа N и X. Задана случайная целочисленная матрица N*N . Получить последовательность а(1), а(2),....,а(N) из нулей и единиц,где а(i)=1 если все элементы i-й строки =< X, и а(i)=0 если все элементы i-ой строки >X.
Код
uses crt;
var
m:array[1..100,1..100]of integer;
var n,x:integer;
function a(n,x,i:integer):integer;
var j,ret:integer;
begin
ret:=1;
for j:=1 to n do
if m[i,j]>x then ret:=0;
a:=ret;
end;
procedure create_m(n:integer);
var i,j:integer;
begin
for i:=1 to n do
for j:=1 to n do
m[i,j]:=random(100);
end;
procedure print_m(n:integer);
var i,j:integer;
begin
for i:=1 to n do
begin
for j:=1 to n do
begin
write(m[i,j],',');
end;
writeln;
end;
end;
procedure print_stat(n,x:integer);
var i:integer;
begin
for i:=1 to n do
begin
writeln('a(',i,')=',a(n,x,i));
end;
end;
begin
randomize;
write('Input N (0<N<101):');
readln(n);;
write('Input X:');
readln(x);
create_m(n);
print_m(n);
print_stat(n,x);
readkey;
end.
Автор: ~~HellHounD~~ December 24 2005, 20:05
Цитата
3.(81) Написать программу,которая позволяет определять код любых клавиш,в том числе системных, и вывод их кода на экран.Выход осуществляется с помощью цифры "0".
Код
uses crt;
var
k1,k2:char;
begin
clrscr;
repeat
k1:=readkey;
if k1=#0 then
begin
k2:=readkey;
gotoxy(1,1);
writeln(' ');
gotoxy(1,1);
writeln(ord(k2):3);
end else
begin
gotoxy(1,1);
writeln(' ');
gotoxy(1,1);
writeln(ord(k1):3);
end;
until k1='0';
end.
Из системных считает только F1-F10, сильно сомневаюсь, что в Паскале можно отследить нажатие ctrl, alt, F11 и F12 средствами встроенных функций без использования ассемблера.
Автор: ~~HellHounD~~ December 24 2005, 20:47
Цитата
2.(74) Написать программу , которая позволяла бы выводить на экран текст и обрабатывать нажатие клавиши Delete,то есть затирать символы в текущем положении курсора. Сделать возможным перемещение курсора стрелками по экрану.
Код
uses crt;
var
k1,k2:char;
x,y:integer;
begin
clrscr;
x:=1;
y:=1;
gotoxy(x,y);
repeat
k1:=readkey;
if k1=#0 then
begin
k2:=readkey;
case k2 of
#72:begin
dec(y);
if y=0 then y:=24;
gotoxy(x,y);
end;
#75:begin
dec(x);
if x=0 then
begin
x:=80;
dec(y);
if y=0 then y:=24;
end;
gotoxy(x,y);
end;
#77:begin
inc(x);
if x=80 then
begin
x:=1;
inc(y);
if y=25 then y:=1;
end;
gotoxy(x,y);
end;
#80:begin
inc(y);
if y=25 then y:=1;
gotoxy(x,y);
end;
#83:begin
write(' ');
gotoxy(x,y);
end;
end;
end else
begin
if (ord(k1)>31)then
begin
write(k1);
inc(x);
if x>80 then
begin
x:=x-80;
inc(y);
if y=25 then
begin
y:=1;
end;
end;
end;
case k1 of
#13:begin
x:=1;
inc(y);
if y=25 then
begin
y:=1;
end;
end;
#8:begin
dec(x);
if x=0 then
begin
x:=80;
dec(y);
if y=0 then y:=24;
end;
gotoxy(x,y);
write(' ');
end;
end;
gotoxy(x,y);
end;
until k1=#27;
end.
Остальное будет после 22:00.
Автор: ~~HellHounD~~ December 24 2005, 22:11
Цитата
4.(62)Найти все делители заданного натурального числа . Реализовать функцию для проверки, является ди данное число делителем другого.
Код
uses crt;
var
x,i:integer;
function delit(x,d:integer):boolean;
begin
if x mod d = 0 then delit:=true
else delit:=false;
end;
begin
clrscr;
write('Input X:');
readln(x);
writeln('Spisok deliteley:');
for i:=1 to x do
begin
if delit(x,i)then write(i,', ');
end;
readkey;
end.
Автор: ~~HellHounD~~ December 24 2005, 22:23
Цитата
5.(66) Дана квадратная матрица N*N , элементами которой являются целые числа. Определить строку матрицы,имеющую наибольшее количество четных элементов. Написать функцию нахождения количества четных элементов в строке.
Код
uses crt;
const n=13;
var
i,j:integer;
m:array[1..n,1..n]of integer;
function get_chet(i:integer):integer;
var
count,j:integer;
begin
count:=0;
for j:=1 to n do
if m[i,j] mod 2 = 0 then inc(count);
get_chet:=count;
end;
procedure create_m;
var i,j:integer;
begin
for i:=1 to n do
for j:=1 to n do
m[i,j]:=random(100);
end;
procedure print_m;
var i,j:integer;
begin
for i:=1 to n do
begin
for j:=1 to n do
write(m[i,j],', ');
writeln('chet:',get_chet(i));
end;
end;
function get_max_chet:integer;
var max_num:integer;
begin
max_num:=1;
for i:=2 to n do
begin
if get_chet(max_num)<get_chet(i) then max_num:=i;
end;
get_max_chet:=max_num;
end;
begin
clrscr;
randomize;
create_m;
print_m;
i:=get_max_chet;
writeln('Maximum chet: max chet line id=',i);
for j:=1 to n do
write(m[i,j],', ');
writeln('chet:',get_chet(i));
readkey;
end.
Автор: TheBestMan December 25 2005, 03:16
В тему: Через несколько часов зачет по ин-фе.
И тут я понял, что я начинаю ненавидеть свой профилирующий предмет.
Информатика - зло. Паскаль - <CENSORED>
Кофе и ледяной душ - это счастье.
Форум Invision Power Board (http://nulled.ws)
© Invision Power Services (http://nulled.ws)