0 / 0 / 0
Регистрация: 18.03.2012
Сообщений: 3
1

Перевести с паскаля

18.03.2012, 13:09. Показов 1071. Ответов 4
Метки нет (Все метки)

Помогите пожалуйста перевести код с паскаля на Perl

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
const n=5;
var a:array[1..n,1..n] of integer;
      i,j:byte;
sum : integer;
begin
randomize;
sum := 0;
For i:=1 to n do begin
 For j:=1 to n do
  begin
  a[i,j] := random(10)-5;
  if ((n-j+1)<i) and (a[i,j]>0) then
   sum := sum + a[i,j];
  write(a[i,j]:4);
  end;
 writeln;
 end;
writeln;
writeln('sum= ',sum);
end.
Заранее большое спасибо
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.03.2012, 13:09
Ответы с готовыми решениями:

Перевести из паскаля в фортран
program KAV; var a,b,c,r:real; begin writeln ('vvedite a,b,c'); readln (a,b,c); If (a&lt;&gt;0) and...

Перевести с Паскаля на Фортран
uses crt; type Link = ^Number; Number = record ID: integer; Cislo : real; NextRec: Link;...

Перевести из паскаля в кумир
var i, n: integer; s: real; begin write('n = '); read(n); s := 0; for i :=...

Перевести программу из паскаля в кумир
var ar: Array Of Real; i, j: Byte; k, n, m: Integer; mult: Extended; //Double | Real...

4
13207 / 6595 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
19.03.2012, 18:18 2
Perl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/perl
 
my $n = 5;
my @a = map { [(0) x $n] } 1 .. $n;
my $sum = 0;
 
for my $i (1 .. $n) {
    for my $j (1 .. $n) {
        $a[$i][$j] = int(rand 10) - 5;
        if ($n - $j + 1 < $i && $a[$i][$j] > 0) {
            $sum += $a[$i][$j];
        }
        print $a[$i][$j], "    ";
    }
    print "\n";
}
print "\nSum = $sum\n";
Вроде работает, что-то считает.
1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
11178 / 7110 / 1680
Регистрация: 25.07.2009
Сообщений: 13,003
22.03.2012, 16:33 3
Vovan-VE, я perl учу только, если не сложно, проясните, пожалуйста, 1 момент:

Цитата Сообщение от Vovan-VE Посмотреть сообщение
my @a = map { [(0) x $n] } 1 .. $n;
создали двухмерный массив (кстати, спасибо за красивый способ) размером 5 х 5

Цитата Сообщение от Vovan-VE Посмотреть сообщение
Perl
1
2
3
for my $i (1 .. $n) {
    for my $j (1 .. $n) {
        $a[$i][$j] =
Учитывая, что индексация начинается с нуля и последний индекс n-1, фактически увеличиваем размерность, массив получается 6 х 6, при чём первая его строка - @{$a[0]} не используется и в ней как-раз 5 элементов остатёся. Всё ради того, чтобы с индексами не морочиться и на паскаль было похоже?
Perl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/bin/perl
 
my $n = 5;
my @a = map { [(0) x $n] } 1 .. $n;
print scalar(@a), " x ", scalar(@{$a[1]}), "\n";
#my $sum = 0;
 
for my $i (1 .. $n) {
    for my $j (1 .. $n) {
        #$a[$i][$j] = int(rand 10) - 5;
        #if ($n - $j + 1 < $i && $a[$i][$j] > 0) {
        #    $sum += $a[$i][$j];
        #}
        $a[$i][$j] = $i * 10 + $j;
        #print $a[$i][$j], "    ";
        printf "%02d\t", $a[$i][$j];
    }
    print "\n";
}
print scalar(@a), " x ", scalar(@{$a[1]}), "\n";
print '$a[0] - ', scalar(@{$a[0]}), ': ', "@{$a[0]}", "\n";
#print "\nSum = $sum\n";
Код
$ ./Vovan-VE_2darray.pl
5 x 5
11      12      13      14      15
21      22      23      24      25
31      32      33      34      35
41      42      43      44      45
51      52      53      54      55
6 x 6
$a[0] - 5: 0 0 0 0 0
Переписал цикл так:
Perl
1
2
for ( my $i = 0; $i <= $#a; ++$i ) {
    for ( my $j = 0; $j <= $#{$a[$i]}; ++$j ) {
выглядит мрачновато, но работает...
0
13207 / 6595 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
22.03.2012, 17:56 4
Цитата Сообщение от easybudda Посмотреть сообщение
проясните, пожалуйста, 1 момент
Perl
1
my @a = map { [(0) x $n] } 1 .. $n;
В Perl'е массив - это просто список скаляров. Он же всегда с нуля индексируется до n-1.
Perl
1
2
3
4
5
(0)           # массив из одного элемента
(0) x $n      # повторили n раз - получился массив из n элементов
[(0) x $n]    # создали ссылку на анонимный массив, в который поместили те n элементов
# поскольку сама ссылка - это скаляр, то следующим шагом
map { [(0) x $n] } 1 .. $n # получили n штук таких ссылок (каждая на свой такой же массив из n нулей)
Добавлено через 1 минуту
А, так я при выводе, почему-то, от 1 до $n вывожу
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
11178 / 7110 / 1680
Регистрация: 25.07.2009
Сообщений: 13,003
22.03.2012, 18:25 5
Цитата Сообщение от Vovan-VE Посмотреть сообщение
В Perl'е массив - это просто список скаляров.
Ну с этим-то как-раз понятно...

Цитата Сообщение от easybudda Посмотреть сообщение
выглядит мрачновато
Вот я тоже крендель
Perl
1
2
for ( my $i = 0; $i < $n; ++$i ){
    for ( my $j = 0; $j < $n; ++ $j ){
Проще надо быть!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.03.2012, 18:25
Помогаю со студенческими работами здесь

Перевести программу из паскаля в кумир
Program From2To10; var n2: Longint; n10, m, i: Integer; begin Write('n2 = '); ...

Перевести программу из паскаля в Руби
Помогите пожалуйста перевести из паскаля в Руби! Вот задание: Дано множество A из N точек на...

Перевести код с Паскаля на Фортран
собсна, просто перевести код. желательно не усложнять программу. заранее спасибо uses crt;...

Перевести программу из паскаля в кумир
Var a: array of integer; i, k, max: integer; begin k:=1;for i:=1 to 10 do begin...

Перевести программу из паскаля в кумир
Program z1; uses crt; const nmax=20; var n,x,s,y,p,i:integer; A:array of integer; begin...

Как перевести программу с Паскаля в SWI Prolog?
Подскажите, как можно переписать программу с Паскаля на SWI Prolog?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru