Страница 1 из 1

На паскале Вывести с текстового файла

Добавлено: 17 апр 2010, 09:28
memorex
Помогите пожалуйста..нужно в этой программе : чтобы выводились из текстового файла vred все фамилии кторые бы писались и с Большой буквы и с маленькой... например 1) Zimen ..2)zimin 3) ZIMa
очень нужна помощь...пробовал по всякому...выводит то только с большой буквы, то только с маленькой

Код: Выделить всё

  Uses Crt;
Var
 F,f1 : Text;
 Ch : Char;
 FIO : String[11];
 Adress:String[16];
 Mark1, Mark2 : 1..2;
 
Procedure CreateFile;
begin
  Assign(F, 'data.dat');
  {$I-}
  ReWrite(F);
  {$I+}
  If IOResult <> 0 Then
     begin
       WriteLn('Ошибка создания файла');
       Halt;
     end
  Else
     begin
       Close(F)
     end;
end;
 
Procedure ReadFile(x:integer);
var s,s1:string;
a:integer;
begin
 createFile;
  Assign(F1, 'vred.txt');
  {$I-}
  Reset(F1);
  {$I+}
  If IOResult <> 0 Then
     begin
       WriteLn('Ошибка открытия файла');
       Halt;
     end
  Else
     begin
       a:=0;
       WriteLn;
       if x=1 then begin
       writeln('Поиск по ФИО');
       writeln('Введите фио');
       readln(s);
       While Not Eof(F1) Do
         begin
          Read(F1, FIO);
           REadLn(F1, adress);
           s1:=copy(fio,1,length(s));
           if s=s1 then begin
              write(Fio);
              Write(' ');
              Writeln(adress);
              append(f);
              write(F,Fio);
              writeln(F,Adress);
              close(f);
              a:=1;
              end;
           end;
        end;
 
       if x=2 then begin
       writeln('Поиск по Адресу');
       writeln('Введите Адрес');
       readln(s);
       While Not Eof(F1) Do
         begin
          Read(F1, FIO);
           REadLn(F1, adress);
           s1:=copy(fio,1,length(s));
           if s=s1 then begin
              write(Fio);
              Write(' ');
              Writeln(adress);
              append(f);
              write(F,Fio);
              writeln(F,Adress);
              close(f);
              a:=1;
              end;
           end;
        end;
       Close(F1);
       If a=0 then Writeln('Ничего не найденно');
       ReadLn;
     end;
end;
 
begin
 ClrScr;
 WriteLn('1.Поиск по ФИО');
 WriteLn('2.Поиск по адресу');
 Write('Ваш выбор');
 Ch := ReadKey;
 Case Ch Of
   '1' : REadFile(1);
   '2' : ReadFile(2);
 End;
end.

Re: На паскале Вывести с текстового файла

Добавлено: 19 апр 2010, 12:55
Хыиуду
memorex писал(а): чтобы выводились из текстового файла vred все фамилии кторые бы писались и с Большой буквы и с маленькой... например 1) Zimen ..2)zimin 3) ZIMa
Вы считаете, что пример соответствует условию?

Re: На паскале Вывести с текстового файла

Добавлено: 20 апр 2010, 23:40
memorex
вот я и хочу помощи, что бы поправили :confused:

Re: На паскале Вывести с текстового файла

Добавлено: 21 апр 2010, 17:16
Хыиуду
Уточните, чего вы хотите.
>> все фамилии кторые бы писались и с Большой буквы и с маленькой
По такому запросу из файла с текстом "Zimin Zimen zimin zima Zimniy" должны быть выведены слова Zimin и zimin, потому что это одно и то же слово, начинающееся на строчную и прописную букву. Это то, что вам надо?

Re: На паскале Вывести с текстового файла

Добавлено: 21 апр 2010, 22:57
memorex
да...именно так!)

Re: На паскале Вывести с текстового файла

Добавлено: 22 апр 2010, 15:46
Хыиуду
Тогда так - идем по строке, читаем слово. Потом формируем слово на ту же букву, только прописную или строчную - противоположную той, что имеем. Потом делаем поиск функций pos по оставшейся части строки: если новосозданное слово там есть - выводим оригинал.

Re: На паскале Вывести с текстового файла

Добавлено: 27 апр 2010, 16:06
memorex
Я вот такой способ нашел

Код: Выделить всё

function SmallAlphaa(pis:string):string;
var iii:integer;
begin
for iii:=1 to length(pis) do begin
case pis[iii] of
'A'..'Z','А'..'П': inc(pis[iii],32);
'Р'..'Я' : inc(pis[iii],80);
end;
end;
SmallAlphaa:=pis;
end;
но у меня не получается вставить((( не выводится((