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

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

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

 
 Ответить  Открыть новую тему 
> калькулятор
Yurka
сообщение 29.06.2005 14:50
Сообщение #1


Пионер
**

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

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


Напишите программу, что имитирует экран калькулятора, другими словами, нужно, чтобы в ней после введения целого числа меньше 10 (|N | < 10) из клавиатуры вид этой цифры отображался на дисплее. Символ числа должен появляться сразу после ввода фигуры числа

Изображение каждой фигуры или отметки появляется с помощью включения/выключения семи элементов жидкокристаллического дисплея. Состояние программы-дисплея должно отображаться с помощью символов '\' (вертикальная опция), 'J (подчеркивание) и '' (пусто). Цифры и символы минуса должны отображаться следующим образом:
Введение: Файл ввода включает целые числа N (|Nj<1010), одно число в линейке.
Выведение: Исходный файл включает три строки с символическим рисунком дисплея, отдельным на каждую цифру.

Вот такая вот задача. Чесно говоря первая половина вроде понятна, а вот вторая с дисплеем angry.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 29.06.2005 14:57
Сообщение #2


Гость






Цитата(Yurka @ 29.06.05 14:50)
Чесно говоря первая половина вроде понятна, а вот вторая  с дисплеем angry.gif

Что именно "с дисплеем" не понятно? Как организовать его на экране? Как зажигать/гасить элементы дисплея?

Это вообще должно быть в каком режиме (текст или графика)?
Хочешь получать конкретные ответы - задавай конкретные вопросы. Телепаты у нас в отпуске...
 К началу страницы 
+ Ответить 
Yurka
сообщение 29.06.2005 19:30
Сообщение #3


Пионер
**

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

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


Цитата(volvo @ 29.06.05 14:57)
Это вообще должно быть в каком режиме (текст или графика)?
Хочешь получать конкретные ответы - задавай конкретные вопросы. Телепаты у нас в отпуске...

Я прикреплю файли с условием и рисунком к условию
задания первоначально дали на английском языке. Есть файл с оригиналом задания на английском. Перевод я вроде сделал нормально, но всякое может быть, вообщем если есть знания английского - можна посмотреть оргинал, извинясь за неудобства.... unsure.gif


Прикрепленные файлы
Прикрепленный файл  __________________.doc ( 340.5 килобайт ) Кол-во скачиваний: 221
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 30.06.2005 13:48
Сообщение #4


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


у тебя сказано
Цитата
'\' (вертикальная опция), 'J (подчеркивание) и '' (пусто).


но на картинке явно видно, что исползуются : '|' и '-'

можно замутить такой маразм в текстовом, но это будет не красиво sad.gif


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 30.06.2005 14:52
Сообщение #5


Гость






klem4, а ты предлагаешь сделать и графическую (для красоты) и текстовую (для вывода в файл) версии?
 К началу страницы 
+ Ответить 
klem4
сообщение 30.06.2005 15:19
Сообщение #6


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


Вот такая кака получилась, ттолько тут число адо вводить сразу :

uses crt;

type

TDigit = array[1..7] of string[5];

const

one:TDigit =

('|','|','|','|','|','|','|');

two:TDigit =
(' ---',' |',' |',' ---','|','|',' ---');

thre:TDigit =
(' ---',' |',' |',' ---',' |',' |',' ---');

four:TDigit =
('| |','| |','| |',' ---',' |',' |',' |');

five:TDigit =
(' ---','|','|',' ---',' |',' |',' ---');

six:TDigit =
(' ---','|','|',' ---','| |','| |',' ---');

seven:TDigit =
('---',' |',' |',' |',' |',' |',' |');

eight:TDigit =
(' ---','| |','| |',' ---','| |','| |',' ---');

nine:TDigit =
(' ---','| |','| |',' ---',' |',' |',' ---');

zero:TDigit =
(' ---','| |','| |','| |','| |','| |',' ---');

procedure WriteDigit(var Digit:TDigit; ii:integer);

var
j:integer;
begin
for j:=1 to 7 do begin
gotoxy(pred(ii)*10,j);
writeln(Digit[j]);
end;
end;
var

temp:array[1..11] of char;
i,j:integer;

Begin

clrscr;

write('Введите число : ');

i:=0;

repeat

inc(i);

temp[i]:=readkey;

write(temp[i]);

until temp[i]=#13;

clrscr;

