Проблема с псевдокодом типа Record, отображением последнего столбца каждой строки - PullRequest
0 голосов
/ 19 февраля 2019

У меня проблема с созданием псевдокода для этого случая:
'Каждая строка имеет различное количество столбцов, моя задача - отобразить последний столбец каждой строки'

type Row is record
Integer: ColumnsAmount
Columns is array [1..ColumnsAmount) of Integer

type Chart is record
Integer: RowsAmount
rows is array [1..RowsAmount) of Row

Chart: tab

.цикл от 1 до RowsAmount и в цикле: вкладка отображения [ColumnsAmount] (отображает последний столбец)

Вот моя попытка:

for f:=1..RowsAmount step 1{

   display(tab[f].tab[ColumnsAmount]) **<-- PROBLEM IN THIS PART**
 }
}

Для справки есть еще одна задача, которая является правильной (яЯ собираюсь сделать что-то подобное выше): «Напишите псевдокод, который будет отображать каждый автомобиль, принадлежащий каждой компании»

type Company is record
 String: name
 Integer: CarAmount
 car is array[1..CarAmount] of Car
end

type Car is record
 String: name
end

data is array[1..10] of Company

Исправьте псевдокод для этого случая:

for f:=1..10 step 1{
 for a:=1..data[f].CarAmount step 1{
   display(data[f].car[a].name)
 }
}

Как я могу это сделатьчто-то похожее в случае строк / столбцов?

1 Ответ

0 голосов
/ 01 марта 2019

Создать иерархию для используемых идентификаторов (указав массивы с []).Помните, что ColumnsAmount может встречаться только один раз для каждой строки, но есть несколько строк.Чтобы правильно определить ColumnsAmount, необходимо включить полную ссылку.Вот ссылки:

tab
  rows[]
    ColumnsAmount

tab
  rows[]
    Columns[]

Введите использованные индексы, включая первый в качестве нижнего индекса ко второму:

tab
  rows[f]
    ColumnsAmount

tab
  rows[f]
    Columns[tab.rows[f].ColumnsAmount]

Затем напишите код:

for f:=1..RowsAmount step 1 {
    display(tab.rows[f].Columns[tab.rows[f].ColumnsAmount])
}

Или, возможно, вы захотите разделить вложенную ссылку (это проще для глаз):

for f:=1..RowsAmount step 1 {
    a:=tab.rows[f].ColumnsAmount
    display(tab.rows[f].Columns[a])
}

То же самое относится к ссылочному примеру, также с двумя ссылками для рассмотрения.CarAmount встречается 10 раз, поэтому необходима полная ссылка, чтобы определить, какие CarAmount:

data[]
  CarAmount

data[]
  car[]
    name

Добавить индексы:

data[f]
  CarAmount

data[f]
  car[a]
    name

Затем код:

for f:=1..10 step 1 {
  for a:=1..data[f].CarAmount step 1 {
    display(data[f].car[a].name)
  }
}
...