Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
1 / 1 / 0
Регистрация: 18.03.2020
Сообщений: 81

Сделать процедуру для ручного заполнения матрицы

14.09.2020, 17:48. Показов 2028. Ответов 2

Студворк — интернет-сервис помощи студентам
всем привет, суть задачи в том, что бы сделать процедуру для заполнения ручного 2умерного массива или же матрицы.
я знаю нет смысла делать процедуру для этого, фишка просто в том что бы практиковаться мне не пришло в голову пока ничего другого. Вот в итоге я что-то попытался написать и выходит какой-то конфликт а именно "Форматное выражение может использоваться только внутри write, writeln и str" не совсем понимаю, может посоветуете или поправите как правильнее сделать именно из моего "кода"
Заранее спасибо.
да и вообще правильно ли я расположил объявление массива как тип для использования в процедуре, если нет то как правильнее.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
program gg;
const
n = 7;
m = 8;
type massiv = array[1..n,1..m] of real;
var a:massiv;
    i,j:integer;
procedure zapolnenie(k,l:integer;var b:real);
begin
  for k:=1 to n do begin
    for l:=1 to m do begin
      read(b[k,l]:3:1);
    end;
    writeln();
  end;
  end;
  begin
      write('введите ваш массив 7*8');
      zapolnenie(i,j,a);
      writeln(a[i,j]:3:1);
end.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.09.2020, 17:48
Ответы с готовыми решениями:

Быстрый способ ручного заполнения матрицы
Есть ли аналогичный, быстрый способ ручного заполнения матрицы в С# вот такому методу в С++ int a = { {2,8, 30, 5}, {-4,...

Дописать программу для ручного ввода размерности матрицы с клавиатуры вместо константы в паскале
Добрый день! Дана матрица размером n х m в программе фиксированная 4*3. Переставляя ее строки и столбцы, добиться того, чтобы наибольший...

Составить процедуру для заполнения массива из N элементов значениями в интервале от -40 до 35
Составить процедуру для заполнение массива из N элементов значениями в интервале от - 40 до 35.

2
Модератор
10442 / 5734 / 3406
Регистрация: 17.08.2012
Сообщений: 17,442
14.09.2020, 21:59
Лучший ответ Сообщение было отмечено AlexeyNo как решение

Решение

У Вас как с русским? Нельзя сделать неправильную программу правильнее. Для начала программу нужно сделать правильной, и только после этого её можно сделать правильнее.

Не ошибка. Строка со словом program в современных паскалях не обязательна.

Не объявляйте глобальные переменные до подпрограмм без особой на то необходимости. Объявление глобальных переменных до подпрограмм порождает трудно устранимые ошибки из-за пересечения областей видимости глобальных и локальных переменных.

Нелепо передавать в подпрограмму счётчики циклов. Счётчики циклов объявляйте как локальные переменные. Иногда в подпрограммы передаются размеры массива. Но Вам-то зачем: размеры массива у Вас не изменяются.

Если в подпрограмме желаете ввести массив, так и указывайте в формальных параметрах массив, а не бог весть что.

Незачем одиночный оператор заключать в операторные скобки begin..end (строки 11..13).

В стандартном паскале бывает только форматированный вывод, но никак не форматированный ввод. Вам же написали, что форматированное выражение (типа Вашего b[k,l]:3:1) используется только внутри write, writeln и str. Следовательно, внутри readln это самое выражение использовано быть не может. Не постигаю, как Вы этого не смогли понять.

Не ошибка, но глаза режет. Паскаль - не С++, незачем после writeln указывать пустые скобки. И, кстати, в строке 14 нужен не writeln, а readln.

в 20 строке ошибка: глобальные переменные i и j не были инициализированы, поэтому их значения равны 0, и будет ошибка выхода индексов за границы массива, поскольку индексация массива "a" начинается с 1. Вы, вероятно, хотели в строке 20 весь массив вывести. Делается это совсем не так, как Вы написали. В подавляющем большинстве диалектов паскаля нельзя вывести массив одним оператором, а в тех диалектах, где это возможно, вывод массива делается совершенно не так, как Вы написали.

