Форум программистов, компьютерный форум, киберфорум
Free Pascal
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 08.03.2012
Сообщений: 13

Написать программу для заполнения трех двумерных массивов последующего их вывода. Есть решение на C, помогите переписать на Pascal

04.04.2012, 11:01. Показов 2624. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Условие задачи
Напишите программу для заполнения трех двумерных массивов последующего их вывода.
Первый массив, размерностью n на m, заполняется данными, вводимыми с клавиатуры, так что заполнение ведется по диагоналям параллельным главной, начиная с правого верхнего угла.
Второй массив, размерностью n на n, заполняется случайными числами так, что в каждом столбце получается убывающая последовательность элементов.
Третий массив, размерностью n на n, заполняется для произвольного n так же, как для n=5.

Название: 233365fb555e.jpg
Просмотров: 348

Размер: 4.2 Кб

В последнем случае необходимо:
1)Описать построение массива для двух разных n;
2)Написать программу;
3)Привести трассировку для n=4.

Алгоритм работы
Первый массив заполняем следующим образом: вводим элементы в двумерный массив, как сказано в условии, при этом предварительно проверяем индекс элемента. Если индекс не попадает в массив, то производим корректировку, например, при вылезании за границы массива вправо, очередным будет элемент в первой строке следующей диагонали и т.п.
Второй массив: для получения убывающей последовательности в столбцах будем заполнять массив таким образом, что каждый вновь задаваемый элемент меньше предыдущего в столбце за счет уменьшения вышестоящего элемента на любое число от 1 до 40.
Третий массив: заполнение ведем по строкам и столбцам, чередуя, при этом после заполнения пары строка-столбец меняем направление заполнения. Одновременно уменьшается и количество недостающих элементов в строках и столбцах. Например, при n=4, заполнение массива идет так: - заполняем первую строку (4 числа), - уменьшаем количество заполняемых элементов (3) - заполняем последний столбец, начиная со второй строки(3 числа) - меняем направление - заполняем последнюю строку, начиная с предпоследнего элемента (3 числа) - уменьшаем количество заполняемых элементов (2) - заполняем первый столбец, начиная с предпоследней строки (2 числа) - меняем направление - заполняем вторую строку со второго столбца (2 числа) - уменьшаем количество заполняемых элементов (1) - заполняем предпоследний столбец с третьей строки (1 число) - меняем направление - заполняем третью строку с третьего элемента (1 число) - массив заполнен.

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

C
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
//Первый массив:
void main( void )
{
  int N, M, i, x, y, Mas[20][20];;
 
   cout <<"Введите кол-во строк n= ";
 cin >>N;
 cout <<"Введите кол-во столбцов m= ";
 cin >>M;
 x = 1;
 y = M;
  for (i = 1; i <= N * M; i ++)
  {
/* Возврат в начало следующей диагонали, если вылезли вниз */
    if  (x>N)
    { while (y!=1)
        {x--;
        y--;}
     x++;}
 
/* Возврат в начало следующей диагонали, если вылезли вправо */
    if  (y>M)
    { while (x!=1)
        { x--;
          y--;}
      y--;
    }
/* Возврат в начало следующей диагонали, если вылезли вверх */
    if  (x<1)
    { while (x!=1)
        { x++;
         y++;}
    }
/* Возврат в начало следующей диагонали, если вылезли влево */
   if  (y<1)
    { while (y!=1)
        { x++;
          y++;}
    }
/* Вводим значение элемента массива */
    cout<<"["<<x<<"]["<<y<<"]= ";
    cin>>Mas[x][y];
/* Переходим к следующей */
    x ++;
    y ++;
  }
 
 /* Вывод массива */
  for (x = 1; x <= N; x++)
  {
    for (y = 1; y <= M; y++)
      cout<<" "<<Mas[x][y];
      cout<<endl;
  }
}
 
//Второй массив:
void main( void )
{
  int N, i, x, y, Mas[20][20];;
 
   cout <<"Введите порядок матрицы n= ";
 cin >>N;
 
randomize();
 for (x = 1; x<=N ; x++)
  {
     for (y = 1; y<=N; y++)
    {
    Mas[x][y]=Mas[x-1][y]-random(40)-1;
    }
  }
 
 
 /* Вывод массива */
  for (x = 1; x <= N; x++)
  {
    for (y = 1; y <= N; y++)
      cout<<" "<<Mas[x][y];
      cout<<endl;
  }
}
 
//Третий массив:
void main ()
{
int result[100][100];
int x,y,d,max,i,j,n;
 
cout <<"\n n=";
cin>>n;
 
   y = 0;
   x = 1;
   max = n*n;
   i = n;
   d = 1;
//заполняем массив
   while (i>=1)
   {
     for (j=1;j<=i;j++)
      {y=y+d;
       result[x][y] = max;
       max--;
      }
    i--;
     for (j=1;j<=i;j++)
      {
       x=x+d;
       result[x][y]=max;
       max--;
      }
    d=d*(-1);
   }
 
 
//выводим массив
    for (i=1;i<=n;i++)
     {
        cout<<endl;
           for (j=1;j<=n;j++)
              {  cout.width(2);
             cout <<result[i][j] <<" ";}
     }
    
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.04.2012, 11:01
Ответы с готовыми решениями:

Напишите программу для заполнения трех двумерных массивов и последующего их вывода
Напишите программу для заполнения трех двумерных массивов и последующего их вывода. Первый массив, размером m×n, заполняется...

Написать программу для двумерных массивов
Найти среднее арифметическое элементов каждого столбца матрицы B(N,M) (N&lt;=10;M&lt;=15) и переписать их в одномерный массив C. Положительные...

Какие есть виды массивов (кроме одномерных, двумерных и двумерных ступенчатых массивов)?
Какие есть виды массивов (кроме одномерных, двумерных и двумерных ступенчатых массивов)? И почему такая вот запись является...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.04.2012, 11:01
Помогаю со студенческими работами здесь

Написать программу. Сортировка двумерных массивов
Отсортировать строки двумерного массива в порядке возрастания максимальных элементов строк.

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

Алгоритм заполнения двумерных массивов
помогите написать алгоритм для заполнения матрицы nXn 1 6 7 2 5 8 3 4 9 и вторая на фото

Реализация заданного алгоритма заполнения двумерных массивов
Добрый день, уважаемые форумчане! Помогите пожалуйста реализовать следующие алгоритмы заполнения двумерных массивов: 1) Имеются два...

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


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru