Форумы Modlabs.net: Нужна помощь в программировании на Паскале - Форумы Modlabs.net

Перейти к содержимому

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Нужна помощь в программировании на Паскале

#1 Пользователь офлайн   rogat1y 

  • Member
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 391
  • Регистрация: 25 Сентябрь 03

Отправлено 15 Октябрь 2004 - 23:58

Граждане программисты... решите плиз...
1 часть.
№4 для матрицы из 2 столбцов и 10 строк
отпечатать номер каждой строки, оба
элемента которой имеют нулевые
значения, и число таких строк.

№20 дана матрица из 3 столбцов и 6 строк.
Содержание каждой строки трактуется как
длины сторон одного из 6 треугольников.
Последовательно анализируя строки, печатать
периметр Р треугольника или сообщение
о том, что треугольник не может
быть построен при заданном соотношении длин сторон. Отпечатать тажке число
треугольников. Указание: если произведение ((P/2)-a)*((P/2)-:beer:*((p/2)-c),
где a,b,c - длины сторон, положительно, то треугольник может быть построен.

2 часть.
№15 найти по отдельности число положительных
и равных нулю элементов в совокупности тех строк матрицы,
1-й элемент которых больше 1, а также найти общую сумму элементов этих строк.

№19 заменить в матрице на 1 каждый положжительный элемент,
на 0 - каждый отрицательный. Для каждого столбца
найти среднее арифметическое исходных значений элементов.

3 часть.
№24 если среднее арифметическое каждого
столбца матрицы А меньше заданной величины Т,
заменить значение каждого элемента
матрицы А квадратом этого значения.

№14 если ниже главной диагонали матрицы А нет ни
одного отрицательного элемента, изменить матрицу А,
умножив каждый ее элемент на находящийся с ним
в одной строке элемент главной диагонали.
0

#2 Пользователь офлайн   Карлсон 

  • Advanced Member
  • PipPipPipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 999
  • Регистрация: 04 Апрель 04

Отправлено 16 Октябрь 2004 - 00:09

rogat1y
вас чего, тоже не учат прогированию? ;)
щас посмотрю.
не гарантирую, что будет работать, но идеи будут :)
нас просто на си заставляют писать.... хотя я паскалист до мозга костей.
0

#3 Пользователь офлайн   rogat1y 

  • Member
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 391
  • Регистрация: 25 Сентябрь 03

Отправлено 16 Октябрь 2004 - 00:11

это не мне.. деффушке знакомой.. это им такое в 11 классе задают...
0

#4 Пользователь офлайн   Карлсон 

  • Advanced Member
  • PipPipPipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 999
  • Регистрация: 04 Апрель 04

Отправлено 16 Октябрь 2004 - 00:18

к номеру 1:
var
array arr(0..9,0..1);
count,i: integer;

begin
count:=0;
for i=0 to 9 do
begin
if (arr(i,0) AND arr(i,1))=0 then
writeln("Нуль!");
count=count+1;
end;
writeln(count);
end.

думаю, понятно, чаво тут делается или пояснять надо?
за синтаксис полностью не ручаюсь, т.к. очен сложно перестроиться с Си на Паскаль ;)
0

#5 Пользователь офлайн   Sebastian 

  • Member
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 338
  • Регистрация: 15 Март 04

Отправлено 16 Октябрь 2004 - 00:21

rogat1y задачки детские :). Вот первая (которая №4)

var

matr: array [1..10, 1..2] of integer;

s,i: integer;



begin

s:=0;

for i:=1 to 10 do

  if (matr[i,1]=0) and (matr[i,2]=0) then begin

	writeln (i);

	s:=s+1; end;

writeln (s);

end.


Карлсон ;) Паскаль - вещь (с) Винни-Пух
0

#6 Пользователь офлайн   Карлсон 

  • Advanced Member
  • PipPipPipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 999
  • Регистрация: 04 Апрель 04

Отправлено 16 Октябрь 2004 - 00:37

номер 19:

var
array arr(0..9,0..1);
sum,sr,i: integer;

begin
sum:=0;
for i:=0 to 9 do
begin
sum:=sum+arr(i,0);
end;
sr:=sum/10;
writeln(sr);

sum:=0;
for i:=0 to 9 do
begin
sum:=sum+arr(i,1);
end;
sr:=sum/10;
writeln(sr);

for i:=0 to 9 do
begin
if arr(i,0)>0 then arr(i,0):=1
else
arr(i,0):=0;
end;

for i:=0 to 9 do
begin
if arr(i,1)>0 then arr(i,1):=1
else
arr(i,1):=0;
end;


end.
0

#7 Пользователь офлайн   Карлсон 

  • Advanced Member
  • PipPipPipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 999
  • Регистрация: 04 Апрель 04

Отправлено 16 Октябрь 2004 - 00:39

Sebastian
согласен! ;)

rogat1y
меня переклинило. у Себастьяна код правильнее написан, в частности объявление массива.
а вообще-то такое надо по книжкам читать :)
хотя, сам щас страдаю.
кстати.
раз уж о прогировании речь зашла.
может мне кто-нить помочь функцию в ряд Фурье разложить, а то я не в курсе, как это делается :)
0

