Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Задачи на Turbo Pascal 7.0

Автор: nekra
Дата сообщения: 14.04.2006 06:08
Да на здоровье!!!
А про i: byte - и вправду забыл.
Автор: cip5
Дата сообщения: 14.04.2006 14:22
Помогите с решением и блок-схемами....горю!!!
1. Дана последовательность из n вещественных чисел. Переменной t присвоить значение True, если в последовательности нет нулевых элементов и при этом положительные элементы чередуются с отрицательными.
2. Дана строка символов. Необходимо удвоить все пробелы в строке.
Автор: sonicp
Дата сообщения: 15.04.2006 14:58
cip5
Решение обеих задач:
[more]
1.

Код: var mas: array [0..50] of real;
t:boolean;
i,n:integer;
begin
t:=true;
write('Vvedite chislo elementov: ');
readln(n);
for i:=0 to n-1 do
begin
write('mas[',i,']=');
readln(mas[i]);
end;
for i:=1 to n-1 do
if (mas[i]*mas[i-1] >= 0 ) then
begin
t:=false;
break;
end;
write('Posledovatelnost nenulevih elementov chereduyuschihsya znakov: ');
writeln(t)
readln;
end.
Автор: SidNatali
Дата сообщения: 16.04.2006 09:45
Здравствуйте! Закончила школу 20 лет назад, программирование не проходили, да если бы и проходили, не вспомнила бы ничего. Помогите мне пожалуйста решить две задачи
1.Имеется файл, содержащий фамилии студентов группы. Составьте программу, которая упорядочивает его так, чтобы фамилии располагались в алфавитном порядке.
2. Даны два упорядоченных массива целых чисел М1 М2. Слить их в один упорядоченный массив. Рассмотреть случаи, когда массивы М1 и М2 упорядочены одинаково и когда по-разному.
Заранее всех благодарю!
Автор: Creator111
Дата сообщения: 18.04.2006 16:46

Помогите,пожалуйста,кого не затруднит,на Паскале разработать систему
информационного обеспечения клуба собаководов "ПЕС".
Информация, обрабатываемая в системе, должна храниться в текстовом или типизированном файлах.
Данные, которые должны быть отражены в системе: порода, кличка, возраст, пол собаки, адрес хозяина.
В системе должны решаться следующие задачи:
1. Создание файла.
2. Дополнение файла.
3. Корректировка данных в файле.
4. Формирование ответов на запросы пользователя:
4.1. Для заданной пользователем породы вывести список кличек собак и возраст;
4.2.Для заданной пользователем породы в порядке убывания возраста собаки вывести
адреса хозяев, возраст и пол собаки;
4.3. Для заданной породы определить средний возраст собак, зарегистрированных в
клубе;
4.4. Для заданной породы построить график зависимости численности собак в
зависимости от возраста;
4.5. Построить круговую диаграмму, иллюстрирующую возрастной состав по
интересующему пользователя полу;
4.6. Построить столбиковую диаграмму, характеризующую количество собак каждой
породы.
[more]
Вот то,что уже сделано.Помогите доделать.
Program dog;
uses crt;
type
dog=record
Naz:string;
FIO:string;
Vozr:string;
Tem:string;
Ter:integer;
mes:byte;
end;
const
punkts:array[1..3,1..7] of string[70]=
(('Работа с файлом',
'Формирование ответов на запросы пользователя',
'Выход','','','',''),
('Вывод и редактирование файла',
'Создание нового файла',
'Дополнение файла',
'Назад',
'','',''),
('1.список кличек собак и возраст',
'2.адреса хозяев,возраст и пол собаки в порядке убывания возраста собаки',
'3.средний возраст собак',
'4.график зависимости численности собак в зависимости от возраста',
'5.круговая диаграмма иллюстрирующая возрастной состав по полу собаки',
'6.столбиковая диаграмма количества собак каждой породы',
'Назад'));
proverkas:array[0..5] of string[50]=
('Введите количество записей:',
'Введите Породу:',
'Введите Кличку:',
'Введите Возраст:',
'Введите Адрес хозяина:',
'Вветите Пол собаки:');
proverka_errors:array[0..5] of string[50]=
('Ошибка ввода',
'Ошибка ввода',
'Ошибка ввода',
'Ошибка ввода',
'Ошибка ввода',
'Ошибка ввода');
kol_punktov:array[1..3] of integer=(3,4,7);
{--------------------------------------}

