HOME ПРИМЕРЫ THANKS НОВИЧКАМ ДОКИ LINKS JavaScript Mail |
|
|
program lab4zad6; uses crt; const lin='--------------'; type Fs = string; var F, A: array[1..5] of Fs; i:byte; s: string[15]; j,k:integer; BEGIN clrscr; for i:= 1 to 5 do Begin Writeln('введите фамилию'); readln(F[i]); writeln('введите адрес'); readln(A[i]); writeln(lin); end; Writeln('укажите интересующий вас адрес'); readln(s); Writeln('жильцы проживающие по указанному адресу =->'); for i:= 1 to 5 do begin if s <= copy(A[i],1,18) then writeln (F[i]:6) end; readln; end. |
Комментарии 1. Для меня загадка, почему такое странное условие на проверку проживания по указанному адресу. Может, для какого-нибудь набора данных это и будет работать, но бузусловно не для любого. Указанное условие должно быть таковым: if (Pos(s,A[i])>0) then То есть если подстрока s содержащая искомый адрес встречается в строке A[i], то данный человек проживает по указанному адресу to top Решение |
program zifra; uses crt; Type xx = set of '0'..'9'; var S:char; a:string; DI: XX; n,i: byte; begin clrscr; writeln('введите текст'); readln(A); DI :=[]; n:= length(a); for i:=1 to n do if a[i] in['0'..'9']then DI:=DI+[A[i]]; if DI=[] then writeln(' в тексте цифр нет') else writeln('в тексте следующие цифры'); for s:= '0' to '9' do if s in DI then write(s:3); readln end. |
Комментарии Все правильно. Но более эффективно пользоваться встроенными функциями: for s:='0' to '9' do if (Pos(s,A)>0) then write(s:3); to top
Автор: strike |
uses crt; var s:string; s1,s2:char; i,k,w,t:integer; begin i:=0;k:=0;w:=0;t:=0; clrscr; write ('Input string: ');readln(s); write ('Input first symbol: ');readln(s1); write ('Input second symbol: ');readln(s2); for i:=1 to length(s) do begin if s[i]=s1 then k:=k+1; if s[i]=s2 then w:=w+1; end; t:=k+w; if t<>0 then Write('Summary of two symbols is: ',t) else write ('There are no neseccary symbols in the string'); readln end. |
Комментарии Все правильно. Ошибок нет. Нет необходимости присваивать i:=0 поскольку i используется как индексная переменная в цикле. Не выведено, каких букв больше: if (k>w) then writeln('Char "',s1,'" meets in line more often than char ',s2,'"') else writeln('Char "',s2,'" meets in line more often than char ',s1,'"'); Может быть более эффективно чем простым перебором было бы воспользоваться встроенными функциями: Pos() и Delete() - то есть сначала находим символ, потом удаляем его из строки и т.д., пока символ есть в строке. to top
Автор: strike |
uses crt; var s,s1,s2:string; i,t,r:integer; begin clrscr; write('Input string: ');readln(s); write('Input word: ');readln(s1); while copy (s,1,1)=' ' do delete (s,1,1); while copy (s,length(s),1)=' 'do delete (s,length(s),1); while pos(' ',s)<>0 do delete (s,pos(' ',s),1); while copy (s1,1,1)=' ' do delete (s1,1,1); while copy (s1,length(s1),1)=' 'do delete (s1,length(s1),1); while pos(' ',s1)<>0 do delete (s1,pos(' ',s1),1); s:=s+' '; repeat t:=pos(' ',s); s2:=copy(s,1,t-1); if s2=s1 then r:=1; delete(s,1,t); until length(s)=0; if r=1 then write('The word is in the string') else write('There is no such word in the string'); readln end. |
HOME EXAMPLES |
|