#8 Пользователь офлайн   Sebastian 

  • Member
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 338
  • Регистрация: 15 Март 04

Отправлено 16 Октябрь 2004 - 00:49

Карлсон мы делаем одинаковые номера ;) . ну ничего, хорошо, когда есть выбор :)
№19

const

imax=10;

jmax=10;



var

matr: array [1..imax, 1..jmax] of integer;

matr2: array [1..jmax] of real;

s,i,j: integer;



begin

for i:=1 to imax do

  for j:=1 to jmax do begin

	write ('Введите элемент [',i,'-',j,']: ');

	readln (matr[i,j]); end;

for j:=1 to jmax do begin

  for i:= 1 to imax do begin

	matr2[j]:=matr2[j]+matr[i,j];

	if matr[i,j]>0 then matr[i,j]:=1 else

	  if matr[i,j]<0 then matr[i,j]:=0; end;

  matr2[j]:=matr2[j]/imax; end;

writeln ('средние арифметические:');

for i:=1 to jmax do

  write (matr2[i], ' ');

writeln ('итоговая матрица:');

for i:= 1 to imax do begin

  for j:= 1 to jmax do

	write (matr [i,j]:4:2);

  writeln; end;

end.


И поправка - в #4 перед тем, как матрицу мучать, её заполнить надо.
0

#9 Пользователь офлайн   Карлсон 

  • Advanced Member
  • PipPipPipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 999
  • Регистрация: 04 Апрель 04

Отправлено 16 Октябрь 2004 - 00:52

Sebastian
угу, только ты их правильно записываешь, а я кучу ошибок делаю :)
на паскале уже с полгода не писал, а жаль :)
а пишем одинаковые, т.к. в этих номерах особо вдумываться не надо ;)
0

#10 Пользователь офлайн   Карлсон 

  • Advanced Member
  • PipPipPipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 999
  • Регистрация: 04 Апрель 04

Отправлено 16 Октябрь 2004 - 00:53

Sebastian
ну ясное дело, что ее заполнять надо ;)
причем желательно рандомно :)
хотя можно и с клавы набить :)
0

#11 Пользователь офлайн   Sebastian 

  • Member
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 338
  • Регистрация: 15 Март 04

Отправлено 16 Октябрь 2004 - 00:58

да, в 19-м лучше конечно рандомно заполнить, а то вводить с клавы 100 элементов это изврат ;)
0

#12 Пользователь офлайн   rogat1y 

  • Member
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 391
  • Регистрация: 25 Сентябрь 03

Отправлено 16 Октябрь 2004 - 01:08

Sebastian сказал:

да, в 19-м лучше конечно рандомно заполнить, а то вводить с клавы 100 элементов это изврат ;)

а как это делать ??
0

#13 Пользователь офлайн   Sebastian 

  • Member
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 338
  • Регистрация: 15 Март 04

Отправлено 16 Октябрь 2004 - 01:13

#20

var

matr: array [1..6, 1..3] of integer;

i,j,p,count:integer;



begin

count:=0;

for i:=1 to 6 do begin

  p:=0;

  for j:=1 to 3 do

	p:= p+matr[i,j];

  if ((p/2-matr[i,1])*(p/2-matr[i,2])*(p/2-matr[i,3]))>0 then begin

	count:=count+1;

	writeln (p); end else writeln ('failed'); end;

writeln ('всего треугольников: ', count);

end.

rogat1y ммм... random(); генерит только положительные значения. надо подумать...
0

#14 Пользователь офлайн   Карлсон 

  • Advanced Member
  • PipPipPipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 999
  • Регистрация: 04 Апрель 04

Отправлено 16 Октябрь 2004 - 13:46

Sebastian
дык чего думать то?
это тоже довольно простая задача.
положим, нужно сгенерить числа от -1000 до 1000.
известно, что рандом генерит от нуля до, положим 99, если ввести random(100);
тогда, чтобы получить 100, в рандоме нужно ввести random(101);
думаем далее: если нам нужно от -1000 до 1000, то то нужно поставить в рандом? очевидно, что сли рандом сгенерит нуль, то чтобы получилась -1000, ее надо вычесть. т.е. random(1001)-1000; при генерации нуля выдаст -1000; но, нам же еще нужно, чтобы функция была и в плюсе? тогда надо всего лишь увеличить random на 1000. т.е. random(2001)-1000; и будет функцией, которая будет выдавать значения от -1000 до 1000. сами подумайте, если рандом сгенерит 2000, то вычитая тысячу получим искомую границу интервала. если же сгенерит нуль, то получим вторую границу. все довольно просто. общая формула такова: (a,B); random(b-a)+a;
рассмотрим еще пример:
нужно получить числа в диапазоне от 2 до 10;
по формуле получаем:
random(10-2)+2;
ну естественно надо делать поправку в +1, чтобы получать граничные значения.
0

#15 Пользователь офлайн   Sebastian 

  • Member
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 338
  • Регистрация: 15 Март 04

Отправлено 17 Октябрь 2004 - 00:51

Карлсон точна :D
0

Поделиться темой:


Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 members, 1 guests, 0 anonymous users