Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2008, 20:13   #1
Fornarina
Пользователь
 
Аватар для Fornarina
 
Регистрация: 26.12.2008
Сообщений: 30
Вопрос pascal массив

даны натуральное число m, целые числа a1,...,am и целочисленная квадратная матрица Amxn. строку с номером i матрицы назовем отмеченной, если ai>0, и неотмеченной в противном случае. посчитать число отрицательных элементов матрицы в отмеченных строках.

я написала прогу, но она почему то не работает, проверте пожалуйста))))))))



program massiv;
var i, j, m, n, s:integer;
a:array[1..30, 1..30] of real;
begin
readln(m);
s:=0;
for i:=1 to m do
for j:=1 to m do
begin
writeln('a[',i,',j,']=');
read(a[i,j]);
end;
for i:=1 to n do begin
for j:=1 to n do
if (a[i,1]>0) and (a[i,j]<0) then
s:=s+1;
writeln('s=',s);
end.

Последний раз редактировалось Fornarina; 26.12.2008 в 21:42.
Fornarina вне форума Ответить с цитированием
Старый 26.12.2008, 20:37   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Fornarina Я думаю, что в задании подразумевается немного другое:

даны натуральное число m
есть m
целые числа a1,...,am
m целых чисел. Не матрица! Числа!
и целочисленная квадратная матрица

строку с номером i матрицы назовем отмеченной, если ai>0
Строку матрицы назовем отмеченой, если ai>0

Исходя из этого, вот что написал:
Код:
program massiv;
uses crt;

var i, j, m, n, s : integer;
matr : array[1..30, 1..30] of real;
a : array[1..30] of real;

begin
clrscr;
write('Vvedite m: ');
readln(m);
s:=0;
for i:=1 to m do
 begin
 write('a[',i,']= ');
 readln(a[i]);
 end;

for i:=1 to m do
 for j:=1 to m do
  begin
  write('matr[',i,',',j,']= ');
  readln(matr[i,j]);
  end;

for i:=1 to m do
 begin
 if a[i]>0 then
 for j:=1 to m do
  if matr[i,j]<0 then
   s:=s+1;
  end;
writeln('s=',s);
readln;
end.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 26.12.2008, 21:44   #3
Fornarina
Пользователь
 
Аватар для Fornarina
 
Регистрация: 26.12.2008
Сообщений: 30
По умолчанию

Цитата:
Сообщение от Sazary Посмотреть сообщение
Fornarina Я думаю, что в задании подразумевается немного другое:

даны натуральное число m
есть m
целые числа a1,...,am
m целых чисел. Не матрица! Числа!
и целочисленная квадратная матрица

строку с номером i матрицы назовем отмеченной, если ai>0
Строку матрицы назовем отмеченой, если ai>0

Исходя из этого, вот что написал:
Код:
program massiv;
uses crt;

var i, j, m, n, s : integer;
matr : array[1..30, 1..30] of real;
a : array[1..30] of real;

begin
clrscr;
write('Vvedite m: ');
readln(m);
s:=0;
for i:=1 to m do
 begin
 write('a[',i,']= ');
 readln(a[i]);
 end;

for i:=1 to m do
 for j:=1 to m do
  begin
  write('matr[',i,',',j,']= ');
  readln(matr[i,j]);
  end;

for i:=1 to m do
 begin
 if a[i]>0 then
 for j:=1 to m do
  if matr[i,j]<0 then
   s:=s+1;
  end;
writeln('s=',s);
readln;
end.
там дана матрица A mxn -(mxn) это индексы, вариант написать ее c n????
заранее спасибо)))))
Fornarina вне форума Ответить с цитированием
Старый 26.12.2008, 21:59   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
там дана матрица A mxn -(mxn) это индексы, вариант написать ее c n????
Немного не понял вопрос )
Просто в задании сказано, что есть массив чисел (a1,a2...am) и есть квадратная матрица A размером mxm. Насколько я понимаю, вот это:
Цитата:
целочисленная квадратная матрица Amxn
опечатка? Ведь если матрица квадратная, то здесь m=n.

В вашем варианте вы за числа (a1,a2...am) принимаете элементы первого столбца каждой строки матрицы. Я думаю, что это неправильно и в задании имелось в виду именно то, что я сделал.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 26.12.2008, 22:01   #5
Трофимов Александр
Форумчанин
 
Аватар для Трофимов Александр
 
Регистрация: 03.11.2006
Сообщений: 321
По умолчанию

