Реклама


  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: g0d-me, FiLLiN, iEnjoy  
Помощь с паскалем
Lukash Дата: Суббота, 15.12.2012, 17:45 | Сообщение # 1
Сообщений: 156
Награды: 375
Репутация:
Дана вот такая программа: В массиве M[1..10] упорядочить числа по возрастанию, числа от 1 до 100
Написал программу
Code
program mos;
   var i,k:integer;
       p:real;
       M: array [1..10] of real;
begin
   for i:=1 to 10 do
     begin
     M[i]:= random(100)+1;
     write (' Число - ',M[i]);
     end;
   for k:=1 to 9 do
     begin
     for i:=1 to 10-k do
       begin
       if M[i] > M[i+1] then p:=M[i];
       M[i]:=M[i+1];
       M[i+1]:=p;
       end;
     end;
   for k := 1 to 10 do
     begin
     write (M[k]);
     end;
end.    

Но она не работает, можете сказать почему


clasterit Дата: Суббота, 15.12.2012, 18:04 | Сообщение # 2
Сообщений: 107
Награды: 2
Репутация:
303
Может из-за того, что массив у тебя вмещает только 10 символов?
r00t-bag Дата: Суббота, 15.12.2012, 18:05 | Сообщение # 3
Сообщений: 229
Награды: 533
Репутация:
Code
program mos;
Uses CRT;
var i,k:integer;
p:real;
M: array [1..10] of real;
begin
randomize;
for i:=1 to 10 do  begin
M[i]:= random(100)+1;
if i = 1 then write (i,' Digit - ',M[i],' | ') else  write (i,' Digit - ',M[i], ' | ');
end;

for k:=1 to 9 do begin
for i:=1 to 10-k do begin
if M[i] > M[i+1] then begin
p:=M[i];
M[i]:=M[i+1];
M[i+1]:=p;
end;
end;
end;

WriteLn();
for k := 1 to 10 do begin
write (M[k],' ');
end;
end.

1)При использовании команды Random нужно после begin писать randomize, для "включения" генератора случайных чисел.
2)Поправил вывод, а то читать было невозможно.
3)
Code
if M[i] > M[i+1] then begin

А у тебя просто then и первая команда, которая должна выполняться только если наше число больше следующего.


Сообщение отредактировал r00t-bag - Суббота, 15.12.2012, 18:07
clasterit Дата: Суббота, 15.12.2012, 18:14 | Сообщение # 4
Сообщений: 107
Награды: 2
Репутация:
303
мой вариант
Code
program sort;
uses crt;
       var a,b,temp:integer;

           m: array [1..100] of integer;
begin
       clrscr;
       randomize;
       for a:= 1 to 100 do
         m[a]:= random(100)+1;
       for a:= 1 to 100 do
         write (' Chislo - ',m[a]);
         writeln;
       for a:= 1 to 99 do
         for b:= a+1 to 100 do
          if m[a]>m[b] then
           begin
            temp:=m[a];
            m[a]:=m[b];
            m[b]:=temp;
           end;
       for a:=1 to 100 do
        write(m[a]:5);
        readLn;
end.


с тебя мороженко biggrin


Сообщение отредактировал clasterit - Суббота, 15.12.2012, 18:19
r00t-bag Дата: Суббота, 15.12.2012, 18:23 | Сообщение # 5
Сообщений: 229
Награды: 533
Репутация:
clasterit, ReadLn в конце убери - не позорься.
clasterit Дата: Суббота, 15.12.2012, 18:53 | Сообщение # 6
Сообщений: 107
Награды: 2
Репутация:
303
r00t-bag, ухахаха. Я специально написал это в коде, чтобы парень увидел, что сортировка совершилась.
И да, не юзай PascalABC. он ущербный..
P.S. FP и TP7 не говорят ни о каких ошибках..
r00t-bag Дата: Суббота, 15.12.2012, 18:57 | Сообщение # 7
Сообщений: 229
Награды: 533
Репутация:
clasterit, По-моему, надписи вверху большими жирными буквами достаточно, чтобы понять, что сортировка завершена, ведь действия от пользователя здесь не требуется.
И да, паскалем профессионально не занимаюсь, поэтому мне вполне достаточно ABC.
clasterit Дата: Суббота, 15.12.2012, 19:05 | Сообщение # 8
Сообщений: 107
Награды: 2
Репутация:
303
r00t-bag, дадада, можно было бы еще прилепить файлы к коду, и сделать так, чтобы результат записывался в него. Думаю, ТС это умеет. Не думаю, что если нужно отсортировать массив, то будут проверять работоспособность кода, а не его результат.
да я тоже занимаюсь не профессионально, но все же предпочитаю что-нибудь забугорное и кросплатформенное... happy
FPC отлично для этого подходит, а если еще нужно gui - lazarus вполне справится со своим делом wink
а вот твой код FPC не захотел нормально обработать XD
из-за типа "real"


