|
#1
|
|||
|
|||
Смена регистра
пожалуйста,кто разбирается в процедурах и функциях,помогите доделать программу,которая заменяет строчные латинские буквы на прописные.
нужно сделать так,чтобы не портились исходные данные и выводились исходные данные и результат в файл. с вводом из файла вроде получилось ввод,вывод и обработку осуществлять в процедурах и функциях вот что сделал: Код:
var st,s:string; procedure vvodstr(var st:string); fin:TextFile; begin AssignFile(fin,'File1.txt'); Reset(fin); readln(fin,st); CloseFile(fin); end; function zamena(st:string):integer; var s:string; i: byte; begin for i:=1 to length(st) do s[i]:=UpCase(st[i]); end; procedure vivodres(s:string); var i: byte; fout:TextFile; begin AssignFile(fout,'File2.txt'); Rewrite(fout); for i:=1 to length(st) do writeln(fout,'Rezultat: ',s[i]); CloseFile(fout); end; begin vvodstr(st); zamena(st); vivodres(s); end. Последний раз редактировалось trangle, 18.12.2015 в 23:46. |
#2
|
|||
|
|||
Код:
uses Classes; var sl : TStringList; i : integer; s : String; begin sl := TSTringList.Create; sl.LoadFromFile('File1.txt'); s := sl.Text; For i := 1 To Length(s) Do If s[i] in ['a'..'z'] Then s[i] := chr(ord('A') + ord(s[i]) - ord('a')); sl.Text := s; sl.SaveTofile('File2.txt'); sl.Free; end; А то у тебя вообще какая-то ересь написана, полная путаница в именах параметров и переменных, отсутсвует функция UpCase, использованная в коде и т.д. |
#3
|
|||
|
|||
Цитата:
Моя программа работает правильно. Я не очень хорошо знаю процедуры и функции. а с тем,чего я просил,вы мне не помогли |
#4
|
|||
|
|||
Дык исходные данные и не должны портиться, бо как лежат в др. файле.
типа так: Код:
uses Classes; var sl : TStringList; i : integer; s : String; begin sl := TSTringList.Create; sl.LoadFromFile('File1.txt'); s := sl.Text; For i := 1 To Length(s) Do If s[i] in ['a'..'z'] Then s[i] := chr(ord('A') + ord(s[i]) - ord('a')); sl.Add(''); sl.Add('Resultat:'); al.Add(s); sl.SaveTofile('File2.txt'); sl.Free; end; тогда выведет в новый файл содержимое старого + измененные данные. Ну а если говорить о твоем коде, то, наверное, должно быть как то так: Код:
var str_in, str_out : string; function vvodstr : string; var fin : TextFile; buf : String; begin AssignFile(fin,'File1.txt'); Reset(fin); readln(fin,buf); CloseFile(fin); Result := buf; end; function zamena(s:string):string; var i : integer; begin Result := s; for i:=1 to length(Result) do Result[i]:=UpCase(Result[i]); end; procedure vivodres(str_old, str_new : string); var I : Integer; fout : TextFile; begin AssignFile(fout,'File2.txt'); Rewrite(fout); writeln(fout,'in out'); writeln(fout,'-- ---'); for i:=1 to length(str_old) do writeln(fout,str_old[i]+' '+str_new[i]); CloseFile(fout); end; begin str_in := vvodstr; str_out := zamena(str_in); vivodres(str_in,str_out); end. |
#5
|
|||
|
|||
AnsiUpperCase нельзя что ли использовать?
|