procedure menu(nomer_menu,punkt0:integer);
const
x1=7;
y1=15;
x2=73;
y2=35;
x10=5;
x20=75;
y10=5;
y20=40;
var
w:dog;
punkt:integer;
k:char;
f:file of dog;
{--------------1--------------------}


procedure spis_grup;
begin
clrscr;
writeln ('список кличек');
readln;
menu(2,punkt);
end;
{------------2----------------------}
procedure stoim;
begin
clrscr;
writeln ('в порядке убывания');
readln;
menu(2,punkt);
end;
{-------------3---------------------}
procedure obem;
begin
clrscr;
writeln ('средний возраст');
readln;
menu(2,punkt);
end;
{------------4----------------------}
procedure grafik;
begin
clrscr;
writeln ('график');
readln;
menu(2,punkt);
end;
{------------5----------------------}
procedure krug;
begin
clrscr;
writeln ('круговая диаграмма');
readln;
menu(2,punkt);
end;
{------------6----------------------}
procedure stolbik;
begin
clrscr;
writeln ('столбиковая диаграмма');
readln;
menu(2,punkt);
end;
{-------------------------------------}

procedure write_punkt(color,punkt:integer);
begin
textcolor(color);
gotoxy((x2-x1+2-length(punkts[nomer_menu,punkt]))div 2,(y2-y1-kol_punktov[nomer_menu])div 2+2*(punkt-1));
write(punkts[nomer_menu,punkt]);
end;{of write_punkt}
{-------------------------------------}
procedure write_menu(nomer_menu:integer);
var
i:integer;
begin
textbackground(brown);{color}
window(1,1,80,50);
clrscr;
textbackground(black);
window(x1,y1,x2,y2);
clrscr;
for i:=1 to kol_punktov[nomer_menu] do
if i=punkt0 then write_punkt(red,i) else write_punkt(yellow,i);
end;
{of write_menu}
{-------------------------------------}
procedure write_text(text:string;y,color:integer);
begin
textcolor(color);
gotoxy((x2-x1-length(text)) div 2,y);
writeln(text);
end;
{of write text}
{-------------------------------------}
function proverka(nomer:integer):string;
const
simbols:set of char=['А'..'Я','а'..'я','.',' ','-'];
var
s:string;
n,error,i:integer;
flag:boolean;
begin
flag:=true;
repeat
clrscr;
if not(flag) then write_text(proverka_errors[nomer],14,20);
write_text(proverkas[nomer],7,yellow);
gotoxy(10,10);
readln(s);
val(s,n,error);
flag:=true;
case nomer of
0:if (error=0)and(n>0) then flag:=true else flag:=false;
1:for i:=1 to length(s)do
if not(s[i] in simbols) then flag:=false;
2:for i:=1 to length(s) do
if not(s[i] in simbols) then flag:=false;
3:if (s='д')or(s='ю')or(s='в') then flag:=true else flag:=false;
4:if (s='х')or(s='п')or(s='и') then flag:=true else flag:=false;
5:if (error=0)and(n>0) then flag:=true else flag:=false;
6:if (error=0)and(n>0)and(n<=12) then flag:=true else flag:=false;
end;
until flag;
proverka:=s;
end;
{of proverka}
procedure open_file;
begin
{$I-}
assign(f,'rgz_2.dat');
reset(f);
if ioresult=2 then
begin
assign(f,'rgz_2.dat');
rewrite(f);
end;
{$I+}
end;
{of open_file}
procedure ramka(nomer:integer);
var
s:string;
begin
textbackground(brown);
window(1,1,80,50);
clrscr;
if nomer=1 then
begin
textcolor(4);
s:='Вверх/вниз-выбор записи';
gotoxy(40-length(s) div 2,43);
writeln(s);
s:='Нажмите ENTER, чтобы изменить запись';
gotoxy(40-length(s) div 2,45);
writeln(s);
s:='ESC-выход';
gotoxy(40-length(s) div 2,47);
writeln(s);
textcolor(yellow);
end;
textbackground(black);
window(x10,y10,x20,y20);
clrscr;
window(x10+1,y10+1,x20-1,y20-1);
clrscr;
end;
procedure vivod(file_p:integer);
var
i:integer;
w:dog;
begin
window(x10+1,y10+1,x20-1,y20-1);
clrscr;
seek(f,file_p);
for i:=1 to y20-y10-2 do
begin
if eof(f) then break;
read(f,w);
gotoxy(1,i);
writeln(w.naz);
gotoxy(10,i);
writeln(w.fio);
gotoxy(20,i);
writeln(w.vozr);
gotoxy(30,i);
writeln(w.tem);
gotoxy(40,i);
writeln(w.ter);
gotoxy(50,i);
writeln(w.mes);
end;
end;
{of vivod}
procedure dop_file(file_p:integer);
var
n,error:integer;
w1:dog;
begin
w.fio:=proverka(1);
w.naz:=proverka(2);
w.vozr:=proverka(3);
w.tem:=proverka(4);
val(proverka(5),n,error);
w.ter:=n;
val(proverka(6),n,error);
w.mes:=n;
seek(f,file_p);
write(f,w);
end;
{of dop_file}
procedure out_file;
var
p,file_p,file_p_0:integer;
begin
open_file;
ramka(1);
if filesize(f)<=y20-y10 then
begin
file_p:=filesize(f);
p:=file_p;
end
else
begin
file_p:=filesize(f)-(y20-y10-2);
p:=y20-y10-1;
end;
vivod(file_p);
file_p:=filesize(f);
gotoxy(1,p);
repeat
k:=readkey;
file_p_0:=file_p;
case k of
#32:menu(2,1);
#13:begin
dop_file(file_p);
out_file;
end;
#72:begin
if p>1 then p:=p-1;
if file_p>0 then file_p:=file_p-1;
if (p=1)and(file_p<>file_p_0) then vivod(file_p);
gotoxy(1,p);
end;
#80:begin
if (p<(y20-y10-1))and(p<filesize(f)) then p:=p+1;
if file_p<filesize(f) then file_p:=file_p+1;
if (p>=(y20-y10-1))and(file_p<>file_p_0) then vivod(file_p-(y20-y10-2));
gotoxy(1,p);
end;
#27:halt;
end;
until k=#27;
end;
{of out_file}
procedure new_file;
begin
assign(f,'rgz_2.dat');
rewrite(f);
close(f);
menu(2,2);
end;
{of new_file}
begin
write_menu(nomer_menu);
punkt:=punkt0;
repeat
k:=readkey;
write_punkt(yellow,punkt);
case k of
#72:if punkt=1 then punkt:=kol_punktov[nomer_menu]
else punkt:=punkt-1;
#80:if punkt=kol_punktov[nomer_menu] then punkt:=1
else punkt:=punkt+1;
#13:case nomer_menu of
1:case punkt of
1:menu(2,1);
2:menu(3,1);
3:halt;
end;
2:case punkt of
1:out_file;
2:new_file;
3:begin
open_file;
dop_file(filesize(f));
close(f);
out_file;
end;
4:menu(1,1);
end;
3:case punkt of
1:spis_grup;
2:stoim;
3:obem;
4:grafik;
5:krug;
6:stolbik;
7:menu(1,2);
end;
end;
end;
write_punkt(red,punkt);
until k=#13;
end;
{of menu}
begin
textmode(C80 + Font8x8);
menu(1,1);
end.
[/more]
Автор: YFred
Дата сообщения: 19.04.2006 12:39
Подскажите пожалуйста, как или с помощью какова компанента можно упрорядочить массив записей, типа


