Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 6310
Последний выпуск: 19.06.2015

Помогите решить задачи с двумерном массивом.

86K
06 декабря 2012 года
Roger Jolly
3 / / 06.12.2012
1.Разработать в среде Turbo Pascal программу решения взаимосвязанных задач:
a. расчет элементов квадратной матрицы A = (aij), i,j – 1,2,…,n по заданной формуле:

b. упорядочить элементы главной диагонали матрицы А по возрастанию значений.

2. Дан массив из п натуральных шестизначных чисел. Вывести на экран только те, у которых сумма первых трёх цифр равна сумме трёх последних.
Для отладки программы исходный массив сформировать с помощью генератора случайных чисел.
86K
06 декабря 2012 года
lafesta
8 / / 23.11.2012
1. Не вижу взаимосвязи между подзадачами.

2.
Код:
program Project1;

{$APPTYPE CONSOLE}

{$R *.res}

//uses
//  System.SysUtils;

const
  m = 1000;

var
  n,i:integer;
  a: array[1..m] of integer;
begin
  randomize;
  write('array size = '); readln(n);
  writeln;
  for i:= 1 to n do
    begin
      a[i]:= random(899999)+100000;
      if a[i] div 100000 +
      a[i] div 10000 mod 10 +
      a[i] div 1000 mod 10 =
      a[i] div 100 mod 10 +
      a[i] div 10 mod 10 +
      a[i] mod 10
        then write(a[i]:7);
    end;
  readln
end.
86K
07 декабря 2012 года
lafesta
8 / / 23.11.2012
Первая задача

Код:
program Project1;

{$APPTYPE CONSOLE}

{$R *.res}

//uses
//  System.SysUtils;

const
  m = 1000;
var
  a: array[1..m,1..m] of double;
  n,i,j: integer;
begin
  write('array size = '); readln(n);
  for i:= 1 to n do
    begin
      for j:= 1 to n do
        begin
          a[i,j]:= i/j - ln(i*j);
          write(a[i,j]:7:3)
        end;
      writeln;
      writeln  
    end;
  writeln;
  for j:= 1 to n-1 do
    for i:= 1 to n-j do
      if (a[i,i] > a[i+1,i+1]) then
        begin
          a[i,i]:= a[i,i] - a[i+1,i+1];
          a[i+1,i+1]:= a[i,i] + a[i+1,i+1];
          a[i,i]:= a[i+1,i+1] - a[i,i]
        end;
  for i:= 1 to n do
    begin
      for j:= 1 to n do
        begin
          write(a[i,j]:7:3)  
        end;
        writeln;
        writeln
    end;
  readln
end.
86K
07 декабря 2012 года
Roger Jolly
3 / / 06.12.2012
Цитата:

 
Код:
begin
      a[i]:= random(899999)+100000;
      if a[i] div 100000 +
      a[i] div 10000 mod 10 +
      a[i] div 1000 mod 10 =
      a[i] div 100 mod 10 +
      a[i] div 10 mod 10 +
      a[i] mod 10
        then write(a[i]:7);


Извините меня, но можно вот тут по подробней рассказать. Почему random(899999)+100000 набирается так?

86K
07 декабря 2012 года
lafesta
8 / / 23.11.2012
в скобочках указано до скольки брать рандомное число начиная от 0
random(100) в делфи от 0 до 99, в паскале от 0 до 100
прибавляем к нему другое число, то есть сдвигаем диапозон на указанное число

в итоге random (899999) это в пскале от 0 до 899999
приьавляем 100000 диапозон от 100000 до 999999
это весь диапозон шестизначных(!) чисел который нам и требуется
а далее в if берутся сумма первых трех цифр шестизначного числа и сравнивается с суммой трех последних цифр этого же шестизначного числа
86K
08 декабря 2012 года
Roger Jolly
3 / / 06.12.2012
Спасибо большое тебе, очень помогли вы мне:)

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог