IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Заполнение таблиц.
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 16
Пол: Мужской

Репутация: -  0  +


Саму таблицу я могу нарисовать а как сделать ввод данных в саму таблицу?

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

Всем спасибо ;)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 16
Пол: Мужской

Репутация: -  0  +


up
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

Репутация: -  627  +


Что "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 │

Чем не таблица?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 16
Пол: Мужской

Репутация: -  0  +


Цитата(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. И таблицу будет заполнять сам "пользователь"

Сообщение отредактировано: alex9910 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

Репутация: -  627  +


Показываю на примере, как вводить числа, слова вводить еще проще, там не надо проверять ошибки.

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.
Запусти и посмотри, как себя ведет программа.

Но тут вот какой казус: заполнять данные придется последовательно, начиная от первой строки и до последней, то есть ты не сможешь сначала заполнить третью, потом - пятую, а потом первую. Либо программу придется значительно усложнить (скажем, использовать вот эту наработку, некое подобие меню, какую строку пользователь выбрал - ту потом и будет заполнять). Реши для себя, что тебе надо, если не получится реализовать самостоятельно - пиши, я помогу.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 16
Пол: Мужской

Репутация: -  0  +


IUnknown

Большое спасибо, я посмотрю и если что попрошу Вас помощи.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 16
Пол: Мужской

Репутация: -  0  +


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.


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

Репутация: -  627  +


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

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

, строка в любом случае будет прочитана.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 16
Пол: Мужской

Репутация: -  0  +


Цитата(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
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

Репутация: -  627  +


Замени Read(f) на ReadLn(f)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Новичок
*

Группа: Пользователи
Сообщений: 16
Пол: Мужской

Репутация: -  0  +


Цитата(IUnknown @ 17.01.2012 21:21) *

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



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


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

(х) - очередность..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

Репутация: -  627  +


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

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


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Новичок
*

Группа: Пользователи
Сообщений: 16
Пол: Мужской

Репутация: -  0  +


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

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

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



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

На сколько я понял это для того что бы не описывать много переменных...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

Репутация: -  627  +


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


Новичок
*

Группа: Пользователи
Сообщений: 16
Пол: Мужской

Репутация: -  0  +


Цитата(IUnknown @ 17.01.2012 23:13) *

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



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

Просто я толком не смогу rec обьяснить.... хоть и можно почитать в интернете...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Новичок
*

Группа: Пользователи
Сообщений: 16
Пол: Мужской

Репутация: -  0  +


IUnknown,

А как например можно сохранить в txt простейшим способом?smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

Репутация: -  627  +


Write(что_то) выведет что_то на экран, а

var txt : text;
//...
Assign(txt, 'data.txt');
Rewrite(txt);
// ...
Write(txt, что_то);
// ...
Close(txt);
запишет это же что_то в текстовый файл...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 19.04.2024 16:50
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name