Код:
type
TRecGPK=Record
N: integer;
Name: string;
end;
Автор: sonicp
Дата сообщения: 19.04.2006 21:32
YFred
В Паскале для сравнения строк можно использовать <,>,>=,<=,=,<>
Программа, сортирующая такие записи:
[more]

Код:
type TRecGPK=record
N:integer;
Name:string;
end;
var rec_mas:array [1..50] of TRecGPK;
exchange:TRecGPK;
i,j,el_count:integer;
begin
write('Vvedite chislo elementov: ');
readln(el_count);
for i:=1 to el_count do
begin
write('Vvedite ',i,'-u zapis (N <ENTER> Name): ');
readln(rec_mas[i-1].n);
readln(rec_mas[i-1].Name);
end;
{ sortirovka }
for i:=0 to el_count-1 do
for j:=i+1 to el_count-1 do
if (rec_mas[i].Name>rec_mas[j].Name) then
begin
exchange:=rec_mas[i];
rec_mas[i].N:=rec_mas[j].N; rec_mas[i].Name:=rec_mas[j].Name;
{ esli meniat elemeti-massiva zapisi mestami to nujno
ix obmenivat po poliam zapisi, inache budiat gluki s 'writeln',provereno }
rec_mas[j]:=exchange;
end;
{ vivod otsortirovannix zapisei }
writeln('N':5 ,' ', 'Name');
for i:=1 to el_count do
writeln(rec_mas[i-1].N :5,' ', rec_mas[i-1].Name);
readln;
end.
Автор: coyc
Дата сообщения: 21.04.2006 14:07
Помогите решить задачу плиз
Заданы массивы x={x1 x2 x3}y={y1 y2 y3}z={z1 z2 z3} p={p1 p2 p3 p4} Вычислить скалярное произведение s2 массивов z и p. Переменной а присвоить значение по формуле а=1 если s1>s2 а=0 если s1=s2 а=-1 если s1<s2 Вычисление скалярного произведения оформить в виде подпрограммы типа Function
Автор: Iceman82
Дата сообщения: 21.04.2006 19:41
coyc

