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

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

21.10.2012, 20:06. Показов 943. Ответов 5
Метки нет (Все метки)

Дан массив из 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
62
63
64
program test;
uses crt;
const n=5;
type mas=array [1..n] of string [80];
     mas2=array [1..n] of integer;
var a:mas;
    k:mas2;
    t1,t2,i,l,j,x,max,min,max_ind,min_ind:integer;
    y, k:string;
    lat:set of 'A'..'Z';
 
begin
clrscr;
       writeln ('Исходный массив:');
      lat:=['A'..'Z'];
     for i:=1 to n do
     begin
          readln (a[i]);
     end;
     for i:=1 to n do
     begin
          x:=0;
          l:=length (a[i]);
          for j:=1 to l do
          begin
               if a[i][j] in lat then x:=x+1;
          end;
          k[i]:=x;
     end;
     t1:=0;
     t2:=1;
     max:=k[1];
     max_ind:=1;
     if k[1]<>0 then min:=k[1] else min:=n;
     min_ind:=1;
     for i:=1 to n do
     begin
          if k[i]=0 then t1:=t1+1;
          if k[i]=k[i+1] then t2:=t2+1;
          if (k[i]<min) and (k[i]<>0) then
          begin
               min:=k[i];
               min_ind:=i;
          end;
          if k[i]>max then
          begin
               max:=k[i];
               max_ind:=i;
          end;
     end;
     writeln;
     writeln ('Результат');
     if t1=n then writeln ('Заглавных латинских букв нет')
     else
     if (t1<>n) and (t2=n) then writeln ('Количество заглавных латинских букв во всех словах совпадает')
     else
     begin
          y:=a[max_ind];
          a[max_ind]:=a[min_ind];
          a[min_ind]:=y;
          for i:=1 to n do writeln (a[i]);
     end;
readln;
end.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.10.2012, 20:06
Ответы с готовыми решениями:

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

Поменять в массиве местами строку с наибольшим и строку с наименьшим количеством различных элементов
Помогите, пожалуйста, решить задачу на С++ . Дан массив действительных чисел размера m на n, где m...

Текст и внешние файлы. Найти слова с наибольшим и наименьшим количеством гласных
1. Задан текст. Найти в этом тексте слова с наибольшим и наименьшим количеством гласных и поменять...

Вывод строки с наименьшим количеством заглавных букв
Здравствуйте. Мне нужно создать программу через Виндовс Формы, чтобы с клавиатуры вводились строки...

5
538 / 398 / 99
Регистрация: 18.08.2012
Сообщений: 1,024
21.10.2012, 20:17 2
Переменная k объявлена дважды: один раз как тип mas2, а другой - как String.
0
0 / 0 / 0
Регистрация: 20.10.2012
Сообщений: 18
21.10.2012, 20:27  [ТС] 3
Убрала k: string, все равно ту же ошибку выводит(((
0
538 / 398 / 99
Регистрация: 18.08.2012
Сообщений: 1,024
21.10.2012, 20:39 4
В алгоритм не вникал. Просто проверил и нормально сработала. Но вот еще в строке 39 k[i+1] выходит за границу объявленного массива.
0
0 / 0 / 0
Регистрация: 20.10.2012
Сообщений: 18
21.10.2012, 20:43  [ТС] 5
А как это исправить?
0
538 / 398 / 99
Регистрация: 18.08.2012
Сообщений: 1,024
21.10.2012, 21:39 6
Может быть так?
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
uses crt;
const n=5;
type mas=array [1..n] of string [80];
     mas2=array [1..n] of integer;
var a:mas;
    k:mas2;
    i,j,l,x,max,min,max_ind,min_ind:integer;
    y:string;
    lat:set of 'A'..'Z';
 
begin
clrscr;
writeln ('Исходный массив:');
lat:=['A'..'Z'];
for i:=1 to n do
  readln (a[i]);
for i:=1 to n do
  begin
    x:=0;
    l:=length (a[i]);
    for j:=1 to l do
      if a[i][j] in lat then x:=x+1;
    k[i]:=x;
  end;
x:=1;
for i:=2 to n do
  If k[1]=k[i] then inc(x); {Проверка на совпадение количества во всех словах}
If x<n then {Если количество разное, то ищем Max и Min (здесь все было правильно)}
  begin
    max:=0;
    min:=80;
    max_ind:=0;
    min_ind:=0;
    for i:=1 to n do
      If k[i]<>0 then
        begin
          if k[i]<min then
            begin
            min:=k[i];
            min_ind:=i;
            end;
          if k[i]>max then
            begin
            max:=k[i];
            max_ind:=i;
            end;
        end;
  end;
writeln;
writeln ('Результат');
If x=n then writeln ('Количество заглавных латинских букв во всех словах совпадает')
Else
  If (max_ind=0) and (min_ind=0) then writeln ('Заглавных латинских букв нет')
  Else
    begin {Здесь тоже все правильно}
      y:=a[max_ind];
      a[max_ind]:=a[min_ind];
      a[min_ind]:=y;
      for i:=1 to n do writeln (a[i]);
    end;
readln;
end.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.10.2012, 21:39

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

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

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

У матрицы с размером M*N поменять местами строки с наибольшим и наименьшим элементом местами
Всем привет, подскажите пожалуйста. Как в Windows Form у матрицы с размером M*N поменять местами...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru