IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Строка символов, Работа со строками
Гость_Рада
сообщение 17.11.2004 11:00
Сообщение #1


Гость






Дана строка символов. Изменить строку – во всех словах с четным номером поменять местами первый и последний символы. Слова ограничены одним или несколькими пробелами. Порядок ввода исходных данных: - исходная строка. Порядок вывода результатов: - новая строка.
Преобразовать обработку строки в процедуру (или функцию). Написать к ней тестовую программу.
Созданную процедуру использовать для построчной обработки текстового файла (Text). Результат обработки записывается в новый файл того же типа.
 К началу страницы 
+ Ответить 
2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
Ответов(1 - 19)
volvo
сообщение 17.11.2004 11:05
Сообщение #2


Гость






Гость_Рада
А в чем именно возникли трудности? Разбиение строки на слова? Работа со словами? Работа с файлом? Вы вообще начинали делать эту задачу?
 К началу страницы 
+ Ответить 
APAL
сообщение 17.11.2004 11:07
Сообщение #3


Смотрю...
*****

Группа: Модераторы
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

Репутация: -  6  +


Какие есть свои наработки по этому поводу? Выкладывай сюда.
Надеюсь, Вас не придется учить паскалю с нуля? Ведь у задачи явно "ноги растут" из какого-то курса преподавания...


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Гость_Рада
сообщение 17.11.2004 12:15
Сообщение #4


Гость






Да я икак не могу не понять,как определять номер элемента строки
 К началу страницы 
+ Ответить 
Манго
сообщение 17.11.2004 12:24
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Женский

Репутация: -  0  +


Ограничение прбелом untill s[i]:=' ' Да?
А что надо сделать,чтобы потом слова считывались дальше?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
APAL
сообщение 17.11.2004 12:28
Сообщение #6


Смотрю...
*****

Группа: Модераторы
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

Репутация: -  6  +


А пробовали поискать на этом форуме? Для чего создан раздел F.A.Q. ?

http://pascal.dax.ru/forum/index.php?showtopic=2361


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 17.11.2004 12:29
Сообщение #7


Гость






Попробуйте разобраться в работе этой функции:

Код

function getToken(delim: char; var s: string): string;
 var p: byte;
begin
 getToken := '';
 p := pos(delim, s);
 if p <> 0 then
   begin
     getToken := Copy(s, 1, pred(p));
     delete(s, 1, p); exit
   end;
 getToken := s; s := ''
end;

const
 st : string = 'what is  your name';
var
 sTok: string;
 p: byte;

begin
 repeat
   p := pos('  ', st);
   if p > 0 then
     begin
       delete(st, p, 1);
     end;
 until p = 0;

 while st <> '' do
   begin
     sTok := getToken(' ', st); writeln(sTok);
   end;
end.


Как Вы думаете, для чего предназначена функция getToken, что именно она делает?
 К началу страницы 
+ Ответить 
APAL
сообщение 17.11.2004 12:31
Сообщение #8


Смотрю...
*****

Группа: Модераторы
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

Репутация: -  6  +


Или вот полезно будет посмотреть:
http://pascalnet.ru/forum/index.php?showtopic=3024


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Манго
сообщение 17.11.2004 12:32
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Женский

Репутация: -  0  +


Как работать со словом строки(то,к-ое до прбела)???

Добавлено (17.11.04 12:33):
Ну ,в смысле,что надо сделать,чтобы я могла с ним работать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 17.11.2004 12:37
Сообщение #10


Гость






Манго

А разобраться в приведенной программе не пробовали? Я по-Вашему это для себя пишу?

Сообщение отредактировано: volvo - 17.11.2004 12:37
 К началу страницы 
+ Ответить 
Манго
сообщение 17.11.2004 12:56
Сообщение #11


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Женский

Репутация: -  0  +


Нет,просто я это сообщение писала до того ,как читала ваше;
так выщло ,не сердитесь rolleyes.gif

Добавлено:
Я не поняла работу функции getToken sad.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 17.11.2004 13:14
Сообщение #12


Гость






Манго
Эта функция как раз и занимается тем, что берет из строки следующее слово. А дальше его нужно обработать - попробуйте.

Кстати, программу запускали или нет? По ее выходным данным можно однозначно сказать, для чего она предназначена :yes:
 К началу страницы 
+ Ответить 
Манго
сообщение 17.11.2004 13:21
Сообщение #13


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Женский

Репутация: -  0  +


Хорощо,сейчас попрую.
Кстати,программу я написала,но она не работает <_<
А программа такая:

Код
program Stroka;
uses crt;
var s,s0 : string;
   f : text;
   t:char;
   i,n,d,k,pssl,n0 : integer;
begin
clrscr;
writeln('Vvedite stroku ');
readln(s);
n:=length(s);
for k:=0 to pssl do begin   {k-schetchik slov;pssl-poslednee slovo}
while s[i] <> ' ' do read(s[i]);
if s[i] =' ' then d:=i-1;   { d-nomer poslednego elementa}
s0:=s[d];
n0:=length(s0);
end;
if (k mod 2)=0 then begin t:=s0[1];s0[1]:=s0[n0];s0[n0]:=t;end;
writeln('Novaja stroka ',s);
readkey;
end.

Код программ заключаем в соответсвующие теги!

