Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - [решено] Массивы. Ввод параметра для строк и столбцов с клавиатуры,а заполнение матрицы random

Ответить
Настройки темы
Разное - [решено] Массивы. Ввод параметра для строк и столбцов с клавиатуры,а заполнение матрицы random

Аватара для lenaustkz84

Новый участник


Сообщения: 26
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: lenaustkz84
Дата: 17-01-2012
Здравствуйте!

Нужно сделать так, чтобы параметры для строк и столбцов вводились с клавиатуры,
а сама матрица заполнялась случайным образом. При чем реализация ввода матрицы
должна быть в одной процедуре. А вывод матрицы на экран в другой процедуре.

Делаю пока что для ввода матрицы. Но не совсем получается.
Ошибка: "Error 20: Variable identifier expected".
И указывает на переменную a в процедуре.
Так понимаю, что и для переменной b будет та же ситуация.

Думаю, что const нужно убрать, потому что это все таки константы, а мне нужно переменное значение. Но тогда выходит ошибка в строке

type mass = array [1..a,1..b] of integer;

Потому что a и b не определены.

Подскажите, пожалуйста, что нужно сделать. Как правильно написать?

Буду ОЧЕНЬ благодарна, если напишите пример

Вот, что получилось у меня.



Код: Выделить весь код
    const a=10;
              b=10;

              type mass = array [1..a,1..b] of integer;
              var matr : mass;

              procedure zapolnenie_matricij;

              begin

             var i,j:integer;
  
            writeln('Введите параметр для строк: ');
            readln(a);
 
            writeln('Введите параметр для столбцов: ');
            readln(b);

            randomize;
            for i:=1 to a do
               begin
                  for j:=1 to b do
                     begin
                        matr[i,j]=random(15);
                  end;
               end;

        end;
Если пробую прописать a и b как переменные в процедуре, то появляется ошибка "Error 113: Error in statement".

Если просто переменные a и b записываю как:

var a : integer;
b : integer;

то появляется другая ошибка "Error 133: Cannot evaluate this expression".

Отправлено: 17:27, 17-01-2012

 

Аватара для Tonny_Bennet

Ветеран


Сообщения: 1384
Благодарности: 177

Профиль | Отправить PM | Цитировать


Цитата lenaustkz84:
Нужно сделать так, чтобы параметры для строк и столбцов вводились с клавиатуры, »
Судя по коду это называется размерностью массива.

Судя по синтаксису вы пишете на Pascal или Delphi. И по моему ни там ни там то, что вы пытаетесь сделать, сделать не получится.

P.S. В C# это реализуется точно:


Код: Выделить весь код
int [,] mass;
Readln(a);
Readln(b)
 mass = new int[a,b];

-------
Сообщение оказалось полезным? Кнопка Полезное сообщение располагается чуть ниже.


Отправлено: 18:01, 17-01-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Аватара для lenaustkz84

Новый участник


Сообщения: 26
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Tonny_Bennet:
Судя по синтаксису вы пишете на Pascal или Delphi. »
Да, Tonny_Bennet, это Pascal.

Еще мне не совсем понятно, что Вы хотели показать этим кодом.
Объясните, пожалуйста.

Отправлено: 18:12, 17-01-2012 | #3


Аватара для ferget

Разный


Сообщения: 1294
Благодарности: 359

Профиль | Отправить PM | Цитировать


здесь ошибка
Код: Выделить весь код
matr[i,j]=random(15);
надо

Код: Выделить весь код
matr[i,j]:=random(15);
и пишите

Код: Выделить весь код
var a : integer;
b : integer;

Отправлено: 18:19, 17-01-2012 | #4


Аватара для lenaustkz84

Новый участник


Сообщения: 26
Благодарности: 0

Профиль | Отправить PM | Цитировать


ferget, эту ошибку

Цитата ferget:
matr[i,j]:=random(15); »
я сделала здесь на форуме. В программе проверила - без ошибки.

Отправлено: 19:40, 17-01-2012 | #5


Аватара для ferget

Разный


Сообщения: 1294
Благодарности: 359

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
type Matrix = array of array of integer;

