Консультация № 69991
08.01.2007, 13:58
0.00 руб.
0 1 1
Уващаемые программисты, помогите мне плз!Мне надо сегодня до 21 00 решить 5 программ!Заранее спс!Вот текст программ:
1)Функция-Afteratnum(c1,c2:string;n1,n2:byte):string- возвращает хвост строки c1, в которой осуществляется поиск с позиции n2 подстроки с2 с номером вхождения n1. Возвращается все символы строки с1 после указанного вхождения.
2)Функция-Addascii(c1:string;n1,n2:byte):string- возвращает строку, полученную из строки с1 путём прибавления величины n1 к ASCII коду символа этой строки с номером n2.
3)Функция-ATTOKEN(c1,c2:string;n:byte)string- поиск в строке с1 лексемы(слово) с номером n. Строка с2 представляет собой сцепку возможных разделителей лексем .,::!?()[]{}#&-+" и другие по усмотрению программиста.
4)Работа с текстовыми файлами:
Список городов с указанием континента.
Input.txt:
Лондон - Европа; Токио - Азия; Париж - Европа; Сидней - Австралия; Москва - Европа; Пекин - Азия; +
Output.txt:
Австралия: Сидней;
Азия: Пекин, Токио;
Европа: Лондон, Москва, Париж;
5)Работа с записей:
Сформировать таблицу!
Сформировать список судов.
Таблица:
Код Наименование Дата постройки Дедвейт, т Судовладелец Порт приписки
Конец таблицы.
Прога должна реализовать функции.
1)Добавление новой записи,редактирование, удаление записи.
2)Вывод информации на экран:
а)В алфавитном порядке наименований судов, по убыванию дедвейта;
б)Список судов для указанного порта приписки для судов моложе D лет
в)Список судов по ключевому слову в наименовании;
г)Кол-во судов по возрасту (годы в порядке возрастания).
3)Вывод информации из файла записи в текстовый файл output.txt. Разделители: Полей - Запятая, Записей - Точка с запятой.

Обсуждение

Неизвестный
08.01.2007, 16:57
общий
это ответ
Здравствуйте, SHTEP!
Вот четыре функции. Правда не отлаживал, но должны работать!
Прогу если очень нужна, то пиши Ivanich.fmf@gmail.com. Может напишу - пришлю!

Приложение:
function Afteratnum(c1,c2:string;n1,n2:byte):string;begin Result:=copy(c1, n2, Length(c1)-n2); repeat p:=Pos(c2, Result); if p=0 then begin Result:=‘‘; Break; end else Result:=copy(Result, p, Length(Result)-p); until x=n2;end;function Addascii(c1:string;n1,n2:byte):string;begin Result:=c1; Result[n2]:=Char(Ord(Result[n2])+n1);end;function ATTOKEN(c1,c2:string;n:byte)string;var p:Integer;begin p:=Pos(c2[n], c1); if pos=0 then Result:=‘‘ else Result:=Copy(c1, p, Length(c1)-p);end;procedure FileWork(fileinp, fileout:String);var StrI:TStringList; StrO:TStringList; f:Boolean; i, j, p:Integer; Str1, Str2:String;begin StrO:=TStringList.Create; StrI:=TStringList.Create; StrI.LoadFromFile(fileinp); for i:=0 to StrI.Count-1 do begin p:=Pos(‘ - ‘, StrI[i]); if p=0 then Continue; Str1:=copy(StrI[i], 1, p-1); Str2:=copy(StrI[i], p+3, Length(StrI[i])-p-3); f:=False; for j:=0 to StrO.Count-1 do begin p:=Pos(Str1, StrO[j]); if p<>0 then begin StrO[j]:=StrO[j]+‘, ‘+Str2; f:=True; end; if not f then StrO.Add(Str1+‘: ‘+Str2); end; end; for i:=0 to StrO.Count-1 do StrO[i]:=StrO[i]+‘;‘; StrO.SaveToFile(fileout); StrI.Free; StrO.Free;end;
Форма ответа