Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.12.2010, 16:42   #1
Blond_89
Пользователь
 
Регистрация: 24.02.2010
Сообщений: 14
По умолчанию Работа со строками

Помогите пожалуйста с задачами:
1)дан массив символов определить число цифр после знака '?'
2)дан массив строк определить индекс вхождения подстроки S1={ab} в каждую строку массива .использовать функции работы со строковыми данными.
Blond_89 вне форума Ответить с цитированием
Старый 27.12.2010, 16:48   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
определить число цифр после знака '?'
Примерно так:
Код:
s:='Какая то строка';
i:=1;
while (i<=length(s))and(s[i]<>'?') do inc(i);
c:=0;
while (i<=length(s)) do begin if s[i] in ['0'..'9'] then inc(c); inc(i);end;
Где
s - строка, массив символов,
i - Счетчик
c - Кол-во цифр после ? в строке
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.12.2010, 16:58   #3
Blond_89
Пользователь
 
Регистрация: 24.02.2010
Сообщений: 14
По умолчанию

у меня так не получается
Blond_89 вне форума Ответить с цитированием
Старый 27.12.2010, 17:15   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А почему? Что в методичке то пишут? как вас учат? Какие примеры дают?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.12.2010, 17:25   #5
Blond_89
Пользователь
 
Регистрация: 24.02.2010
Сообщений: 14
По умолчанию

Определить число символов в массиве A(n) до "?",а символы,стоящие после этого символа вывести в новый массив!(это пример)
Код:
uses crt;
const nmax=100;
var a,b:array[1..nmax] of char;
    n,m,i,j,k,p:byte;
    c:char;
begin
clrscr;
repeat
write('Размер массива до ',nmax,' n=');
readln(n);
until n in [1..nmax];
writeln('Введите в массив ',n,' символов:');
for i:=1 to n do
readln(a[i]);
clrscr;
writeln('Массив:');
for i:=1 to n do
write(a[i]);
writeln;
writeln;
m:=0;
k:=0;
//симол ? первый
if a[1]='?' then
 begin
  for i:=2 to n do
   begin
    m:=m+1;
    b[m]:=a[i];
   end
 end
else //не первый, ищем
 begin
  i:=1;
  while i<=n do
  if a[i]<>'?' then
   begin
    k:=k+1;
    i:=i+1;
   end
  else
   begin
    i:=i+1;
    if i<=n then
     begin
      m:=0;
      while i<=n do
       begin
        m:=m+1;
        b[m]:=a[i];
        i:=i+1;
       end;
     end;
   end;
 end;
if k=n then writeln('В массиве нет символа ?')
else if k=n-1 then write('Символ ? последний, количество символов до ? =',k)
else
 begin
  if k=0 then writeln('Символ ? первый')
  else writeln('Количество символов до символа ?=',k);
  writeln('Массив символов после символа ?:');
  for i:=1 to m do
  write(b[i]);
 end;
readln
end.
Сама написала программу, спасибо за помощь

Последний раз редактировалось Stilet; 27.12.2010 в 19:29.
Blond_89 вне форума Ответить с цитированием
Старый 27.12.2010, 18:00   #6
Blond_89
Пользователь
 
Регистрация: 24.02.2010
Сообщений: 14
По умолчанию

помогите пожалуйста со второй задачей

я понимаю, как она делается без массива,
Код:
program stroka;
var
 r:integer;
 m:string;
begin
writeln('Строка: ');
readln(m);
delete(m,1,pos('*',m));
writeln('Количество символов = ',pos('*',m)-1);
end.
а вот с массивом никак не пойму

Последний раз редактировалось Stilet; 27.12.2010 в 19:29.
Blond_89 вне форума Ответить с цитированием
Старый 27.12.2010, 19:33   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
дан массив строк
Это значит
Код:
a:array[1..5] of string
В цикле их вводи (5 строк для демонстрации хватит) тем же readln;
Далее в цикле (пример цикла у тебя выше) проходи по строкам и проверяй
Код:
var k:integer;
...
цикл
...
 k:=pos('ab',a[i]); if k<>0 then begin
  writeln(k); delete(a[i],k,2);
 end;
...
конец цикла
Где i - счетчик цикла
В общем ты на правильном пути.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со строками ЛераСочи Помощь студентам 4 13.12.2010 17:45
Работа со строками Программер Михаил Общие вопросы C/C++ 4 07.12.2010 20:00
Работа с матрицами (норма матрицы, работа со строками) Neitrosha Помощь студентам 1 26.11.2010 20:19
Работа со строками JeyKip Общие вопросы C/C++ 2 10.10.2009 18:41
Работа со строками ponchikpk Помощь студентам 13 17.03.2009 21:08