Unit MyModule;
Interface
function MyVal(s:string):longint;
function NewCopy(s:string;n,k:byte):string;
function MyPos(ps,st:string):byte;
function MyLen(s:string):byte;
Implementation
function MyVal(s:string):longint;
var i:byte;
n,k:longint;
begin
n:=0;
for i:=1 to length(s) do
n:=n*10+ord(s)-48;
MyVal:=n;
end;
function NewCopy(s:string;n,k:byte):string;
var i:byte;
s1:string;
begin
s1:='';
for i:=n to k do
s1:=s1+s;
NewCopy:=s1;
end;
function MyPos(ps,st:string):byte;
var i,j,p,k:byte;
s1:string;
begin
p:=0;
for i:=1 to length(st)do
if st=ps[1] then
begin
s1:='';
for j:=i to i+length(ps)-1 do
s1:=s1+st[j];
if s1=ps then
begin
p:=i;
break;
end
end;
MyPos:=p;
end;
function MyLen(s:string):byte;
begin
MyLen:=ord(s[0]);
end;
end.
Создать модуль и разработать ниже перечисленные функции
MyVal – преобразовать строку в целое число
NewCopy – выделение строки с заданного начального символа до заданного конечного символа
MyPos – определение первого вхождения подстроки
MyLen определяет количество символов в строке
Дана строка, содержащая название товара и его цены. Например: «Конфеты шоколадные «Перезвоны» 70 руб», «Хлеб Чусовской 7 руб. 30 коп.» или «Колбаса 103,40». Разделить название товара и его цены, записав цену в переменную вещественного типа. В названии товара все буквы сделать заглавными.
Модуль:
Код:
Программа:
Код:
Program Powerz;
Uses MyModule;
var a: real;
//cena:longint;
i,posn,posk,l,kopn,kopk:byte;
cena,tovar,s:string[50];
begin
write('Введите строку');
readln(s);
l:=mylen(s);
//Определяем первое вхождение числа в строку
for i:=1 to l do
case s of
'1','2','3','4','5','6','7','8','9','0':
posn:=mypos(s,s);
end;
//Определяем окончания числа в строку
for i:=posn-1 to l do
if s=' ' then posk:=mypos(s,s);
//определене копеек
for i:=posk to l do
if s='.' then kopn:=mypos(s[i+1],s);
for i:=kopn to l do
if s=' ' then kopn:=mypos(s,s)-1;
writeln(posn,' ',posk);
cena:=newcopy(s,posn,posk-1);
tovar:= newcopy(s,1,posn-1);
writeln('Товар ',tovar,' его цена ',cena);
readln;
end.
Uses MyModule;
var a: real;
//cena:longint;
i,posn,posk,l,kopn,kopk:byte;
cena,tovar,s:string[50];
begin
write('Введите строку');
readln(s);
l:=mylen(s);
//Определяем первое вхождение числа в строку
for i:=1 to l do
case s of
'1','2','3','4','5','6','7','8','9','0':
posn:=mypos(s,s);
end;
//Определяем окончания числа в строку
for i:=posn-1 to l do
if s=' ' then posk:=mypos(s,s);
//определене копеек
for i:=posk to l do
if s='.' then kopn:=mypos(s[i+1],s);
for i:=kopn to l do
if s=' ' then kopn:=mypos(s,s)-1;
writeln(posn,' ',posk);
cena:=newcopy(s,posn,posk-1);
tovar:= newcopy(s,1,posn-1);
writeln('Товар ',tovar,' его цена ',cena);
readln;
end.
Кто-нибудь, пожалуйста, помогите доделать...не определяется корректно цена...
То Length() то MyLen(), так не пойдет. Однообразнее надо. И вообще, кто сказал что в названии товара не может быть цифры? Однозначного решения у задачи может и не быть.
Оставлю задачу на совесть преподавателя.