Вы оба немного неправы.
Это расшифровывается так:
const
m=30;
var
a: array [1..m] of integer;//целые числа явно даны, иначе в таких случаях если это не противоречит заданию всегда принимается real
b: array [1..m,1..m] of integer;// и матрица
В данном коде подразумевается, что константу при необходимости легко поменять.
Второе: что будет у Sazary если я введу m>30?
Думаю уже поняли?
Хотя комбинация:
write('a[',i,']= ');
readln(a[i]);
т.е. перевод строки происходит после ввода - более правильна.
при выполнении кода:
for i:=1 to m do
begin
if a[i]>0 then
for j:=1 to m do
if matr[i,j]<0 then
s:=s+1;
end;
writeln('s=',s);
readln;
тоже есть ошибки:
1. При подсчёте кол-ва отрицательных элементов s является прогрессирующим, т. е. при проверке каждо строки при условии if a[i]>0 then его надо обнулять.
2. s:=s+1 правильно но немножко не грамотно, в таких случаях более грамотно писать inc(s);
3. writeln('s=',s); надо писать в цикле:
for i:=1 to m do
begin
if a[i]>0 then
begin
s:=0;
for j:=1 to m do
if matr[i,j]<0 then
s:=s+1;
writeln('s=',s);
end;
Простите, что более подробно проверить не могу ...
пятница, тяжело и т.д.

Последний раз редактировалось Трофимов Александр; 26.12.2008 в 22:13.
Трофимов Александр вне форума Ответить с цитированием
Старый 26.12.2008, 22:03   #6
Fornarina
Пользователь
 
Аватар для Fornarina
 
Регистрация: 26.12.2008
Сообщений: 30
По умолчанию

вот смотрите полностью саму задачу))))
Изображения
Тип файла: jpg img219 коррекция.jpg (18.7 Кб, 142 просмотров)
Fornarina вне форума Ответить с цитированием
Старый 26.12.2008, 22:05   #7
Fornarina
Пользователь
 
Аватар для Fornarina
 
Регистрация: 26.12.2008
Сообщений: 30
По умолчанию

посмотрите полностью задачу, она прикреплена
Fornarina вне форума Ответить с цитированием
Старый 26.12.2008, 22:12   #8
Трофимов Александр
Форумчанин
 
Аватар для Трофимов Александр
 
Регистрация: 03.11.2006
Сообщений: 321
По умолчанию

тогда зря исправил... щас опять поменяю.
Трофимов Александр вне форума Ответить с цитированием
Старый 26.12.2008, 22:17   #9
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Трофимов Александр Отвечаю )
Цитата:
const
m=30;
Я обычно делаю такие вещи константами, когда пишу с нуля.
Кстати, если это сделать здесь, то теряется возможность менять размер матрицы.
А мне кажется, что это нужно.

Цитата:
Второе: что будет у Sazary если я введу m>30?
Думаю уже поняли?
А если все же нужна возможность ручного ввода размера матрицы?
Тут уж по-любому можно ввести значение, которое вызовет ошибку. Не делать же массив динамическим?

Цитата:
1. При подсчёте кол-ва отрицательных элементов s является прогрессирующим, т. е. при проверке каждо строки при условии if a[i]>0 then его надо обнулять.
Зачем обнулять? Как я понял, нужно найти общую сумму отрицательных элементов, а не для каждой строки.

Цитата:
2. s:=s+1 правильно но немножко не грамотно, в таких случаях более грамотно писать inc(s);
Я так часто слышу вопрос "А что такое inc?", а после ответа на него - "А как сделать без него?", что решил писать "проще".

Цитата:
3. writeln('s=',s); надо писать в цикле:
Уже ответил. Считаю, что нужно искать общую сумму.

Вот )
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 26.12.2008, 22:17   #10
Fornarina
Пользователь
 
Аватар для Fornarina
 
Регистрация: 26.12.2008
Сообщений: 30
По умолчанию

спасиб за помощь
Fornarina вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Pascal. На подсчет слов и на массив Lot Помощь студентам 2 24.12.2008 18:35
задача про 2х мерный массив (Turbo Pascal) masil Помощь студентам 4 30.11.2008 15:34
Упорядочить массив в порядке возрастания и напечатать входной и исходный массив. TheVenny Помощь студентам 3 26.11.2008 15:06
Задача Pascal на массив (нужна помощь) STIG_E70 Помощь студентам 4 18.06.2008 20:19
Массив (Turbo Pascal) Wizzard Помощь студентам 2 20.01.2008 09:59