Цитата:
Помогите решить задачу плиз

Вопрос 1: Скаларное произведение массивов z и p. У первого размер - 3 элемента, у второго - 4. Как ты себе это представляешь? (Вернее, как бы ты хотел чтобы это считалось...)
Вопрос 2: Что такое s1???
Вопрос 3: А зачем заданы массивы x и y???
Автор: coyc
Дата сообщения: 21.04.2006 22:23
Iceman82
скалярное произведение s1 и s2 s1 это х и у а s2 z и p
Автор: Virtual Maniac
Дата сообщения: 22.04.2006 14:28
Драффствуйте гении Паскаля)))...Хелп ми!!!....плиз битте пожалуста очень надо!!!.....помогите.....нужно сделать анимацию в паскале чтоб из пушки вылетал снаряд с помощью видео страниц и с помощью динамической переменной.....пожалуста помгите..завтра сдавать эти задачи!!!....Заранее очень большое спасибо!!!
Автор: SENYAGGG
Дата сообщения: 22.04.2006 14:34
Подскажите кто, что может:
1 задание)Дан массив латинских букв. Отсортировать их методом выбора в порядке возрастания. Вычислить среднее арифметическое трех минимальных кодов.

2 задание)Составить схему алгоритма и программу. Дана целочисленная прямоугольная матрица. Определить:
-сумму элементов в тех строках, которые содержат хотя бы 1 отрицательный элемент.
-записать в файл значение максимальной суммы.
Автор: Virtual Maniac
Дата сообщения: 22.04.2006 16:53
Наро ну плиз помогите..очень нужно...хотябы одним способом!!!
Автор: nick444
Дата сообщения: 26.04.2006 18:21
Технический вопрос:

Цитата:
program faktorial;
uses crt;
var a,n:integer;
symbol:string;
procedure vvod (ch:string; var n:integer);
var ior:word;
begin
repeat
write ('vvedite ',ch,' => ');
{$i-}readln (n){$i+};
ior:=ioresult;
if ior <> 0
then writeln ('REWRITE')
else
until (ior=0)and(n=abs(n));
end;
function fak (n:integer):integer;
var
f,i:integer;
begin
f:=1;
for i:=2 to n do f:=f*i;
fak:=f;
end;
begin
symbol:='n';
vvod (symbol,n);
a:=fak(n);
writeln (a);
repeat until keypressed;
end.