i:=1;
while(not(temp[i]=#13)) do begin
case temp[i] of

'1': WriteDigit(one,i);


'2': WriteDigit(two,i);

'3': WriteDigit(thre,i);

'4': WriteDigit(four,i);

'5': WriteDigit(five,i);

'6': WriteDigit(six,i);

'7': WriteDigit(seven,i);

'8': WriteDigit(eight,i);

'9': WriteDigit(nine,i);

'0': WriteDigit(zero,i);

end;
inc(i);
end;

readln;

End.



--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 30.06.2005 15:36
Сообщение #7


Гость






Слишком много написано букв... Делаем вот так:

const
digits[0 .. 9] of TDigit = (
(' ---','| |','| |','| |','| |','| |',' ---'), { zero }
('|','|','|','|','|','|','|'), { one }
(' ---',' |',' |',' ---','|','|',' ---'), { two }
(' ---',' |',' |',' ---',' |',' |',' ---'), { three }
('| |','| |','| |',' ---',' |',' |',' |'), { four }
(' ---','|','|',' ---',' |',' |',' ---'), { five }
(' ---','|','|',' ---','| |','| |',' ---'), { six }
('---',' |',' |',' |',' |',' |',' |'), { seven }
(' ---','| |','| |',' ---','| |','| |',' ---'), { eight }
(' ---','| |','| |',' ---',' |',' |',' ---') { nine }
);

...
while(not(temp[i]=#13)) do begin
case temp[i] of
'0' .. '9': WriteDigit(digits[ord(temp[i]) - ord('0')], i);
end;
inc(i);
end;

:yes:
 К началу страницы 
+ Ответить 
Archon
сообщение 2.07.2005 15:52
Сообщение #8


Профи
****

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

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


Хм...
Цитата
Изображение каждой фигуры или отметки появляется с помощью включения/выключения семи элементов жидкокристаллического дисплея.

Цифры должны выглядеть так:
Код
 _      _
| |  |  _|
|_|  | |_
и тд

Заменяем массив на
const
digits : array [0 .. 9] of TDigit = (
(' _ ', '| |', '|_|'), { zero }
(' ', ' |', ' |'), { one }
(' _ ', ' _|', '|_ '), { two }
(' _ ', ' _|', ' _|'), { three }
(' ', '|_|', ' |'), { four }
(' _ ', '|_ ', ' _|'), { five }
(' _ ', '|_ ', '|_|'), { six }
(' _ ', ' |', ' |'), { seven }
(' _ ', '|_|', '|_|'), { eight }
(' _ ', '|_|', ' _|') { nine }
);


А TDigit нужно описать, как
type

TDigit = array[1..3] of string[3];



Ну и в WriteDigit соответственно 7 на 3 поменять...

добавлено: исправил пару неточностей.

Сообщение отредактировано: Archon - 2.07.2005 15:58


--------------------
Close the World...txeN eht nepO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Archon
сообщение 2.07.2005 16:07
Сообщение #9


Профи
****

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

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


Ой! Тут ведь ещё:
Цитата
Input: Input file contains integer values N (|Nj<1010), one number per line.
Output: Output file contains three lines with symbolic display image for each input number.

Поясняю:
Из исходного файла считываем цифры (число цифр < 1010) при помощи ReadLn (т.к. один символ на строку). Затем создаём файл и записываем туда всё тоже самое, только в переработаном виде, и каждый символ занимает теперь не одну строчку а 3 (по 3 символа).

Что непонятно жду вопросов.


--------------------
Close the World...txeN eht nepO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
-Archon-
сообщение 2.07.2005 23:05
Сообщение #10


Гость






Уже не жду, вот:
uses
crt;

type
TDigit = array [1 .. 3] of string [3];

const
digits : array [0 .. 9] of TDigit = (
(' _ ', '| |', '|_|'), { zero }
(' ', ' |', ' |'), { one }
(' _ ', ' _|', '|_ '), { two }
(' _ ', ' _|', ' _|'), { three }
(' ', '|_|', ' |'), { four }
(' _ ', '|_ ', ' _|'), { five }
(' _ ', '|_ ', '|_|'), { six }
(' _ ', ' |', ' |'), { seven }
(' _ ', '|_|', '|_|'), { eight }
(' _ ', '|_|', ' _|') { nine }
);

var
temp : array [1 .. 11] of char;
i, digit : integer;
input_file, output_file : text;
input_file_name, output_file_name : string;

Begin
clrscr;
Write('Введите имя файла с даммыми: ');
ReadLn(input_file_name);
Assign(input_file, input_file_name);
Reset(input_file);

Write('Введите имя файла для вывода результата: ');
ReadLn(output_file_name);
Assign(output_file, output_file_name);
Rewrite(output_file);

while not eof(input_file) do begin
ReadLn(input_file, digit);
case digit of
0 .. 9: for i := 1 to 3 do
writeln(output_file, digits[Digit][i]);
end;
end;

Close(input_file);
Close(output_file);

Writeln('Операция завершена');
Writeln('Нажмите любую клавишу для продолжения...');
readkey;
End.
 К началу страницы 
+ Ответить 
Yurka
сообщение 3.07.2005 19:17
Сообщение #11


Пионер
**

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

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


Цитата(-Archon- @ 2.07.05 23:05)
Уже не жду, вот:

Спасибо большое!!! Только я вот работу с файлами ещё не очень освоил.Сделал с этой проги exe-файл. Вообщем выдает при запуске что файл не найден после того как ввожу имя файла с даными. Что я не так сделал или точнее недоделал?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 3.07.2005 19:24
Сообщение #12


Гость






Yurka,
файл с данными где находится? В той же папке, где .EXE? И вводить надо не только его имя, а вместе с расширением... Например,
Цитата
C:\>Введите имя файла с даммыми: input.txt
 К началу страницы 
+ Ответить 

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

 



- Текстовая версия 24.06.2025 13:48
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"