LINUX.ORG.RU
ФорумTalks

Будь проклята «информатика»!


0

0

До утра нужно написать программу, причем препод, разумеется, писать заставляет только на паскале. Я говорю, мол, давайте на C, Perl, whatever - не, на паскале надо.

А я этого паскаля - ни в зуб ногой! Синтаксиса не знаю совершенно, функций тоже! Помогите написать прогу, она ужасно простая, вот задание:

Сформировать двухмерный массив 5x5 из рандомных целых чисел от -30 до 30, по нажатию юзером пробела вывести его на экран в виде таблицы, а затем сформировать одномерный массив, отобрав из двухмерного все отрицательные числа, и также вывести на экран.

Заранее спасибо!

anonymous

var
   a: Array[0..4, 0..4] of Integer;
   b: Array[0..24] of INteger;
   i, j, n: Integer;
begin
     Randomize;
     Readln;
     n := 0;
     for i := 0 to 4 do begin
         for j := 0 to 4 do begin
             a[i, j] := Random(60) - 30;
             Write(a[i, j], ' ');
             if a[i, j] < 0 then begin
                b[n] := a[i, j];
                Inc(n);
             end;
         end;
         Writeln;
     end;
     for i := 0 to n - 1 do
         Writeln(b[i]);
     Readln;
end.

shuthdar ★★★
()
Ответ на: комментарий от shuthdar

тока нажать надо будет не на пробел, а на enter :)

shuthdar ★★★
()

Пока что в спешном порядке греплю примеры исходников чтобы посмотреть что там за синтаксис. 
Ну и убожество этот паскаль!

Пока что наваял это:

      1 program Task7;
      2
      3 var a[1..5][1..5]: array;
      4 var b[1..25]: array;
      5
      6 var i: integer;
      7 var j: integer;
      8
      9 begin
     10
     11 for i:=1 to 5
     12 begin
     13         for j:=1 to 5
     14         begin
     15                 a[i][j] := random(60) - 30;
     16         end;
     17 end;
     18
     19
     20
     21 end.

Есть ли ошибки? Просто я пишу вслепую, т.е. компилятора нет. 

Какая функция ждет нажатия пробела (или любой клавиши)? 
Типа досовского "пресс эникей то континуе". 

anonymous
()

anonymous, вместо того, чтобы данный вопрос спашивать на LOR-e, мог бы давно уже синтаксис паскаля выучить, благо ботается он за полчаса ;-)

human0id ★★★
()
Ответ на: комментарий от shuthdar

Огромные спасибы!!! А может есть функция типа ReadLn, которая читает не строку, а символ? А то придерётся.

anonymous
()
Ответ на: комментарий от anonymous

procedure Read(var c: char)

Но тебе надо будет вручную проверять, чтобы сымвол был пробелом ;)

shuthdar ★★★
()

Тебе повезло. Нас заставляют Visual Basic 6.0 учить. Взял в библиотеке справочник и проблем нет. Всё элементарно, как в букваре :)

Selecter ★★★★
()
Ответ на: комментарий от shuthdar

Только random следует от 61 брать. А то препод и придраться может. Препода, признающие только один язык, они такие...

Jini ★★
()
Ответ на: комментарий от anonymous

> Есть ли ошибки? Просто я пишу вслепую

Есть, совершенно неправильно:

3 var a[1..5][1..5]: array;
4 var b[1..25]: array;
      
Правильно:

3  var a: array[1..5] of array [1..5] of integer;
4      b: array[1..25] of integer;

Но лучше объединить в 3-ей строчке записи:
3  var a:array[1..5,1..5] of integer;
4      b:array[1..25] of integer;

> Какая функция ждет нажатия пробела (или любой клавиши)?

Из досовских ReadKey из модуля CRT.

Я когда-то писал так:

Uses CRT;

.....

Begin 
  ....

  While KeyPressed do Readkey;{Нужно чтобы сбросить буфер клавиатуры
                               от уже нажатых к этому моменту клавиш}  

  {Выводим результат перед ожиданием нажатия пробела }

  While Readkey<>#$20 do; {Ждём пробела}
.....
End.

Между прочим, в FreePascal'е есть модуль CRT, о чём я только что с 
удивлением узнал и эта конструкция работает и в Linux'е. Так что качай
его с www.freepascal.org и ставь в Linux'е всё отлично будет.

anonymous_incognito ★★★★★
()
Ответ на: комментарий от anonymous

>Просто я пишу вслепую, т.е. компилятора нет.

$ sudo apt-get install fpc

=)

php-coder ★★★★★
()

Тот, кто не может выучить паскакаль за 1 час после знакомства с Си, заслуживает кол по информатике и кол в анус.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.