Сообщение отредактировано: APAL - 17.11.2004 14:07
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Манго
сообщение 17.11.2004 13:31
Сообщение #14


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Женский

Репутация: -  0  +


Не подскажите,почему?????????? :p2:
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 17.11.2004 13:35
Сообщение #15


Гость






Манго

Смотрите, что происходит в программе:
Код

program Stroka;
uses crt;
var s,s0 : string;
f : text;
t:char;
i,n,d,k,pssl,n0 : integer;
begin
 clrscr;
 writeln('Vvedite stroku ');
 readln(s);
 n:=length(s);

{1. переменная pssl не инициализируется явно (хотя по умолчанию = 0)}
for k:=0 to pssl do begin {k-schetchik slov;pssl-poslednee slovo}
 {2. Попытка считывания С КЛАВИАТУРЫ символов до тех пор, пока не будет введен пробел, а ведь надо читать из строки S}
 while s[i] <> ' ' do read(s[i]);
 {3. переменной i тоже явно не присвоено значение (по умолчанию тоже i=0), но ведь в нулевом символе хранится длина строки!}
if s[i] =' ' then d:=i-1; { d-nomer poslednego elementa}
s0:=s[d];
n0:=length(s0);
end;
if (k mod 2)=0 then begin t:=s0[1];s0[1]:=s0[n0];s0[n0]:=t;end;
writeln('Novaja stroka ',s);
readkey;
end.
 К началу страницы 
+ Ответить 
Манго
сообщение 17.11.2004 13:56
Сообщение #16


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Женский

Репутация: -  0  +


Цитата
{1. переменная pssl не инициализируется явно (хотя по умолчанию = 0)}
for k:=0 to pssl do begin {k-schetchik slov;pssl-poslednee slovo}
{2. Попытка считывания С КЛАВИАТУРЫ символов до тех пор, пока не будет введен пробел, а ведь надо читать из строки S}


1)Я ,наверно,не так поняла,но разве pssl не будет увеличиваться сам в ходде работы счётчика?

2)Сильно ли влияет на программу считывание с клавиатуры или из строки?Символы то те же,или нет ?huh.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Guest
сообщение 17.11.2004 14:09
Сообщение #17


Гость






Цитата
разве pssl не будет увеличиваться сам в ходде работы счётчика?

Нет!!! В ходе работы цикла
Цитата
for k=0 to pssl do

будет само собой увеличиваться значение переменной к (а вернее, не будет, поскольку по умолчанию pssl получит значение 0, и цикл будет работать, как
Цитата
for k=0 to 0 do

т.е., всего один раз). Лучше все-таки юзайте функцию от Volvo. Или ищите добрую душу, которая сделает все за Вас. Если Вы очень-очень ласково попросите, может, я и разжалоблюсь. :p2:
 К началу страницы 
+ Ответить 
volvo
сообщение 17.11.2004 14:15
Сообщение #18


Гость






Цитата
Сильно ли влияет на программу считывание с клавиатуры или из строки?


Так нельзя уже считывать с клавиатуры! Строка введена - теперь нужно пользоваться только тем, что уже было введено (тем более, что эта задача будет применяться к работе с файлами)
 К началу страницы 
+ Ответить 
Guest
сообщение 17.11.2004 14:15
Сообщение #19


Гость






Да я не прошу ВСЁ за меня делать,я прошу помочь исправить то,что я уже
сделала так,чтобы программа работала rolleyes.gif
 К началу страницы 
+ Ответить 
Манго
сообщение 17.11.2004 14:30
Сообщение #20


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Женский

Репутация: -  0  +


:yes: Я исправила программу!!!
Но она всё равно не работает!!! lol.gif

Код

var s,s0 : string;
   f : text;
   t:char;
   i,n,d,k,pssl,n0 : integer;
begin
clrscr;
writeln('Vvedite stroku ');
readln(s);
n:=length(s);
for k:=0 to pssl do begin  {k-schetchik slov;pssl-poslednee slovo}
i:=1;pssl:=n;{!}
while s[i] <> ' ' do read(s[i]);
if s[i] =' ' then d:=i-1;   { d-nomer poslednego elementa}
s0:=s[d];
n0:=length(s0);
end;
if (k mod 2)=0 then begin t:=s0[1];s0[1]:=s0[n0];s0[n0]:=t;end;
writeln('Novaja stroka ',s);
readkey;
end.[QUOTE]var s,s0 : string;
    f : text;
    t:char;
    i,n,d,k,pssl,n0 : integer;
begin
clrscr;
writeln('Vvedite stroku ');
readln(s);
n:=length(s);
for k:=0 to pssl do begin  {k-schetchik slov;pssl-poslednee slovo}
i:=1;pssl:=n;{!}
while s[i] <> ' ' do read(s[i]);
if s[i] =' ' then d:=i-1;   { d-nomer poslednego elementa}
s0:=s[d];
n0:=length(s0);
end;
if (k mod 2)=0 then begin t:=s0[1];s0[1]:=s0[n0];s0[n0]:=t;end;
writeln('Novaja stroka ',s);
readkey;
end.



Что теперь неправильно?
Подскажите!!Немнжко же осталось,чтобы она заработала!!! :yes: smile.gif

Сообщение отредактировано: Манго - 17.11.2004 14:32
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

2 страниц V  1 2 >
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.06.2025 5:12
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"