эта прога считает факториал+проверка правильного ввода через процедуру.
подскажите- что такое ioresult(тип,назначение), как действуют директивы {$i-}{$i+}, как действует repeat until keypressed и какого он типа.(как действуют понимаю, но нужно будет по-умному объяснить.)
Буду благодарен за помошь.

Цитата:
Наро ну плиз помогите..очень нужно...хотябы одним способом!!!

уж не хочешь ли ты чтобы мы решали твои задачи за тебя?
Модератор извини меня! Я забыл тэг для сокращения объема текста!
Автор: minos14
Дата сообщения: 26.04.2006 21:02
Функция Ioresult: Word возвращает условный признак последней опреации ввода-вывода. Если операция завершилась успешно, функция возвращает ноль. Функция Ioresult становится доступной только при отключенном автоконтроле ошибок ввода-вывода. Директива {$I-} отключает, а директива {$I+} включает автоконтроль. Если автоконтроль отключен, а операция ввода-вывода привела к возникновению ошибки, устанавливается флаг ошибки и все последующие обращения к вводу-выводу блокируются, пока не будет вызвана функция Ioresult.
Функция Keypressed приостанавливает работу программы, а при нажатии любой клавиши продолжает и возвращает как результат значение True. Если клавиша не нажата, то вырабатывается значение False. Таким образом, repeat until keypressed - это цикл, завершающийся при нажатии любой клавиши.
Автор: Creator111
Дата сообщения: 27.04.2006 14:35
Не могли бы вы помочь мне составить програмку со стеками,а то я не очень понимаю.
Вот условие:


Создать стек, информационная часть которого содержит слова. Перепишите в тестовый файл слова, имеющих нечетное число символов.

Добавлено:
Из темы за 18.04 меня интересует именно:
4. Формирование ответов на запросы пользователя:
4.1. Для заданной пользователем породы вывести список кличек собак и возраст;
4.2.Для заданной пользователем породы в порядке убывания возраста собаки вывести
адреса хозяев, возраст и пол собаки;
4.3. Для заданной породы определить средний возраст собак, зарегистрированных в
клубе;
4.4. Для заданной породы построить график зависимости численности собак в
зависимости от возраста;
4.5. Построить круговую диаграмму, иллюстрирующую возрастной состав по
интересующему пользователя полу;
4.6. Построить столбиковую диаграмму, характеризующую количество собак каждой
породы.

Я не успеваю доделать.
Надеюсь на вашу помощь.
Автор: ErosMic
Дата сообщения: 29.04.2006 21:05
Помогите плиз решить задачку (Правда мне нужно на Delphi, но ведь там тоже Pascal правда Object):

Выполнить вычисления пользуясь интерполяционным многочленом Лагранжа в форме:

n (X-X0)(X-X1)...(X-Xi-1)(X-Xi+1)...(X-Xn)
Pn=E -------------------------------------------------- f(Xi)
i=o (Xi-X0)(Xi-X1)...(Xi-Xi-1)(Xi-Xi+1)...(Xi-Xn)

Вычислить при n=10, f(X)=(0.17, 0.52, 0.93)

Есть таблица значений:

X=0.1 X=0.2 X=0.3 X=0.4 X=0.5 X=0.6 X=0.7
f(X)=0.0944 f(X)=1.0247 f(X)=1.1020 f(X)=1.1758 f(X)=1.2458 f(X)=1.3119 f(X)=1.3739

X=0.8 X=0.9 X=1
f(X)=1.4318 f(X)=1.4852 f(X)=1.5349

P.S. В формуле буква E - это знак суммы...
Автор: pilot69
Дата сообщения: 01.05.2006 20:22
Люди, очень прошу, помогите, тут эу меня жопа вообще, времени них нет, срочно надо, плизз, умоляю, помогите кто может, вот задача:

Дана матрица A={a;j}, (i, j=1,2,3) (квадратная матрица 3х3)
Выяснить является ли она симетричной?
------------------------------------------------
Матрица называется симметричной если она равна транспонированой
Транспонирование квадратной матрицы размерности NxN оформить в виде процедуры

