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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.02.2009, 18:11   #1
Olga O.
 
Регистрация: 18.02.2009
Сообщений: 5
Печаль Задача на паскале про матрицу

Ребят,выручайте.нужно написать задачу на паскале:

Условие:
Если в заданной матрице количество отрицательных элементов в четных строках меньше количества положительных-в нечетных,то поменяйте местами последнюю строку и главную диагональ.
Дополнение:
Задачу нужно решить с внешним файлом.

Я создала в txt файле матрицу
1 2 3 4
-3 6 -2 5
8 -6 12 -1
7 -4 9 10
и назвала файл dok.
а написать программу не могу.помогите пожалуйста.

Последний раз редактировалось Olga O.; 18.02.2009 в 18:28.
Olga O. вне форума Ответить с цитированием
Старый 18.02.2009, 18:34   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Программа выводит результат на экран и перезаписывает исходный файл.
Код:
uses crt;
const N=4;
var
a : array[1..N,1..N] of integer;
i,j,tmp : integer;
f : text;
pol,otr : integer;
begin
clrscr;
assign(f,'dok');
{$i-}
reset(f);
{$i+}
if IOResult <>0 then
 begin
 writeln('File not found');
 readln;
 exit;
 end;

for i:=1 to N do
 begin
 for j:=1 to N do
  begin
  read(f,a[i,j]);
  write(a[i,j]:4);
  end;
 writeln;
 end;
writeln('----------');
close(f);
{-----}
pol := 0;
otr := 0;
for i:=1 to N do
 if odd(i) then
  for j:=1 to N do
   begin
   if a[i,j]>0 then inc(pol);
   end
 else
  for j:=1 to N do
   begin
   if a[i,j]<0 then inc(otr);
   end;
{----}
if otr<pol then
 for j:=1 to N do
  begin
  tmp := a[j,j];
  a[j,j] := a[n,j];
  a[n,j] := tmp;
  end;

rewrite(f);
for i:=1 to N do
 begin
 for j:=1 to N do
  begin
  write(a[i,j]:4);
  write(f,a[i,j]:4);
  end;
 writeln;
 writeln(f);
 end;
close(f);
readln;
end.
В следующий раз читайте правила.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 18.02.2009, 18:43   #3
Olga O.
 
Регистрация: 18.02.2009
Сообщений: 5
По умолчанию

Ой,спасибо большое!!!выручили меня.от всей души вам благодарна!!!
Olga O. вне форума Ответить с цитированием
Старый 18.02.2009, 20:02   #4
Olga O.
 
Регистрация: 18.02.2009
Сообщений: 5
По умолчанию выскакивает ошибка (тупе мисмэч)

При запуске программы возникает ошибка на строчке
tmp:=a[j,j];_

помогите пожалуйста устранить ошибку.
Olga O. вне форума Ответить с цитированием
Старый 18.02.2009, 20:09   #5
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от Olga O.
При запуске программы возникает ошибка на строчке
tmp:=a[j,j];_
Что за нижний прочерк в конце? Его нет в листинге.

Программа работает. Проверено на TP7 и FP 2.2.
Наверняка вы случайно (или специально) что-нибудь добавили.

Вот рабочий исходник.
Вложения
Тип файла: rar Olga O.rar (465 байт, 6 просмотров)
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 18.02.2009, 20:28   #6
Olga O.
 
Регистрация: 18.02.2009
Сообщений: 5
По умолчанию

Действительно работает и действительно я изменила ее чуть-чуть.
просто с фигурными скобками,с odd,inc и IOResult <>0 у меня ее препод не примет. мы это не проходили....и теперь я незнаю что делать....
Olga O. вне форума Ответить с цитированием
Старый 18.02.2009, 20:40   #7
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Фигурные скобки - комментарии. Все, что в них (включая сами скобки) можно удалить.
Если вы не проходили IOResult, то вот этот кусок:
Код:
{$i-}
reset(f);
{$i+}
if IOResult <>0 then
 begin
 writeln('File not found');
 readln;
 exit;
 end;
можете просто заменить на
Код:
reset(f);
Но вы должны быть уверены, что файл сущесвтует.
--------
Строчку
Код:
 if odd(i) then
можете заменить на
Код:
if i mod 2 <> 0 then
------------
Код:
inc(pol);
замените на
Код:
pol := pol + 1;
--------------
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 18.02.2009, 20:45   #8
Olga O.
 
Регистрация: 18.02.2009
Сообщений: 5
По умолчанию

Вы просто сокровище!!!огромное спасибо!!!!
Olga O. вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите решить матрицу в паскале Deis Паскаль, Turbo Pascal, PascalABC.NET 14 22.01.2009 10:16
Задачка про матрицу Glance Общие вопросы Delphi 3 08.12.2008 15:39
Задача на матрицу. Fest Помощь студентам 2 16.12.2007 05:54