Вы правильно думаете, подпрограммы в Вашей программе нужны как зайцу стоп-сигнал. Подпрограммы используются тогда, когда нужно более одного раза повторить фрагмент кода, возможно, с разными (формальными) параметрами, либо когда фрагмент программы представляет собой достаточно сложную, но логически завершённую часть кода (типа вычисления какого-нибудь интеграла Френеля), или внутри модулей. Но, раз Вы зачем-то используете отдельную подпрограмму для однократного ввода массива, то почему бы не использовать подпрограмму для однократного вывода массива.

Вы путаете операторы write и writeln.

Если желаете что-то писать на паскале, Вам нужно освоить от силы 100 страниц любой книжки по любому паскалю.

Исправленная программа (на основе Вашего кода):
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
33
34
35
36
37
38
39
const
  n = 7;
  m = 8;
 
type
  massiv = array[1..n, 1..m] of real;
 
procedure zapolnenie(var b: massiv);
var
  i, j:integer;
begin
  for i := 1 to n do
    for j := 1 to m do
      read(b[i,j]);
  readln
end;
 
procedure vivod(const b: massiv);
var
  i, j:integer;
begin
  for i := 1 to n do
    begin
      for j := 1 to m do
        write(b[i,j]:4:1);
      writeln
    end
end;
 
var
  a: massiv;
 
begin
  writeln('Введите массив ', n, '*', m);
  zapolnenie(a);
  writeln('Массив:');
  vivod(a);
  readln
end.
Только это не программа, а незнамо что. Всё потому, что Вы не смогли чётко поставить задачу, а только выразили какие-то Ваши мелкие и несуразные хотелки.

И ещё. Когда пишете какой-либо текст, в нужных местах используйте, пожалуйста, прописные буквы и запятые. У Вас их нет, что ли, или Вам их жалко? Ну тогда вот Вам запас на первое время:

АААБББВВВГГГДДДЕЕЕЁЁЁЖЖЖЗЗЗИИИЙЙЙ
КККЛЛЛМММНННОООПППРРРСССТТТУУУФФФ
ХХХЦЦЦЧЧЧШШШЩЩЩЪЪЪЫЫЫЬЬЬЭЭЭЮЮЮЯЯЯ
AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMM
NNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,


Еще научитесь в нужных местах писать "что бы" слитно. А то смешно получается: "суть задачи в том, что бы сделать..." по смыслу это то же самое, что и "суть задачи в том, что хотелось бы (для смеха, к примеру) что-то сделать, правда, не знаю, что именно, но сделать (так, для хохмы, от нечего делать или, к примеру, от скуки)...". Типа, "Что бы такого сделать плохого". А вот "Суть задачи в том, чтобы сделать..." означает "Суть задачи в том, что нужно сделать...".
1
1 / 1 / 0
Регистрация: 18.03.2020
Сообщений: 81
14.09.2020, 22:13  [ТС]
Cyborg Drone, спасибо, я постараюсь исправиться, а ваш запас сохраню. На память.)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.09.2020, 22:13
Помогаю со студенческими работами здесь

Как создать хранимую процедуру для заполнения таблицы с уникальными ключами?
всем добра! Мне нужна помощь, я хочу создать хранимую процедуру которая бы заполняла поля данными в бд гостиница, процедуру я создать то...

Помогите сделать функцию рандомного заполнения матрицы
Из входного потока вводится непрямоугольная матрица целых чисел , i=1,...j=1,....,ni. Значения m и ni заранее неизвестны и вводятся из...

Сделать checkbox обязательным для заполнения?
<label class="pol_f1"><input type="checkbox" /> Я согласен с <span> <a class="politik_f1"...

Как сделать блоки для заполнения
Есть модель (пример): public class User { public string Surname { get; set; } public string...

Посоветуйте компонент для заполнения матрицы
Народ, кто подскажет как ввести и считать матрицу. Суть в том что пишу программу с GUI под Win32 и и пользую Windows Forms в MS VS2008. ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru