Задали мне тут задачки, в которые я просто не врубаюсь.
Ну например - Дано множество символов. Определить ,есть ли в данном множестве определенный символ. В учебнике множества не могу найти вообще.
Вот еще - Из списка группы вывести фамилии и имена девочек. Как использовать записи?
Ну и последняя - Построить график функции ......... и записать его в файл.
Знаешь почему нет ни от кого ни какой реакции?
Олег, хватит комментировать >:( Либо помогай, либо молчи!!!
Множества, пример:
Код
var s:string;
for i:=1 to n do
if s[i] in ["определенный символ"] then write('Есть');
Записи:
Код
type people=record
familia:string[20];
name:string[10];
sex:char;
end;
var p:people;
...
...
for i:=1 to n do
begin
if sex='ж' then write(p.familia[i]',' p.name[i]);
Как вводить с клавиатуры множество символов? Как ввести имена и пол?
Множество символов может быть константой.
Вводи имена и пол примерно так:
Код
for i:=1 to n do
with p[i] do
begin
write('Имя'); readln(name);
write('Пол'); readln(sex);
end;
Склепал следующее, но показывает ошибку 121. Что делать?
Код
program Lab;
type people=record
name:string[10];
sex:char;
end;
var p:people;
i:integer;
BEGIN
for i:=1 to 5 do
with p[i] do
begin
write('имя'); readln(name);
write('пол'); read(sex);
end;
for i:=1 to 5 do
begin
if sex='ж' then writeln(p.name[i]);
end;
END.
Вот тебе исправленный код:
Код
program Lab;
const n=5;
type people=record
name:string[10];
fio:string[10];
sex:char;
end;
var p:array[1..n] of people;
i:integer;
BEGIN
for i:=1 to n do
begin
write('фам ');readln(p[i].fio);
write('имя '); readln(p[i].name);
write('пол '); readln(p[i].sex);
end;
for i:=1 to n do
if p[i].sex='1' then begin writeln(p[i].fio); writeln(p[i].name); end;
end.
А как сделать чтобы вводить количество человек с клавиатуры?
С множествами наклепал следующее:
Код
program Lab;
const n=5;
type M=set of 0..9;
var s:string;
i:INTEGER;
BEGIN
for i:=1 to 5 do
begin
write('число');readln(s);
end;
for i:=1 to 5 do
if s[i] in [3] then writeln('есть!');
end;
END.
Но выдаёт ошибку 26.
А как в записях нужно вставить надпись типа
Код
var n:real;
write('введите количество человек');
read(n);
чтобы вводить количество человек с клавиатуры?
trminator
15.12.2003 23:56
s[i] - символ, а 3 - число.
Мог бы написАть не Ошибка 26, а Type Mismatch. Хотя бы потому, что в Дельфи, например, это ошибка имеет номер 14
Согласен, ошибка вышла. Но если ставлю символ, то пишет unknown identifier. То есть все символы надо ещё как-то прописать?
Вот вариант без множества:
Код
program Lab;
const n=5;
var s:array[1..n] of char;
i:INTEGER;
BEGIN
for i:=1 to 5 do
begin
write('число ');readln(s[i]);
end;
for i:=1 to 5 do
if s[i] in ['3'] then writeln('есть!');
END.
И всё-таки как вводить с клавиатуры количесиво человек?
Вариант с множеством:
Код
program Lab;
const n=5;
var s:array[1..n] of char;
a:set of char;
i:integer;
BEGIN
a:=['1','2','3','4','5','6','7','8','9','0'];
for i:=1 to n do
begin
write('число ');readln(s[i]);
end;
for i:=1 to n do
if s[i] in a then writeln('есть!');
END.
2) В чем проблема?
var d:byte;
writeln('кол-во ');
readln(d);
for i:=1 to d do
.......и т.д.
Ну тупой я! Ну не знаю куда его всунуть!
Вот последний вариант:
Код
program Lab;
const n=5;
type people=record
name:string[10];
familia:string[20];
sex:char;
end;
var
p:array[1..n] of people;
i:integer;
BEGIN
for i:=1 to n do
begin
write('фамилия-'); readln(p[i].familia);
write('имя-'); readln(p[i].name);
write('пол-'); readln(p[i].sex);
end;
for i:=1 to n do begin
if p[i].sex='¦' then writeln('имена:',p[i].name,' ',p[i].familia); end;
end.
Ну куда его совать?
Присваиваешь значение n заведомо большее чем нужно. Например:
Код
program Lab;
const n=500;
type people=record
name:string[10];
familia:string[20];
sex:char;
end;
var
p:array[1..n] of people;
i,s:integer;
BEGIN
writeln('ввести кол-во');
readln(s);
for i:=1 to s do
begin
write('фамилия-'); readln(p[i].familia);
write('имя-'); readln(p[i].name);
write('пол-'); readln(p[i].sex);
end;
for i:=1 to s do begin
if p[i].sex='¦' then writeln('имена:',p[i].name,' ',p[i].familia); end;
end.
Ага, так вот оно как........
Итак, окончательный вариант множества:
Код
program Lab7;
const n=255;
type M=set of 0..n;
var s:string;
i,b:integer;
a:char;
BEGIN
write('введите воличество символов-'); readln(B);
write('введите искомый символ-'); readln(a);
for i:=1 to b do
begin
write('символ-');readln(s[i]);
end;
for i:=1 to b do
if s[i]=a then writeln('есть!');
END.
а как насчет записи в файл................
Кой чего склепал:
Код
program Lab9;
var
T: Text;
S: string;
begin
write('введите путь к файлу:');
readln(S);
Assign(T,S);
{$I-}
Reset(T);
{$I+}
if IOResult<>0 then
begin
write('файл не найден!');
halt;
end;
ReWrite(T);
write('введите функцию');
read(S);
Write(T,S);
Close(T);
end.
Правда, не совсем понимаю условие - построить график функции. Это чтобы был чертёж?
Цитата
Правда, не совсем понимаю условие - построить график функции. Это чтобы был чертёж?
Да
И как же мне его сделать?
В графическом режиме естестно
trminator
20.12.2003 22:48
Oleg309, понятно вроде, что в текстовом плохо выйдет.
Spinne, пусть есть функция f(x). Выберем пока для простоты масштаб одна единица = одному пикселу. Дальше просто проходишь по всем пикселам "в ширину" и вычисляешь значение функции
Код
for i:=1 to 640 do begin
j:=f(x); lineto(i, j)
end;
Правда, так получится мелко и перевернуто, но уже хоть что-то

А можно еще его переврнуть чтобы правильно смотрелся, масштаб подобрать там, и вообще как-нибудь ближе к центру экрана разместить.
А что значит BGI Error: Graphics not instalized (use InitGraph)?
trminator
20.12.2003 23:23
Или не прописаны пути к драйверам, или они read-only. Надо не-read-only (почему, не знаю)
А где именно эти драйвера?
И почему когда запускаю первый вариант со страницы
http://pascal.dax.ru/?lessons&id=2&page=8 то на 15 строке после числа 320 выдаёт Type mismatch ?
trminator
21.12.2003 15:36
Драйвера - в каталоге BGI
А как насчёт задачи?
Код
program f;
uses graph;
var gd, gm: integer;
x,y: real;
begin
gd:=detect;
initgraph(gd, gm, ‘c:/ bp’);
SetColor(5);
Line(0, 240, 640, 240);
Line(320, 0, 320, 480);
x:=-20;
While x<=20 do
begin
y:=-Sqr(x);
PutPixel(x *5 + 320, y*5 +240, 15);
x:=x+ 0.01;
end;
end.
Работает только если ставлю x,y:integer, а в 3 строке снизу x:=x+1
Иначе Type missmatch
И вообще, зачем множить на 5? Только для того чтобы график был шире?
И как записать график в файл?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста,
нажмите сюда.