function CreateMatrix(m,n: integer): Matrix;
begin
  SetLength(Result,m);
  for var i:=0 to m-1 do
    SetLength(Result[i],n);
end;

procedure FillMatrByRandom(matr: Matrix);
begin
  for var i:=0 to matr.Length-1 do
  for var j:=0 to matr[0].Length-1 do
    matr[i][j] := Random(100);  
end;

var matr: Matrix;

begin
  var a :integer;
  var b :integer;
  
  writeln('Введите параметр для строк: ');
            readln(a);
 
            writeln('Введите параметр для столбцов: ');
            readln(b);
  matr := CreateMatrix(a,b);
  
  FillMatrByRandom(matr);
  end.
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:15, 17-01-2012 | #6


Аватара для lenaustkz84

Новый участник


Сообщения: 26
Благодарности: 0

Профиль | Отправить PM | Цитировать


ferget, здорово!
Еще бы теперь в коде разобраться

Отправлено: 22:03, 17-01-2012 | #7


Аватара для Drongo

Будем жить, Маэстро...


Сообщения: 6694
Благодарности: 1393

Профиль | Сайт | Отправить PM | Цитировать


lenaustkz84, Вы же учитесь, значит должны разбираться, иначе глупо учить программирование.

-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]

http://tools.oszone.net/Drongo/Userbar/SafeZone_cc.gif


Отправлено: 23:40, 17-01-2012 | #8


Аватара для lenaustkz84

Новый участник


Сообщения: 26
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Drongo:
Вы же учитесь, значит должны разбираться, иначе глупо учить программирование. »
Drongo, да я учусь, но учусь недавно. Есть в коде ferget то, что я вижу в первый раз. Все когда-то начинали. И никто не обязан быть семи пядей во лбу.

Отправлено: 06:21, 18-01-2012 | #9


Аватара для lenaustkz84

Новый участник


Сообщения: 26
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вот я сделала. Правда не так виртуозно, как у ferget Но работает

Как бы теперь сделать, чтобы матрица заполнялась не только положительными,
но и отрицательными числами?

Что нужно изменить?

Код: Выделить весь код
program zadanie_30;

uses crt;


const a = 10; {dlya zadaniya strok matricij}
      b = 10; {dlya zadaniya stolbcov matricij}

type  mass = array [1..a, 1..b] of integer;

var   matr : mass; {dlya obsheij matricij}
      a1,b1  : integer; {dlya opredeleniya parametrov matricij}

{*********************************************************************}

procedure vvod_matricij; {procedyra dlya vivoda matricij na ekran}

var i,j:integer;

begin
   writeln('Vvedite a: ');
   readln(a1);

   writeln('Vvedite b: ');
   readln(b1);

   randomize;
   for i:=1 to a do
   begin
      for j:=1 to b do
         begin
            matr[i,j]:=random(10);
         end;
   end;

end;

{*********************************************************************}

procedure matrica_na_ekrane;

   var i,j : integer;

      begin
         for i:=1 to a1 do
            begin
               for j:=1 to b1 do
               begin
                  write(matr[i,j]:5);
               end;
               writeln;writeln;
            end;
      end;
{*********************************************************************}

BEGIN
   clrscr;

   vvod_matricij;
   matrica_na_ekrane;

   readln;
END.

Последний раз редактировалось lenaustkz84, 18-01-2012 в 07:06.


Отправлено: 06:38, 18-01-2012 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - [решено] Массивы. Ввод параметра для строк и столбцов с клавиатуры,а заполнение матрицы random

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Ввод с клавиатуры значения в переменную river123 Скриптовые языки администрирования Windows 8 28-05-2018 00:17
C/C++ - [решено] Нахождение обратной матрицы методом Гаусса и рассширенной матрицы D.Y. Программирование и базы данных 64 06-05-2011 22:59
C/C++ - Строки, массивы строк... ManHack Программирование и базы данных 6 29-04-2011 06:31
CMD/BAT - [решено] Необходимо помощъ в написании батника для удаления столбцов из текстового файла. francke Скриптовые языки администрирования Windows 7 02-04-2010 15:32
Ввод строки с клавиатуры DJ@XON Программирование в *nix 1 06-07-2009 22:25




 
Переход