Транспониорвание - когда строки и столбцы матрицы меняются местами

Добавлено:
Напиши прогу, плизз, очень надо, пожалуйста
Автор: SaDFromSpb
Дата сообщения: 01.05.2006 22:55
pilot69

[more=ЗДЕСЬ]Program BlaBlaBLa;
Uses Crt;

Const
N = 3;

Type
Matrix = array[1..N, 1..N] Of Integer;
PMatr = ^Matrix;


Var
Matr1, Matr2 : Matrix;
i, j, count : Integer;
isEqual : Boolean;


{
Матрица передается в процедуру по адресу.
Второй параметр - ширина матрицы
}
Procedure Transpan(Matr : PMatr; n : Integer);
var i, j, t : Integer;
Begin
For i:=1 To n Do
{Меняем местами i-й столбец с i-й строкой}
For j:=i+1 To n Do Begin
t := Matr^[i][j];
Matr^[i][j] := Matr^[j][i];
Matr^[j][i] := t;
End;
End;




Begin
clrscr;


{
Заполняем две матрицы какой-нибудь ерундой
}
count := 1;
For j:=1 to N Do
For i:=1 to N Do Begin
Matr1[i][j] := count;
Matr2[i][j] := 0;
Inc(count);
End;


{
И кидаем вторую в процедуру
(@ - операция взятия адреса)
}

Transpan(@Matr2, N);



{ сравниваем }
isEqual := true;
For i:=1 To N Do
For j:=1 To N Do
isEqual := isEqual And (Matr1[i][j] = Matr2[i][j]);

{
isEqual после заверешения цикла останется равной true, только
если матрицы одинаковые.
}



If isEqual Then
Writeln('Ok.')
Else
Writeln('Not Ok.');


readkey;
End.[/more]
ЗЫ. На паскале очень долго не писал, так что может массивы там как-то по-другому принято передавать через параметры.
Автор: pilot69
Дата сообщения: 02.05.2006 20:14
Большое человеческое спасибо)))) реально помог SaDFromSpb ты мне помог, спасибо))Просто огоромнейшее спасибо))
Автор: Iceman82
Дата сообщения: 02.05.2006 21:26
SaDFromSpb
pilot69
Если вы не против, хочу внести некоторые замечания:
--- Использования указателей можно избежать, если процедуру Transpan объявить следующим образом:
Procedure Transpan(var Matr : Matrix; n : Integer);

В этом случае параметр процедуры Matr является параметром-переменной, что означает, что все изменения, сделанные с Matr в процедуре, отразятся на соответствующем аргументе (Matr2) в главной программе.
Автор: SaDFromSpb
Дата сообщения: 02.05.2006 21:44
Iceman82
Я просто думал, что этот трюк с двумерными и более массивами в Паскале не прокатывает, поэтому перестраховался.

Цитата:
В этом случае параметр процедуры Matr является параметром-переменной
Это называется передача параметра по ссылке.

Автор: Vantesmrbin
Дата сообщения: 04.05.2006 11:35
Люди! Help!
Помогите разработать алгоритм на TP 7.0!
Задача несложная,но я не знаю как реализовать.

Задача 1
Идея:создать массив переменной длины,
т.е у пользователя спрашивают длину массива (символьного),
каждый раз длина у массива разная,
формируется этот массив и заполняется определенными значениями

Задача 2
Идея:Автоматизированный ввод данных
Прога 1 сформировала строку ABCD
Другая Прога 2 (не мною писаная) просит ввести с клавиатуры
какую-то строку в текстовое поле и нажать Ok!.
Можно сделать так,чтобы Прога 1 передавала в Прогу 2 строку ABCD,
предварительно определив,что Прога 2 активна? В данном случае
необходимость в ручном вводе отпадает!!!
Автор: ShIvADeSt
Дата сообщения: 05.05.2006 01:25
Vantesmrbin

Цитата:
Задача 1
Идея:создать массив переменной длины,
т.е у пользователя спрашивают длину массива (символьного),
каждый раз длина у массива разная,
формируется этот массив и заполняется определенными значениями

