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

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

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

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


Пионер
**

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

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


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

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

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


Гость






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

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

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


Пионер
**

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

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


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

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


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


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

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

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


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


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

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


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


Гость






klem4, а ты предлагаешь сделать и графическую (для красоты) и текстовую (для вывода в файл) версии?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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:
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -


--------------------
Close the World...txeN eht nepO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Пионер
**

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

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


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

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


Гость






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

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

 





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