Помощь - Поиск - Пользователи - Календарь
Полная версия: Готовый массив только
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
IlyasKaz
Переделать из вещественного в целочисленный заранее спасибо А то я догнать не могу как
uses crt; 
const n:=5; 
var i,j:integer; 
t,sum:real; 
b:array[1..n,1..n] of real; 
begin 
clrscr; 
for i:=1 to 5 do begin 
for j:=1 to 5 do begin 
b[i,j]:=random; 
write(b[i,j]:0:2,' '); 
end; 
writeln; 
end; 
for i:=1 to 5 do begin 
for j:=1 to 5 do begin 
t:=b[1,j]; 
b[1,j]:=b[5,j]; 
b[5,j]:=t; 
end; 
sum:=0; 
for i:=1 to 5 do 
begin 
for j:=1 to 5 do 
if (i+j-1<5)then 
begin 
sum:=sum+b[i,j]; 
end; 

end; 
end; 
writeln; 
writeln(sum:2:2); 
writeln; 
end


М
Теги! Правила Форума, п.5, и правила раздела Задачи, п.2
Lapp

Krjuger
b:array[1..n,1..n] of integer;
????????Maybe)


М
Теги..

Lapp
Цитата
????????Maybe)
нет, этого маловато

Ниже необходимые изменения помечены комментарием "тут"
Остальное - ошибки и советы
uses crt; 
const
  n:=5; 
var
  i,j: integer; 
  t,sum: LongInt;              // тут
  b:array[1..n,1..n] of integer; // тут

begin 
  for i:=1 to 5 do begin 
    for j:=1 to 5 do begin 
      b[i,j]:=random(n*n);     // тут
      write(b[i,j]:0:2,' '); 
    end; 
    writeln; 
  end; 
  for i:=1 to 5 do // begin    // ЗАЧЕМ делать обмен 5 РАЗ??  в любом случае, begin - лишнее
    for j:=1 to 5 do begin     // почему до 5?  может, до n?
      t:=b[1,j]; 
      b[1,j]:=b[5,j]; 
      b[5,j]:=t; 
    end; 
  sum:=0; 
  for i:=1 to 5 do begin 
    for j:=1 to 5 do 
      if (i+j-1<5)then begin   // не нужно заключать один оператор в begin..end
        sum:=sum+b[i,j]; 
      end; 
  end; 
//end;                         // лишний end, он уравновешивал тот begin, и все было еще хуже, чем казалось ))
  writeln; 
  writeln(sum);                // тут
  writeln; 
end.                           // точка

[исправлено]
Krjuger
Lapp извини конешно,но
b:array[1..n,1..n] of real;  // тут

ты ничего не изменил.
А разве не надо переделать сам массив из вещественного в целочисленный?
Цитата
// почему до 5? может, до n?

Ну как бы у него const n:=5; Ну можеть человеку нравится лазить по программе и менять в каждом цикле число,если вдруг не дай бог матрица станет не 5х5, а 6х6 например smile.gif
Lapp
Цитата(Krjuger @ 3.06.2011 12:54) *
Lapp извини конешно,но
b:array[1..n,1..n] of real;  // тут
ты ничего не изменил. А разве не надо переделать сам массив из вещественного в целочисленный?
Мой прогляд. Спасибо за указание, +1. Сейчас поправлю выше..

Цитата
Ну как бы у него const n:=5; Ну можеть человеку нравится лазить по программе и менять в каждом цикле число,если вдруг не дай бог матрица станет не 5х5, а 6х6 например smile.gif
Вопрос был к автору темы..
IUnknown
Андрей, что с тобой? В твоей программе еще как минимум 3 символа - лишние. Ну, рассказывать, какие именно - не буду (при смене типа данных с вещественного на целочисленный, первое, что делается - это изменяются форматы вывода), мало ли, может это домашнее задание топикстартеру smile.gif Или еще не выздоровел?
Lapp
Цитата(IUnknown @ 4.06.2011 2:54) *
Андрей, что с тобой? В твоей программе еще как минимум 3 символа - лишние. Ну, рассказывать, какие именно - не буду (при смене типа данных с вещественного на целочисленный, первое, что делается - это изменяются форматы вывода), мало ли, может это домашнее задание топикстартеру smile.gif Или еще не выздоровел?

lol.gif здоров, как бык (и умом приблизительно тоже)), спасибо, вчера был первый вечер без Т.

Я не буду говорить, что прога не моя.. Если бы я ограничился ответом на вопрос автора - тогда я можно было бы отбазариться - не мое дело. Но раз уж стал исправлять ошибки, надо делать это до конца..
Одну ошибку исправлю, вторая пусть все же остается ДЗ автору темы.. ))

const
  n:=5;           // здесь не буду исправлять.. ))
var
  i,j: integer;
  t,sum: LongInt;              // тут
  b:array[1..n,1..n] of integer; // тут

begin
  for i:=1 to 5 do begin
    for j:=1 to 5 do begin
      b[i,j]:=random(n*n);     // тут
      write(b[i,j]:4,' ');      // ТУТ
    end;
    writeln;
  end;
  for i:=1 to 5 do // begin    // ЗАЧЕМ делать обмен 5 РАЗ??  в любом случае, begin - лишнее
    for j:=1 to 5 do begin     // почему до 5?  может, до n?
      t:=b[1,j];
      b[1,j]:=b[5,j];
      b[5,j]:=t;
    end;
  sum:=0;
  for i:=1 to 5 do begin
    for j:=1 to 5 do
      if (i+j-1<5)then begin   // не нужно заключать один оператор в begin..end
        sum:=sum+b[i,j];
      end;
  end;
//end;                         // лишний end, он уравновешивал тот begin, и все было еще хуже, чем казалось ))
  writeln;
  writeln(sum);                // тут
  writeln;
end.


В следующий раз напишу "некоторые ошибки и советы" ))
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.