Сообщение отредактировал clasterit - Суббота, 15.12.2012, 19:08
Lukash Дата: Суббота, 15.12.2012, 19:07 | Сообщение # 9
Сообщений: 156
Награды: 375
Репутация:
Quote (r00t-bag)
1)При использовании команды Random нужно после begin писать randomize, для "включения" генератора случайных чисел.
2)Поправил вывод, а то читать было невозможно.
3)
Code
if M[i] > M[i+1] then begin

А у тебя просто then и первая команда, которая должна выполняться только если наше число больше следующего.


Просто поставил begin после then и теперь все работает, а что такое randomize не знаю, хотя и без него все работает, а так спасибо, и ещё последний вопрос можно ли здесь как то сделать пробел

И за вывод спасибо, я хотел спросить как сделать пробелы между цифрами




Сообщение отредактировал Lukash - Суббота, 15.12.2012, 19:09
clasterit Дата: Суббота, 15.12.2012, 19:09 | Сообщение # 10
Сообщений: 107
Награды: 2
Репутация:
303
Lukash,
Code
write (' Число - ',M[i]);
end;
writeLn;

вот так
исправил


Сообщение отредактировал clasterit - Суббота, 15.12.2012, 19:16
r00t-bag Дата: Суббота, 15.12.2012, 19:14 | Сообщение # 11
Сообщений: 229
Награды: 533
Репутация:
Quote (clasterit)
а вот твой код FPC не захотел обработать XD

Просто в школах используют ABC, я и сделал ему для ABC.
Глянул бы сейчас, в чем ошибка во фри паскале, но и так дел много dry
Quote (clasterit)
а если еще нужно gui - lazarus

Интересненько, посмотрим на досуге.
Quote (clasterit)
что-нибудь забугорное и кросплатформенное...

Ну это ван лав)

Добавлено (15.12.2012, 19:14)
---------------------------------------------

Quote (clasterit)
write (' Число - ',M[i]); writeLn;       end;

Я бы поставил один WriteLn; после последнего сгенерированного числа, а то одно число на одну строчку как-то жирненько. Но, как говорится, на вкус и цвет товарища нет)
clasterit Дата: Суббота, 15.12.2012, 19:15 | Сообщение # 12
Сообщений: 107
Награды: 2
Репутация:
303
r00t-bag, О_О
у меня в школе юзают до сих пор TP7 biggrin
а на мои учебные года не попал ни один урок программирования. 11 классы, что выпустились, учили дельфи. младшее поколение учит паскаль. а мы ничего)
вот завтра олимпиада, сижу готовлюсь, помочь решил, повторил сортировку smile

не ошибка, просто числа выводит не в нормальном десятеричном виде))

Добавлено (15.12.2012, 19:15)
---------------------------------------------

Quote (r00t-bag)
Я бы поставил один WriteLn; после последнего сгенерированного числа, а то одно число на одну строчку как-то жирненько.

упс. я просто посмотрел в свой код biggrin
r00t-bag Дата: Суббота, 15.12.2012, 19:18 | Сообщение # 13
Сообщений: 229
Награды: 533
Репутация:
Quote (clasterit)
вот завтра олимпиада, сижу готовлюсь, помочь решил

А я как-то на олимпиадах пролетаю - не получается, и все. Вроде знаю, вроде уже делал, но сижу как баран на новые ворота смотрю.
Кстати, что за олимпиада? Если заочная, то надо попробовать.
Quote (clasterit)
а на мои учебные года не попал ни один урок программирования

Мда, не везет. Сейчас тоже ворд проходим - тоска смертная dry
clasterit Дата: Суббота, 15.12.2012, 19:30 | Сообщение # 14
Сообщений: 107
Награды: 2
Репутация:
303
r00t-bag, да я так, на 2 место иду) есть там паренёк, который с 5 класса учит этот паскаль..
олимпиады не заочные, государственные. школьный этап, городской, областной и государственный.
а вот через неделю у нас будет ИКТ(информационно-коммуникационные технологии), то вот там приложу всех усилий, чтобы прорваться. в прошлом году на последний этап ездил.. happy

Да и в прошлом году просто завалили нас.
До сих пор вспоминаю задания как страшный сон dry
Решение первой, самой простой задачи, на 1,5 листка А4... Еще где-то есть мой код)


Сообщение отредактировал clasterit - Суббота, 15.12.2012, 19:31
r00t-bag Дата: Суббота, 15.12.2012, 19:37 | Сообщение # 15
Сообщений: 229
Награды: 533
Репутация:
Quote (clasterit)
Решение первой, самой простой задачи, на 1,5 листка А4

У меня дежавю...
Причем пятая, по идее самая тяжелая задача, заняла максимум пол-листа.
Умеют они делать. Когда сидел среди задротиков - очкариков на последнем третьем часу олимпиады, то слышал разговор учителей информатики, которые проверяли работы уже ушедших участников:
-Блин, Володя, как это решать-то?
-Не знаю, не знаю. Забивай это в паскаль и смотри - работает, или нет.
Вот тут - то меня мой мозг начал вытекать.
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:


Копирование новостей и файлов разрешено | Копирование других материалов с сайта разрешено только со ссылкой на источник.

Для правообладателей