Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
11 / 12 / 8
Регистрация: 16.11.2016
Сообщений: 892

Ошибки в готовой программе

24.12.2016, 17:34. Показов 2744. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Var s,i,j,b:integer;
const N=5;
Var A:array [1..n] of array [1..n] of integer;
begin
b:=(div(n/2))+1;
for j=1 to b do begin
   for i=1 to b do
   begin
   if ((i>0+s) and (i<n-s)
   begin
   A[j][i]=1;
   i++;
   end.
   else
   begin
   K[j][i]=0;
   i++;
   end.
   s++;
   end.
if j=b then
begin
s:=s;  //я просто не знаю можно ли пустой скелет сюда вставлять, поэтому столь глупая операция
end.
else 
begin
s:=0;
end
for i=b+1 to n do
begin   //ну тут для нижней части матрицы и потом вывод, ещё не дописал
 
end.
Ошибки 5.5 недопустимое выражение
5.8 синтаксическая ошибка, ожидается ")", но обнаруженно "("
Программа должна составить матрицу ввида
1 1 1 1 1
0 1 1 1 0
0 0 1 0 0
0 1 1 1 0
1 1 1 1 1
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.12.2016, 17:34
Ответы с готовыми решениями:

Найдите ошибку в готовой программе
Даны 2 целочисленных массива разной размерности А и В. определить какой процент составляет количество четных элементов массива А от общего...

Написать комментарии к готовой программе
Сам сделать не могу,зато нашел сделанную. Но без комментариев не сдать.. Даны действительные числа а1...а30. Оставить без изменений...

Блок схема к готовой программе
Привет! помогите построить блок схему к следующей программе. Задача: Текстовый файл содержит несколько целых чисел, выбросить из записи...

12
Модератор
10419 / 5707 / 3401
Регистрация: 17.08.2012
Сообщений: 17,364
24.12.2016, 22:29
Лучший ответ Сообщение было отмечено triatri3 как решение

Решение

triatri3, либо эта программа целиком состоит из ошибок, либо написана не на паскале. Иными словами, ничего Ваша программа не готовая.

Добавлено через 50 минут
Если немножко подумать, то задачу можно решить проще, вот так, например:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const n = 15;
var a: array[1..n, 1..n] of integer;
    i, j: integer;
begin
  for i := 1 to n do
    begin
      for j := 1 to n do
        begin
          a[i, j] := ord((j <= i) and (n + 1 <= i + j) or (i <= j) and (i + j <= n + 1));
          write(a[i, j]:2)
        end;
      writeln
    end;
  readln
end.
1
11 / 12 / 8
Регистрация: 16.11.2016
Сообщений: 892
26.12.2016, 12:22  [ТС]
Почти, получилась матрица
11111
11110
11100
11110
11111
0
Модератор
10419 / 5707 / 3401
Регистрация: 17.08.2012
Сообщений: 17,364
26.12.2016, 13:32
Прогон программы при n = 5
1 1 1 1 1
0 1 1 1 0
0 0 1 0 0
0 1 1 1 0
1 1 1 1 1


Где Вы ошиблись при копировании моей программы?
0
11 / 12 / 8
Регистрация: 16.11.2016
Сообщений: 892
28.12.2016, 19:14  [ТС]
в PascalABC вовсе пишет функция ORD с параметрами указанных типов не найдена
0
Модератор
10419 / 5707 / 3401
Регистрация: 17.08.2012
Сообщений: 17,364
29.12.2016, 21:49
triatri3, а что Вы тогда пишите в общий раздел паскаля? Писали бы сразу в Pascal ABC. Откуда мне знать, что Вы используете не нормальный паскаль, а этого уродца, у которого ампутировано всё, что можно, и всё, что нельзя...

Замените ord эквивалентным условным оператором:
Pascal
9
          if (j <= i) and (n + 1 <= i + j) or (i <= j) and (i + j <= n + 1) then a[i, j] := 1 else a[i, j] := 0;
1
11 / 12 / 8
Регистрация: 16.11.2016
Сообщений: 892
30.12.2016, 15:51  [ТС]
извините, я не совсем ещё адаптирован в среде программирования. Если считаете что ABC плохая среда, то какой пользуетесь вы? какую посоветуете ещё? если под рукой ссылка на скачку, было бы отлично скинуть сюда её. Огромное спасибо
0
Модератор
10419 / 5707 / 3401
Регистрация: 17.08.2012
Сообщений: 17,364
31.12.2016, 23:23
Лучший ответ Сообщение было отмечено triatri3 как решение

Решение

triatri3, я не считаю, что ABC плохая среда. Просто это - максимально упрощённый учебный диалект паскаля, в нём отсутствуют многие операторы и стандартные процедуры, присущие всем остальным диалектам паскаля, включая достаточно древние. Также некоторые перезагружаемые процедуры и функции поддерживают не все типы данных, с чем мы здесь и столкнулись.

Почитайте закреплённые темы в разделе Pascal, там много интересного, есть там и тема о том, что и откуда можно скачать.

АВС неплох для обучения программированию, но не годится даже для создания программ: исполняемый файл (.exe) с его помощью без танцев с бубном не создать, да и то, что получается в результате камлания, на других компьютерах может и не работать.

Я использую FPC + Lazarus, Delphi 7, и, исключительно для проверки программ для киберфорума, TP 7.

Если Вы считаете, что Вам требуется написание годных к распространению программ, от Pascal ABC придётся отказаться. Мои рекомендации:

Lazarus - свободно распространяемая визуальная среда программирования (лицензия GNU GPL) для Free Pascal Compiler (FPC). Достаточно скачать Lazarus, он включает в себя FPC и "сам Lazarus". В среде используется диалект языка Object Pascal. Есть несколько режимов компиляции, задаются директивой компилятора {$MODE XXX}, где XXX может быть FPC, TP, GPC, OBJFPC, DELPHI. Таким образом, в среде Lazarus можно писать программы, совместимые с Free Pascal, Turbo Pascal, GNU Pascal, Object Pascal и Delphi 2 (вроде бы, точнее не скажу, программы на Delphi 7 при запуске в Lazarus требуется малость рихтовать) и писать программы для разных платформ. Короче, write once - compile anywhere. Достоинства: гибкая, универсальная и кроссплатформенная среда разработки. Есть и недостатки. Не всё в нём гладко из-за этих самых универсальности и кроссплатформенности, поскольку объять необъятное весьма проблематично.

Pascal ABC.NET - свободно распространяемая и весьма мощная визуальная среда программирования, основанная на диалекте языка Object Pascal и платформе .NET. Можно использовать регулярные выражения и операции с последовательностями (как в C#). Ну и, другие .NET-овские прибамбасы. Часто PABC.NET путают с PABC. Не стоит этого делать, хотя происхождение у них общее, эти два диалекта паскаля различаются больше, чем небо и земля. Достоинства: короткий и эффективный код, использование .NET. Недостатки: можно писать программы только под Windows. Вообще, многие считают, что лучше программировать на C#, а эту "прокладку между паскалем и .NET" не использовать. По-моему, это дело вкуса, поскольку языковые предпочтения у программистов разные.

Delphi - мощная, на сегодняшний день и кроссплатформенная, среда разработки на базе дальнейшего развития языка Object Pascal, который теперь называют языком Delphi. По-моему, как был он паскалем, так паскалем и остался. Меня удивляет, что же это Object Pascal обозвали Delphi, обозвали бы уже сразу "Embarcadero", чего мелочиться. Достоинств много. Недостатки - неудобство написания системных программ (типа драйверов и т. п.), не слишком большая популярность и далеко не бесплатность. К примеру, я себе RAD Studio позволить ну никак не могу - штанов не хватит. А посему - Lazarus. Невысокая популярность вообще всех паскале-подобных языков, по моему мнению, проистекает из-за лени: большинство программ для Windows писаны на Си-подобных языках, ну и, зачем много знать, если можно знать только Си.

Вообще, если собираетесь заняться программированием серьёзно, советую Вам знать не только все диалекты паскаля, но также и другие языки, прежде всего, все основные диалекты C++ и C#, скриптовые языки (JS, Python и иже с ними), всякое там PHP и HTML, и вообще, неплохо знать синтаксис всех широко применяемых языков хотя бы затем, чтобы свободно читать любые программы. Также необходимо знать Ассемблер для целевой (то есть, выбранной Вами для работы) платформы и аппаратную часть этой самой платформы, если серьёзно - без этих знаний - никак, поскольку в этом случае Вас на голову будут опережать те, кто такими знаниями владеет.

Наверное, слышали о холиварах типа "что лучше: си или паскаль?". Если последуете моему совету, то такие холивары будут Вам видеться тем, чем они и являются: нелепостью. На самом деле, разные языки для разных задач и подходят по-разному: один язык лучше для того, другой - для этого. Поэтому знать нужно всё.

К вопросу о выборе:
- Ненавижу кошек!!!
- Да ладно, ты просто не умеешь их готовить...
Не знаю, ответил ли я на Ваш вопрос, но, по крайней мере, я попытался уговорить Вас задуматься.
1
11 / 12 / 8
Регистрация: 16.11.2016
Сообщений: 892
04.01.2017, 14:42  [ТС]
Ошибка в программе, пишет выход за границы диапазона индекса 1..15, в строке 13. код таков:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
const n=15;
Var a:array[1..n, 1..n] of integer;
      i,j:integer;
begin
for i:=1 to n do
begin
   if (j<=1) and (n+1<=i+j) or (i<=j) and (i+j<=n+1) then
       begin
       a[i,j]:=1;
       end
   else 
      begin
      a[i,j]:=0;
      end;
      end;
write (a[i,j]:2);
writeln;
readln
end.
Помогите пожалуйста, отдельное спасибо за помощь в выборе среды программирования, прислушаюсь к вашим советам.
0
Платежеспособный зверь
 Аватар для кот Бегемот
8966 / 4389 / 1655
Регистрация: 28.10.2009
Сообщений: 11,647
04.01.2017, 15:59
Попробуйте вместо
Pascal
1
Var a:array[1..n, 1..n] of integer
написать
Pascal
1
Var a:array[0..n, 0..n] of integer
0
11 / 12 / 8
Регистрация: 16.11.2016
Сообщений: 892
04.01.2017, 16:40  [ТС]
да,теперь ошибок не выдаёт, но в Паскаль ABC ничего не выдаёт, не подскажите как исправить? Спасибо вам огромное за помощь
0
Модератор
10419 / 5707 / 3401
Регистрация: 17.08.2012
Сообщений: 17,364
04.01.2017, 19:28
Лучший ответ Сообщение было отмечено triatri3 как решение

Решение

Отчего же ничего не выдаёт? Не лукавьте, выводит элемент массива a[0, 0]. Собственно, в этом и есть ошибка. Вы оператор вывода и переход на следующую строку массива
Pascal
16
17
write (a[i,j]:2);
writeln;
случайно написали после всех циклов, где, строго говоря, i и j имеют неопределённое значение, скажем так, для PABC - нулевое. Вот Вам и вылет за границы индексов и "ничегонепечатанье" в одном флаконе. Наверное, поэтому, в попытке заставить программу работать хоть как-то, Вы превознесли в неё лишние операторные скобки и разделители. Зато выкинули куда-то цикл по j. И ошиблись в операторе if. И форматирование кода у Вас не очень... Если выкинуть всё ненужное, исправить ошибки и поставить в Вашей программе строки 16 и 17 на их законное место, получится ровно то, что и должно получиться, а именно, моя программа с if вместо ord. Вот, специально оформил в Вашем стиле:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
uses crt; //для PABC добавить, чтобы окно вывода не закрывалось автоматически
const n=15;
Var a:array[1..n, 1..n] of integer;
      i,j:integer;
begin
for i:=1 to n do
begin
   for j := 1 to n do //как Вы это пропустили, не постигаю...
   begin //и это пропустили
      if (j <= i) and (n + 1 <= i + j) or (i <= j) and (i + j <= n + 1) then //здесь опечатались, первое условие у Вас (j<=1), а не (j<=i)
         //begin не нужно
         a[i,j]:=1 //; (только точка с запятой) здесь не нужна
         //end не нужно
      else
         //begin не нужно
         a[i,j]:=0;
         //end; не нужно
      write (a[i,j]:2)//; (только точка с запятой) здесь не требуется; у Вас это было за циклом
   end; //и это пропустили
   writeln //; (только точка с запятой) здесь не требуется; у Вас это было за циклом
end;
//readln // для PABC не требуется
end.
Со стёртыми комментариями и с "разлепленными" символами (когда символы склеены, я не могу отделаться от впечатления, что им дышать нечем), форматирование оставил в Вашем стиле:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
uses crt;
const n = 15;
Var a: array[1..n, 1..n] of integer;
    i, j: integer;
begin
for i := 1 to n do
begin
   for j := 1 to n do
   begin
      if (j <= i) and (n + 1 <= i + j) or (i <= j) and (i + j <= n + 1) then
         a[i, j] := 1
      else
         a[i, j] := 0;
      write(a[i, j]:2)
   end;
   writeln
end
end.
1
11 / 12 / 8
Регистрация: 16.11.2016
Сообщений: 892
05.01.2017, 11:45  [ТС]
спасибо огромное, всё в точности работает. Огромное спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.01.2017, 11:45
Помогаю со студенческими работами здесь

Блок-схема к готовой программе
uses crt; var sq1,sq2: real; function Exist (a,b,c: real): boolean; begin Exist:=((b+c-a)&gt;0) and ((a+c-b)&gt;0) and ((a+b-c)&gt;0); ...

Составьте блок-схему по готовой программе
составить блок схему)))помогите IF a=b THEN z:=a+b ELSE Begin IF a&gt;0 THEN

Составить блок-схемы по готовой программе
program zad; uses crt; type m=array of integer; procedure vvod; var mas:array of integer; j,max,kol:integer; begin

Составьте блок-схему по готовой программе
Составьте блок-схему по готовой программе. PROGRAM summa; VAR A,S:REAL; BEGIN S:=0; A:=0.2; WHILE A&lt;=2 DO BEGIN ...

Описание процедур и функций к готовой программе
Привет! Помогите пожалуйста написать 'описание процедур и функций' к следующей программе: (задача:Текстовый файл содержит несколько целых...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru