0 / 0 / 0
Регистрация: 29.12.2014
Сообщений: 15
1

Найти количество симметричных строк, которые не содержат цифр

05.01.2015, 23:53. Показов 583. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Условие: Дан массив строк. Найти количество симметричных строк, которые не содержат цифр.

Мое решение:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var s:Tar; i:Tind; j,k,sum:integer; b:boolean;
for i:=1 to n do 
  readln(s[i]);
sum:=0;
for i:=1 to n do begin
  k:=0;
  b:=true;
  for j:=1 to length(s[i]) do
    if (s[i][j]>'0') and (s[i][j]<'9') then b:=false;
  if b=true then begin
    for j:=length(s[i]) downto 1 do
       if s[i][j]=s[i][n-j+1] then k:=k+1;   //  ---------------------------------    (В этой строке выдает ошибку "Индекс находился вне границ массива.")
    if (k=length(s[i])) then sum:=sum+1;                                          ////////////////////////// /////////////       (ошибка выводится только после ввода строк)
  end;
end;
writeln(sum);
end.
Что можно сделать? Подскажите пожалуйста
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.01.2015, 23:53
Ответы с готовыми решениями:

Дан массив строк, найти количество строк, которые содержат свою длину в виде числа
Народ очень прошу. Может кто-нибудь написать алгоритм нахождения кол-во строк ? Я знаю, что нужно...

Найти в матрице количество строк, которые не содержат нулей
Найти в матрице количество строк, которые не содержат нулей var i,j,k,l,m,n,d:integer;...

Найти количество строк в массиве, которые содержат максимум
Состязания. Если перенумеровать спортсменов числами от 0 до n-1, а попытки каждого из них – от 0...

Найти в матрице количество строк, которые не содержат нулей
Найти в матрице количество строк, которые не содержат нулей

2
Модератор
9656 / 4976 / 3265
Регистрация: 17.08.2012
Сообщений: 15,476
06.01.2015, 05:15 2
Ошибочка, не n, а length(s[i])
Pascal
10
11
12
13
14
  if b then begin
    for j:=length(s[i]) downto 1 do
       if s[i][j]=s[i][length(s[i])-j+1] then k:=k+1;
    if (k=length(s[i])) then sum:=sum+1;
  end;
Никогда, слышите, никогда не сравнивайте значение логической переменной с true или false, потому что когда Вы пишете такой индусский код, где-то умирает котёнок.
Если надо проверить переменную на истинность, пишите просто
Pascal
1
if b then
если на ложность, то пишите
Pascal
1
if not b then
Добавлено через 29 минут
Переменную b я бы применил по-другому, переменную k исключил бы за ненадобностью, а строки с 5 по 15 написал бы покороче:
Pascal
5
6
7
8
9
10
11
for i:=1 to n do begin
  for j:=1 to length(s[i]) div 2 + 1 do begin
    b := not(s[i][j] in ['0'..'9']) and s[i][j]=s[i][length(s[i])-j+1];
    if not b then break
  end;
  if b then inc(sum)
end;
Добавлено через 16 минут
Да, если учитывать строки нулевой длины, нужно добавить
Pascal
5
6
7
8
9
10
11
12
13
for i:=1 to n do begin
  if length(s[i]) = 0
    then b:=true
    else for j:=1 to length(s[i]) div 2 + 1 do begin
      b := not(s[i][j] in ['0'..'9']) and s[i][j]=s[i][length(s[i])-j+1];
      if not b then break
    end;
  if b then inc(sum)
end;
Менее оптимальный по быстродействию, но более короткий по размеру вариант последнего фрагмента:
Pascal
5
6
7
8
9
10
for i:=1 to n do begin
  b:=true;
  if length(s[i]) > 0 then for j:=1 to length(s[i]) div 2 + 1 do
    if (s[i][j] in ['0'..'9']) or s[i][j]<>s[i][length(s[i])-j+1] then b:=false;
  if b then inc(sum)
end;
1
0 / 0 / 0
Регистрация: 29.12.2014
Сообщений: 15
08.01.2015, 22:58  [ТС] 3
Cyborg Drone, Спасибо большое
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.01.2015, 22:58
Помогаю со студенческими работами здесь

Найти в матрице количество строк, которые не содержат нулей (исправить ошибки)
Program z_8; uses crt; const n=4; m=4; type din= array of integer; var a:^din;...

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

Найти количество строк текстового файла, которые содержат не менее двух записей времени HH:MM:SS
Найти количество строк текстового файла ,которые содержат не менее двух слов,являющиеся правильной...

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


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

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

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