Помощь - Поиск - Пользователи - Календарь
Полная версия: Заполнение таблиц.
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
alex9910
Саму таблицу я могу нарисовать а как сделать ввод данных в саму таблицу?

Полный текст задачи: Имеются некоторые данные фирмы, занимающейся реализацией товаров: Название поставщика поставляющего товар, Номер склада, Количество товара (в тоннах). Вывести на экран в виде таблицы сведения о доставке Y тонн продукции на склад № X, Ввод исходных данных реализовать тоже в таблице, чтобы избежать подсказок ввода. Хранить исходные данные в массивах (каждый столбец таблицы отдельный массив).

Всем спасибо ;)
alex9910
up
IUnknown
Что "up"? Ты ж не сказал ничего, как ты таблицу рисовать собрался, какой у тебя режим, графический или текстовый. Для текстового режима, например, не надо ничего делать отдельно. Выводишь таблицу вместе с данными:

const
arrX : array[1 .. 5] of real =
(1.23, 2.345, 2.323, 4.3, 5);
var
i : integer;

begin
for i := 1 to 5 do
begin
write(#179' #', i:2, #179:2);
writeln(arrX[i]:7 :4, #179:2);
end;
end.
выведет
│ # 1 │ 1.2300 │
│ # 2 │ 2.3450 │
│ # 3 │ 2.3230 │
│ # 4 │ 4.3000 │
│ # 5 │ 5.0000 │

Чем не таблица?
alex9910
Цитата(IUnknown @ 15.01.2012 13:01) *

Что "up"? Ты ж не сказал ничего, как ты таблицу рисовать собрался, какой у тебя режим, графический или текстовый. Для текстового режима, например, не надо ничего делать отдельно. Выводишь таблицу вместе с данными:

const
arrX : array[1 .. 5] of real =
(1.23, 2.345, 2.323, 4.3, 5);
var
i : integer;

begin
for i := 1 to 5 do
begin
write(#179' #', i:2, #179:2);
writeln(arrX[i]:7 :4, #179:2);
end;
end.
выведет
│ # 1 │ 1.2300 │
│ # 2 │ 2.3450 │
│ # 3 │ 2.3230 │
│ # 4 │ 4.3000 │
│ # 5 │ 5.0000 │

Чем не таблица?





Виноватsmile.gif

А вот если например

Наименование | Склад | Кол-во
Наименование что бы буквами вводилось, а все остальное цифрами. Так как-то можно сделать?

p. s. Рисовать обычным write. И таблицу будет заполнять сам "пользователь"
IUnknown
Показываю на примере, как вводить числа, слова вводить еще проще, там не надо проверять ошибки.

uses crt;

const
size = 5;
Width = 15; // ширина поля для ввода числа
var
arrX : array[1 .. size] of real;
f : real;
i : integer;

begin
clrscr;
// сначала рисуем таблицу
for i := 1 to 5 do
begin
write(#179' #', i:2, #179:2);
writeln(#179:Width);
end;

// а потом пользователь заносит туда данные
for i := 1 to size do
begin
{$i-}
repeat
gotoxy(8, i);
write('':(Width - 1));
gotoxy(9, i);
read(f);
until IOResult = 0; // как только введено правильное вещественное число - продолжаем
{$i+}
arrX[i] := f;
end;

end.
Запусти и посмотри, как себя ведет программа.

Но тут вот какой казус: заполнять данные придется последовательно, начиная от первой строки и до последней, то есть ты не сможешь сначала заполнить третью, потом - пятую, а потом первую. Либо программу придется значительно усложнить (скажем, использовать вот эту наработку, некое подобие меню, какую строку пользователь выбрал - ту потом и будет заполнять). Реши для себя, что тебе надо, если не получится реализовать самостоятельно - пиши, я помогу.
alex9910
IUnknown

Большое спасибо, я посмотрю и если что попрошу Вас помощи.
alex9910
IUnknown,

а для текста так?


uses crt;

const
size = 5;
Width = 15; // ширина поля для ввода числа
var
arrX : array[1 .. size] of string;
f : string;
i : integer;

begin
clrscr;
// сначала рисуем таблицу
for i := 1 to 5 do
begin
write(#179' #', i:2, #179:2);
writeln(#179:Width);
end;

// а потом пользователь заносит туда данные
for i := 1 to size do
begin
{$i-}
repeat
gotoxy(8, i);
write('':(Width - 1));
gotoxy(9, i);
read(f);
until arrX[i] := f; // как только введено правильное вещественное число - продолжаем
{$i+}

end;

end.


IUnknown
Я ж написал, что для текста можно обработку ошибок не делать:

   for i := 1 to size do
begin
gotoxy(8, i);
write('':(Width - 1));
gotoxy(9, i);
read(f);
end;

, строка в любом случае будет прочитана.
alex9910
Цитата(IUnknown @ 17.01.2012 18:51) *

Я ж написал, что для текста можно обработку ошибок не делать:

   for i := 1 to size do
begin
gotoxy(8, i);
write('':(Width - 1));
gotoxy(9, i);
read(f);
end;

, строка в любом случае будет прочитана.



А почему только одна строка заполняется при переходе на следующую вылетает.... sad.gif
IUnknown
Замени Read(f) на ReadLn(f)
alex9910
Цитата(IUnknown @ 17.01.2012 21:21) *

Замени Read(f) на ReadLn(f)



А во что бы заполнение происходило последовательно это реально осуществить?


Наименование | Склад | Кол-во
(1) (2) (3)

(х) - очередность..
IUnknown
Не спрашивай, реально или нет. Реально сделать всё. smile.gif Спрашивай, как это сделать. К примеру,

вот так... (Показать/Скрыть)


alex9910
Цитата(IUnknown @ 17.01.2012 22:18) *

Не спрашивай, реально или нет. Реально сделать всё. smile.gif Спрашивай, как это сделать. К примеру,

вот так... (Показать/Скрыть)



Ого-го , такого еще не видел)
А если я без rec сделаю? там же считай все останется , только немного подредактировать..

На сколько я понял это для того что бы не описывать много переменных...
IUnknown
Да, тогда тебе придется описывать 3 массива (ну, или сколько там у тебя будет полей). Тебе это надо? И потом, ты ж вроде собрался БД делать, надо как-то и в файл сохранять. Это что, тоже будешь по отдельности делать? Записью-то проще.
alex9910
Цитата(IUnknown @ 17.01.2012 23:13) *

Да, тогда тебе придется описывать 3 массива (ну, или сколько там у тебя будет полей). Тебе это надо? И потом, ты ж вроде собрался БД делать, надо как-то и в файл сохранять. Это что, тоже будешь по отдельности делать? Записью-то проще.



Я учусь в колледже rec не проходили а базы тоже smile.gif

Просто я толком не смогу rec обьяснить.... хоть и можно почитать в интернете...
alex9910
IUnknown,

А как например можно сохранить в txt простейшим способом?smile.gif
IUnknown
Write(что_то) выведет что_то на экран, а

var txt : text;
//...
Assign(txt, 'data.txt');
Rewrite(txt);
// ...
Write(txt, что_то);
// ...
Close(txt);
запишет это же что_то в текстовый файл...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.