Небольшая программка на Паскале

drummer
Сообщения: 61
Зарегистрирован: 13 янв 2008, 18:43

Код: Выделить всё

for i:=1 to N do
     for j:=1 to N do
          read(a[i,j]);
А вводишь так (для твоего примера):
1(пробел)2(пробел)3(ентер)
2(пробел)3(пробел)4(ентер)
....
scudo
Сообщения: 40
Зарегистрирован: 02 апр 2008, 21:05

drummer писал(а):

Код: Выделить всё

for i:=1 to N do
     for j:=1 to N do
          read(a[i,j]);
А вводишь так (для твоего примера):
1(пробел)2(пробел)3(ентер)
2(пробел)3(пробел)4(ентер)
....
Вроде работает.
Ток чет ошибочкку не найду. Может вы посмотрите:

Код: Выделить всё

  {расчет в верхней половине от главной диагонали}
  nach_str:=1;
  kon_str:=n-1;
  nach_stb:=2;
  kon_stb:=n;
  For k:=1 to (n-1) do
   begin
    For i:=nach_str to kon_str do
     For j:=nach_stb to kon_stb do
      sum1:=sum1+mas2[i,j];
    If k=1 then
     max1:=sum1;
    if max1<sum1 then
     max1:=sum1;
    nach_str:=1;
    kon_str:=kon_str-1;
    nach_stb:=nach_stb+1;
    kon_stb:=n;
   end;
Vovchik
Сообщения: 196
Зарегистрирован: 28 фев 2008, 18:32
Контактная информация:

scudo,попробуй так

Код: Выделить всё

uses crt;
var m:array[1..3,1..3]of integer;
    i,j:integer;
BEGIN
clrscr;
 for i:=1 to 3 do
  begin
   for j:=1 to 3 do
    gotoxy(i+1,j);
    read(m[i][j]);
    writeln;
  end;
END.
scudo
Сообщения: 40
Зарегистрирован: 02 апр 2008, 21:05

Спасиб!

У себя нашел ошибку, ток не знаю как исправить.... :confused:

Код: Выделить всё

For k:=1 to (n-1) do
   begin
    For i:=nach_str to kon_str do
     For j:=nach_stb to kon_stb do
      sum1:=sum1+mas2[i,j];
Он меняет столбец а строку нет. А мне над меня и строку и столбец сразу. А получается что перибераются сначала столбцы, а потом уж переходит на новую строку
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

for i:=nach_str to kon_str do
sum1:=sum1+mas2[i,i];
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
scudo
Сообщения: 40
Зарегистрирован: 02 апр 2008, 21:05

sum1:=sum1+mas2[i,i]

Может так:
mas[i,j]

И куда делся второй for. Мне же над еще и столбцы перебирать
scudo
Сообщения: 40
Зарегистрирован: 02 апр 2008, 21:05

Дана целочисленная квадратная матрица. Определить:
Максимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы (оформить в виде процедуры).

Код: Выделить всё

  {расчет в верхней половине от главной диагонали}
  nach_str:=1;
  kon_str:=n-1;
  nach_stb:=2;
  kon_stb:=n;
  For k:=1 to (n-1) do                                
   begin
    For i:=nach_str to kon_str do
     For j:=nach_stb to kon_stb do
      begin
       a:=a+1;
        If a=1 then
         sum1:=sum1+mas2[i,j];
        If j=kon_stb then
         a:=0;
      end;
    If k=1 then
     max1:=sum1;
    if max1<sum1 then
     max1:=sum1;
    nach_str:=1;
    kon_str:=kon_str-1;
    nach_stb:=nach_stb+1;
    kon_stb:=n;
   end;
   Writeln('max= ',max1);
Делаю так. Чет тож не пашет. Посмотрите мож найдете ошибку
Medved
Сообщения: 256
Зарегистрирован: 14 фев 2008, 20:51
Контактная информация:

Чем вас мой заметчательный вариант (#6) не устраивает?=)
Ваши руки совершили идиотскую ошибку и будут оторваны!
[OK]
scudo
Сообщения: 40
Зарегистрирован: 02 апр 2008, 21:05

Medved писал(а):Чем вас мой заметчательный вариант (#6) не устраивает?=)
Программка в 2-е строчки и работает (просто и кофмортно). За ет Респект ;) ... Ну все таки мож гляните на мой вариантик.У меня код больше и чет не пашет :mad: понять где ошибка не магу. Хочется разобраться
Medved
Сообщения: 256
Зарегистрирован: 14 фев 2008, 20:51
Контактная информация:

А зачем вам переменная a?
Ваши руки совершили идиотскую ошибку и будут оторваны!
[OK]
Ответить