Саму таблицу я могу нарисовать а как сделать ввод данных в саму таблицу?
Полный текст задачи: Имеются некоторые данные фирмы, занимающейся реализацией товаров: Название поставщика поставляющего товар, Номер склада, Количество товара (в тоннах). Вывести на экран в виде таблицы сведения о доставке Y тонн продукции на склад № X, Ввод исходных данных реализовать тоже в таблице, чтобы избежать подсказок ввода. Хранить исходные данные в массивах (каждый столбец таблицы отдельный массив).
Всем спасибо ;)
alex9910
15.01.2012 15:17
up
IUnknown
15.01.2012 16: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.
Что "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.
Наименование | Склад | Кол-во Наименование что бы буквами вводилось, а все остальное цифрами. Так как-то можно сделать?
p. s. Рисовать обычным write. И таблицу будет заполнять сам "пользователь"
IUnknown
16.01.2012 1:37
Показываю на примере, как вводить числа, слова вводить еще проще, там не надо проверять ошибки.
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
16.01.2012 3:11
IUnknown
Большое спасибо, я посмотрю и если что попрошу Вас помощи.
alex9910
17.01.2012 0:54
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
17.01.2012 21:51
Я ж написал, что для текста можно обработку ошибок не делать:
for i := 1 to size do begin gotoxy(8, i); write('':(Width - 1)); gotoxy(9, i); read(f); end;
, строка в любом случае будет прочитана.
alex9910
18.01.2012 0:14
Цитата(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;
, строка в любом случае будет прочитана.
А почему только одна строка заполняется при переходе на следующую вылетает....
IUnknown
18.01.2012 0:21
Замени Read(f) на ReadLn(f)
alex9910
18.01.2012 0:39
Цитата(IUnknown @ 17.01.2012 21:21)
Замени Read(f) на ReadLn(f)
А во что бы заполнение происходило последовательно это реально осуществить?
Наименование | Склад | Кол-во (1) (2) (3)
(х) - очередность..
IUnknown
18.01.2012 1:18
Не спрашивай, реально или нет. Реально сделать всё. Спрашивай, как это сделать. К примеру,
вот так...(Показать/Скрыть)
uses crt;
type Rec = record Title : string; Stock : Integer; Amount : Integer; end;
for i := 1 to size do begin writeln(#179:2, i:2, #179:2, #179:2 + Width_Title, #179:2 + Width_Stock, #179:2 + Width_Amount - 1); end;
for i := 1 to size do begin Start := 7; gotoxy(Start, i + 1); write('':Width_Title); gotoxy(Start + 1, i + 1); readln(arr[i].Title);
Inc(Start, Width_Title + 2);
{$i-} repeat gotoxy(Start, i + 1); write('':Width_Stock); gotoxy(Start + 1, i + 1); readln(Value); until IOResult = 0; arr[i].Stock := Value;
Inc(Start, Width_Stock + 2);
repeat gotoxy(Start, i + 1); write('':Width_Amount); gotoxy(Start + 1, i + 1); readln(Value); until IOResult = 0; arr[i].Amount := Value; {$i+} end; end.
Ого-го , такого еще не видел) А если я без rec сделаю? там же считай все останется , только немного подредактировать..
На сколько я понял это для того что бы не описывать много переменных...
IUnknown
18.01.2012 2:13
Да, тогда тебе придется описывать 3 массива (ну, или сколько там у тебя будет полей). Тебе это надо? И потом, ты ж вроде собрался БД делать, надо как-то и в файл сохранять. Это что, тоже будешь по отдельности делать? Записью-то проще.
alex9910
18.01.2012 2:16
Цитата(IUnknown @ 17.01.2012 23:13)
Да, тогда тебе придется описывать 3 массива (ну, или сколько там у тебя будет полей). Тебе это надо? И потом, ты ж вроде собрался БД делать, надо как-то и в файл сохранять. Это что, тоже будешь по отдельности делать? Записью-то проще.
Я учусь в колледже rec не проходили а базы тоже
Просто я толком не смогу rec обьяснить.... хоть и можно почитать в интернете...
alex9910
19.01.2012 0:00
IUnknown,
А как например можно сохранить в txt простейшим способом?