Форум программистов, компьютерный форум, киберфорум
Наши страницы
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
smilegirl73
0 / 0 / 0
Регистрация: 20.10.2012
Сообщений: 18
1

Найти слова, содержащие соответственно наибольшее и наименьшее количество заглавных латинских букв, и поменять их местами

15.05.2013, 08:57. Просмотров 525. Ответов 6
Метки нет (Все метки)

Задание: составить программу заданной обработки массива слов. В процессе обработки использовать множественных тип данных. Заполнение исходных данных – с клавиатуры. Исходный и обработанный массив выводить на экран.

Дан массив из n слов произвольной длины (длина слова не превышает 80 символов). Слова могут содержать латинские буквы и цифры. Найти слова, содержащие соответственно наибольшее и наименьшее количество заглавных латинских букв, и поменять их местами.

Не могу вставить условие, чтобы шла проверка, если количество заглавных букв во всех словах одинаковое, и если заглавных букв нет.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
 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:byte;
begin
clrscr;
repeat
write('Kol-vo slov do ',nmax,', n=');
readln(n);
until n in [1..nmax];
writeln;
writeln('Vvedite slova: ');
writeln;
for i:=1 to n do
 begin
  repeat
  k:=0;
  write('Slovo ',i,' - ');
  readln(s[i]);
  writeln;
  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;
writeln;
mx:=0;mn:=255;
imx:=0;imn:=0;
for i:=1 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
  else if k<mn then
   begin
    mn:=k;
    imn:=i;
   end;
 end;
writeln('Bolshe vsego zaglavnyh bukv v slove: ',s[imx]);
writeln;
writeln('Menshe vsego zaglavnyh bukv v slove: ',s[imn]);
writeln;
x:=s[imx];
s[imx]:=s[imn];
s[imn]:=x;
writeln('Rezultat:');
writeln;
for i:=1 to n do
write(s[i],' ');
readln
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.05.2013, 08:57
Ответы с готовыми решениями:

Найти слова, содержащие соответственно наибольшее и наименьшее количество заглавных латинских букв
помогите пожалуйста прогу написать: Дан массив из n слов произвольной длины...

Найти слова, содержащие наибольшее и наименьшее количество гласных букв, и поменять их местами
Дан массив из n слов произвольной длины (длина слова не превышает 80 ...

Найти слова, содержащие наибольшее и наименьшее количество нечетных цифр, и поменять их местами
Дан массив из n слов произвольной длины (длина слова не превышает 80 символов)....

Найти слова, с наибольшим и наименьшим количеством заглавных латинских букв, и поменять их местами
Дан массив из n слов произвольной длины (длина слова не превышает 80 символов)....

Найти все слова, содержащие наибольшее количество гласных латинских букв
Можете помочь с задачей?? &quot;Дан текст. Группы символов, разделенные пробелами...

6
Puporev
Модератор
55057 / 42325 / 29229
Регистрация: 18.05.2008
Сообщений: 100,020
15.05.2013, 09:41 2
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
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.
0
smilegirl73
0 / 0 / 0
Регистрация: 20.10.2012
Сообщений: 18
15.05.2013, 11:37  [ТС] 3
Спасибо) а не подскажите еще, почему словом с минимальным количеством заглавных букв он считает слово, где заглавных букв нет?
0
Puporev
Модератор
55057 / 42325 / 29229
Регистрация: 18.05.2008
Сообщений: 100,020
15.05.2013, 12:01 4
Потому что k=0, это самое маленькое. Если нужно по другому,то нужно и писать по другому.
0
smilegirl73
0 / 0 / 0
Регистрация: 20.10.2012
Сообщений: 18
19.05.2013, 14:03  [ТС] 5
Пишу к=0, все равно он считает слова, где нет заглавных букв
0
Puporev
Модератор
55057 / 42325 / 29229
Регистрация: 18.05.2008
Сообщений: 100,020
19.05.2013, 15:25 6
Да потому что нет=0=минимум

Добавлено через 9 минут
Вам нужно обменивать только слова с заглавными буквами? Тогда нужно посчитать такие слова, и если их больше 1 и есть разное количество букв, тогда обменивать.

Добавлено через 23 минуты
Попробуйте так
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
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;
{ïîñ÷èòГ*ГҐГ¬ ñëîâГ* Г± Г§Г*ГЈГ«Г*ГўГ*ûìè}
k:=0;
for i:=1 to n do
 begin
  j:=1;
  k1:=0;
  while (j<=length(s[i]))and(k1=0) do
  if s[i][j] in zg then k1:=1
  else j:=j+1;
  if k1=1 then k:=k+1;
 end;
if k<2 then
 begin
  if k=0 then writeln('Net slov s zaglawnymi bukvami')
  else if k=1 then writeln('Tolko 1 slovo s zaglawnymi bukvami');
  write('Obmen nevozmozen');
  readln;
  exit
 end;
mx:=1;mn:=80;{ГЅГІГ® Г¬Г*ГЄГ± ГЁ ìèГ*}
for i:=1 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>0)and(k<mn) then
   begin
    mn:=k;
    imn:=i;
   end;
 end;
if mx=mn 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.
1
smilegirl73
0 / 0 / 0
Регистрация: 20.10.2012
Сообщений: 18
19.05.2013, 15:37  [ТС] 7
Спасибо большое, все работает))))
0
19.05.2013, 15:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.05.2013, 15:37

Найти все слова, содержащие наибольшее количество гласных латинских букв (a, e, i, o, u)
Через строки: Дан текст. Группы символов, разделенные пробелом (1 или...

Найти все слова,содержащие наибольшее кол-во гласных латинских букв
Дан текст.Группа символов,разделенные пробелом. Найти все слова,содержащие...

Найти количество строк, начинающихся с заглавных латинских букв
Дан текстовый файл ,содержащий строки. найти количество строк, начинающихся с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru