|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
19.05.2013, 12:33 | #1 |
Новичок
Джуниор
Регистрация: 12.05.2013
Сообщений: 1
|
Найти слова, содержащие соответственно наибольшее и наименьшее количество заглавных латинских букв, и поменять их местами
Задание: составить программу заданной обработки массива слов. В процессе обработки использовать множественных тип данных. Заполнение исходных данных – с клавиатуры. Исходный и обработанный массив выводить на экран.
Дан массив из n слов произвольной длины (длина слова не превышает 80 символов). Слова могут содержать латинские буквы и цифры. Найти слова, содержащие соответственно наибольшее и наименьшее количество заглавных латинских букв, и поменять их местами. Не могу исправить ошибку - почему-то в программе меняются слова, где нет латинских букв program test; uses crt; const nmax=50; ds=['0'..'9','A'..'Z','a'..'z']; zg=['A'..'Z']; var s:array[1..nmax] of string[80]; x:string[80]; n,i,j,imx,imn,mx,mn,k,k1,p:integer; begin clrscr; repeat write('Kol-vo slov do ',nmax,', n='); readln(n); until n in [1..nmax]; writeln; writeln('Vvedite slova: '); for i:=1 to n do begin repeat k:=0; write('Slovo ',i,' - '); readln(s[i]); for j:=1 to length(s[i]) do if not(s[i][j] in ds) then k:=1; if k=1 then writeln('Vvedeny nedopustimye simvoly, povtorite vvod.'); until k=0; end; k1:=0; {посчитаемв первом слове} for i:=1 to length(s[1]) do if s[1][i] in zg then k1:=k1+1; mx:=k1;mn:=k1;{это макс и мин} imx:=1;imn:=1; p:=0;{пусть везде одинаково} for i:=2 to n do begin k:=0; for j:=1 to length(s[i]) do if s[i][j] in zg then k:=k+1; if k>mx then begin mx:=k; imx:=i; end; if k<mn then begin mn:=k; imn:=i; end; if k<>k1 then p:=1;{если не равео первому, то разное} end; if mx=0 then write('V slovah net zaglavnyh bukv') else if p=0 then write('Vo vseh slovah ravnoe chislo zaglavnyh bukv') else begin writeln('Bolshe vsego zaglavnyh bukv v slove: ',s[imx]); writeln('Menshe vsego zaglavnyh bukv v slove: ',s[imn]); x:=s[imx]; s[imx]:=s[imn]; s[imn]:=x; writeln('Rezultat:'); for i:=1 to n do write(s[i],' '); end; readln end. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
преобразование латинских заглавных букв в строчные на assembler | lastochka | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 6 | 19.05.2013 11:58 |
[Pascal] Найти слова, содержащие не менее трех букв из первого и указать после них найденные буквы. | suigintou | Помощь студентам | 1 | 23.12.2012 17:01 |
Вводится текст. Конец ввода F6. Найти количество заглавных букв. (Паскаль) | Casper098 | Помощь студентам | 2 | 06.10.2011 06:03 |
Паскаль. найти цифры среди букв и поменять местами. | grom333 | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 14.01.2011 22:32 |
(Си)Поменять местами наибольшее и наименьшее слово в предложении | kilgoreq | Помощь студентам | 0 | 02.12.2010 20:17 |