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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.01.2009, 17:34   #1
Amenus
Пользователь
 
Регистрация: 26.01.2009
Сообщений: 22
По умолчанию простой вопрос по Паскалю.

Собственно вот:
Код:
var
 n, i, j, k :integer;
a: array [1..20,1..20] of integer;


begin

k:=0; 
readln(n);
for i:=1 to n do
for j:=1 to n do
readln(a[i,j]);

for i:=1 to n do
 begin
 for j:=1 to n do
  begin
  if (a[i,j] < 0) and (i < j) and (k < 3) then
   begin
   writeln(a[i,j]);
   k:=k+1;
   end;
  end;
 end;

end.
Нужно было найти первые два отрицательных элемента выше главной диагонали.Условия все правильные.Чего не хватает для вывода результатов?А то я запутался с синтаксисом(
Amenus вне форума Ответить с цитированием
Старый 26.01.2009, 17:38   #2
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Код:
uses crt;
var
 n, i, j, k :integer;
a: array [1..20,1..20] of integer;


begin
clrscr;
k:=0;
readln(n);
for i:=1 to n do
begin
for j:=1 to n do
 begin
  a[i,j]:=random(7)-random(10);
  write(a[i,j]:3);
 end;
 writeln;
 end;

for i:=1 to n do
 for j:=1 to n do
  if (a[i,j] < 0) and (i < j) and (k < 2) then
   begin
   writeln(a[i,j]);
   k:=k+1;
   end;

end.
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Старый 26.01.2009, 17:41   #3
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

начальное значение k должно быть 1 (или заменить k<3 на k<2), иначе будет выводить 3 элемента.
Цитата:
Чего не хватает для вывода результатов?
Программа, в принципе, работает. Видимо, вы имеете в виду, что не успеваете увидеть результат? Тогда перед последним end'ом надо добавить readln;

Код:
var
 n, i, j, k :integer;
a: array [1..20,1..20] of integer;


begin

k:=0; 
readln(n);
randomize;
for i:=1 to n do
  begin
  for j:=1 to n do
   begin
   a[i,j] := random(15)-5;
   write(a[i,j]:4);
   end;
  writeln;
  end;
writeln;

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

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

Всё равно не хочет выводить=\
А при матрице 2х2 с элементами
1 -2
3 -4 выводить только 0=\
Amenus вне форума Ответить с цитированием
Старый 26.01.2009, 17:52   #5
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Всё равно не хочет выводить=\
А что выводит? Окно консоли появляется?
Вы чей вариант тестили? Откройте окно "Output" и посмотрите там.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

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

Sazary,Ваш вариант не выводит.Просто обратно выскакивает в редактирование.Когда смотрю аутпут ,то ответа не вижу,вместо этого на меня смотрит лишь ноль,стоящий после матрицы.

alex_fcsm,
Работает,тголько вот значение переменных мне нужно вводить с клавиатуры.

Код:
a[i,j]:=random(7)-random(10);
Какое значение я должен здесь присвоить?
Amenus вне форума Ответить с цитированием
Старый 26.01.2009, 18:01   #7
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Ваш вариант не выводит
Уж не знаю что он там не выводит. У меня все работает.
Изображения
Тип файла: jpg 26_1_2009 18-1-48.jpg (13.2 Кб, 146 просмотров)
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 26.01.2009, 18:05   #8
Amenus
Пользователь
 
Регистрация: 26.01.2009
Сообщений: 22
По умолчанию

Цитата:
Сообщение от Sazary Посмотреть сообщение
Уж не знаю что он там не выводит. У меня все работает.
Теперь и у меня выводит)видимо у меня руки кривые)Простите)
А как задать ввод переменных массива с клавиатуры а не случайным образом?просто с двумерными массива не дружу.
что-то типа
Код:
for i:=1 to n do
for j:=1 to n do
readln(a[i,j]);
?
Amenus вне форума Ответить с цитированием
Старый 26.01.2009, 18:11   #9
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

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

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

собственно вроде сделал)проверьте,пожалуйста:
Код:
var
 n, i, j, k :integer;
a: array [1..20,1..20] of integer;
i1, j1, i2, j2:integer;

begin

k:=0; 
readln(n);
for i:=1 to n do
for j:=1 to n do
readln(a[i,j]);  
for i:=1 to n do
begin
  for j:=1 to n do
   begin
      write(a[i,j]:4);
   end;
  writeln;
  end;
writeln;

for i:=1 to n do
 begin
 for j:=1 to n do
  begin
  if (a[i,j] < 0) and (i < j) and (k < 2) then
   begin
   writeln(a[i,j]);
   k:=k+1;
   end;
  end;
 end;
readln;
end.
Amenus вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Простой вопрос Molotok Microsoft Office Excel 1 20.09.2008 22:23
Простой вопрос Таня84 БД в Delphi 4 03.03.2007 21:09
Простой вопрос Prowler БД в Delphi 3 26.01.2007 16:46