• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Как сформировать двухмерный массив 7 на 7 и заполнить его единицами (на Паскале)

  • Автор темы Автор темы ummasha
  • Дата начала Дата начала

ummasha

Ученик
Почётный участник
Регистрация
24 Дек 2008
Сообщения
419
Реакции
10
Баллы
0
Как сформировать двухмерный массив 7 на 7 и заполнить его единицами (на Паскале)

Как сформировать двухмерный массив 7 на 7 и заполнить его единицами (на Паскале)? Прошу, помогите!
 
Сначала его нужно прописать в разделе переменных, потом с помощью циклов заполнить.
Код:
var a: array [1..7,1..7] of integer;
     i,j: integer;
begin
for i:=1 to 7 do 
for j:=1 to 7 do a[i,j]:=1;
end.
вывод содержимого массива на экран сделаете сами :)
 
Вы думаете, я этого не сделала?! Еще как сделала! 128 раз! И эти проклятые единицы в зависимости от расстановки begin и end вылезают то в строчку, то в столбик, то по 7, то по 49 сразу!!! :mad:
 
Ну тоже мне - проблема века!

Продолжение:

FOR i:=1 TO 7 DO
BEGIN
FOR j:=1 TO 7 DO
Write(a[i, j]:3);
Writeln;
END;
READLN;
END.

Да, "end." в программе AlexZir убрать.
 
Извиняйте, конечно, но программу я написал так, как был поставлен вопрос :). Более четко формулируйте задание, будет более полный вариант решения.
 
Спасибо!
 
Решала совсем другую задачу и поняла, как решить эту:

Program Pascal;
Var a:array[1..100,1..100] of integer;
i,j:integer;
BEGIN
randomize;
For i:=1 to 7 do
begin
For j:=1 to 7 do
begin
a[i,j]:=random(1)+1;
write(a[i,j]:4);
end;
writeln;
end;
END.

По-другому не получается, только так)))
 
Последнее редактирование:
Решение в общем верное, только возник один вопрос.
randomize;
.....
a[i,j]:=random(1)+1;
А это вам зачем? Вы генерируете случайное значение из интервала (0;1) и увеличиваете его на 1. При этом у вас все равно элемент массива получает значение 1, так как этот массив целочисленный.

Не проще ли написать просто присвоение a[i,j]:=1; не используя генератор псевдослучайных чисел совсем?
 
Да я пробовала, но почему-то не получается.
Сейчас попробовала сделать это в Pascal ABC и все получилось! ))))) Видимо, с Turbo Pascal что-то не в порядке. И еще я, наверное, напутала что-то с begin'ами и end'ами.
 
Последнее редактирование:
Да я пробовала, но почему-то не получается.

Нет, Маша, это не дело. Должно получаться. Давайте подробнее. Ведь что Вы написали? Вместо простейшего оператора присваивания
a[i,j]:=1;
Вы поступаете так:
1. Включаете генератор случайных чисел.
2. Даете ему такое дикое ограничение на диапазон, что он способен генерировать только нули.
3. К этим нулям прибавляете единицу.
В результате, конечно же, единицу и получаете. Но согласитесь - из Брянска в Москву можно добираться и через Лос-Анджелес, только вот зачем?
 
У меня уже все получилось по-нормальному! Я прсто поставила другой Паскаль и разобралась с begin и end! Вот программа:

Program zadacha_7_7_1;
Var a:array[1..100,1..100] of integer;
i,j:integer;
BEGIN
For i:=1 to 7 do
begin
For j:=1 to 7 do
begin
a[i,j]:=1;
write(a[i,j]:4);
end;
writeln;
end;
END.

Все нормально!)))
 
И еще я не очень понимала, что значат записи вроде
a[i,j]:=random(45)-22;
Но теперь наконец-то дошло.)))
 
И еще я не очень понимала, что значат записи вроде
a[i,j]:=random(45)-22;
Но теперь наконец-то дошло.)))

Ну так, на всякий случай. Если в программе употребляется Random, то где-то в ее начале обязательно должна присутствовать запись Randomize; - это включение генератора случайных чисел. Далее возможны два случая:

1. Функция Random без аргумента. Запись
x:=Random;
означает, что вещественной (REAL) переменной х будет присвоено случайное ДРОБНОЕ значение из интервала 0 <= x < 1 .

2. С аргументом. Аргументом может быть ТОЛЬКО целое число (положительное или отрицательное, но не ноль!). Тогда запись
x:=Random(a);
означает, что х принимает ЦЕЛЫЕ значения в интервалах:
при a > 0 0 <= x < a ,
при a < 0 a < x <= 0 .

А теперь вернемся к Вашему примеру:
Random(45) выдает случайное ЦЕЛОЕ число от 0 до 44. Соответственно
(Random(45) - 22) - это целое число от -22 до 22.
 
Спасибо огромное, Vladimir_S! От вас я узнала столько интересного и полезного! Вы действительно мне помогли!
 
Назад
Сверху