Динамические списки (стэки) где то здесь уже давали код, либо в гугле примеров масса.
по второй задаче, ты уверен что на ТП? если да, то под виндой точно не удастся реализовать (так как все дос задачи стартуют в собственных адресных пространствах), хотя если не важно как передавать данные и ты можешь заставить разработчика второй программы немного изменить алогритм, то сделай передачу строки через файл, то есть вторая софтина мониторит опред дирекорию на наличие там опред файла и если он там есть, то получает из него строку. Иначе никак в ТП не сделаешь вроде.
Автор: found
Дата сообщения: 08.05.2006 11:54
Народ помогите. Надо решить одну задачу, я не понимаю как ее сделать, а зачет на этой недели.

Заменить буквы цифрамитак, чтобысоотношение оказалось верным(одинаковым буквам соответствуют одинаковые цифры, азным - разные): ХРУСТ*ГРОХОТ=РРРРРРРРРРР


Решаю с помощью While и Repeat он постояно выдает ошибку: неизвестный тип идентификатора или тип операнда не совпадает с типом оператора.
Автор: XPEHOMETP
Дата сообщения: 08.05.2006 12:36
Так как решаешь? Там вроде траблы могут быть только из-за того, что при переводе "зашифрованных" цифр в нормальные что-то не так сделано или состыковано. Без полного текста не понять!
Автор: western
Дата сообщения: 08.05.2006 12:39
Всем привет!!!
Люди помогите плиз!!!
Pascal 7.0

Где можна скачать или кто то поделитесь библиотекой HGRAPH.TPU для Паскаля 7.0

так как найти нигде не могу..........

и к тому же очень сильно нада!!!!

Заранее благодарен!!!!

western001@mail.ru
Автор: found
Дата сообщения: 08.05.2006 12:56
А это и есть полный тест. В методичке так и было написано. Сказали от туда взять эту задачу и решить. Помогите хоть как сможете просто очень надо. Зачет уже близко.
Автор: XPEHOMETP
Дата сообщения: 08.05.2006 13:25
Я имел в виду - полный текст твоей проги!! Я же не телепат, чтобы знать, на какие идентификаторы или операторы ругается компилятор?

По части алгоритма я бы сделал так:

1. Задать перебор соответствий между буквами и цифрами. Букв 7, достаточно 6 циклов перебора, поскольку Р определяется из Т - это остаток целочисленного деления Т*Т на 10. Полезные ограничения: Т не может быть 0, 1, 5, потому что тогда Т = Р. Нолик тоже должен рассматриваться, но не для Х и Г. Нолик в начале числа в принципе допустим, но в этом случае результат не сможет быть 11-значным.

2. В ходе перебора нужно контролировать, чтобы буквам не назначались уже занятые цифры. Можно для этого сделать логический массив на 10 значений. До начала перебора в нем все сделать true, если, допустим, где-то выбрана семерка, то седьмой элемент массива делается false. При выборе в дальнейших циклах смотрится, что там стоит в этом массиве, занята цифра или нет.

3. Задали мы однозначное соответствие между буквами и цифрами. Теперь надо вызвать некую подпрограмму-парсер (а для начала ее написать), которая получает на входе словечки вроде "ХРУСТ", а на выходе - целочисленную переменную, отвечающую "расшифровке". Ну и как-то мы ей должны сообщить, какими же цифрами мы решили кодировать буквы: еще должен быть входной массив букв и входной массив чисел. И вызывать ее придется 3 раза, для всех слов. Так что это должен быть универсальный парсер, который переводит слово в число независимо от его длины.

4. А все это дело мы должны посадить внутрь общего цикла, да, именно While - Repeat, пока наше равенство не станет равенством. А также предусмотреть (для общности) вариант, когда решение не найдено: все перебрали, но ничего не подошло.

А уж на что там компилятор ругается, это сам код смотреть надо.
Автор: found
Дата сообщения: 08.05.2006 13:48
Спасибо и за это. Теперь разбираться надо будет. А если те не трудно можешь саму программку накидать сюда. Большое спасибо.

Страницы: 1234567891011121314

Предыдущая тема: VC++ vs. Delphi


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.