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

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

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

 
 Ответить  Открыть новую тему 
> Программа на строки, Срочно нужно сделать
TORETO
сообщение 30.11.2007 20:56
Сообщение #1


Новичок
*

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

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


Заданный текст распечатать по строкам, понимая под строкой либо очередные 6 литер,если среди них нет запятой, либо часть текста до запятой включительно.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 30.11.2007 21:06
Сообщение #2


Perl. Just code it!
******

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

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


Ты бы хоть уточнил как текст задан, строка, массив строк, текстовый файл ... или три программы ждешь сразу ? dry.gif


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Ozzя
сообщение 1.12.2007 13:03
Сообщение #3


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

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


Опять задачник Пильщикова? wink.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
TORETO
сообщение 2.12.2007 12:18
Сообщение #4


Новичок
*

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

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


Да, опять задачник Пильщикова.Кстати, к нему нет ответов? Текст вводить как строку(string), двумерный массив использовать нежелательно.
Нет, не три программы.Это все должно быть в одной(я думаю с использованием copy что-то)

Добавлено через 4 мин.
 
program revva;
uses crt;
var
s,a:string;
i:integer;
begin
clrscr;
writeln('Vvedite tekst');
read(s);
For i:=1 to length(s) do begin
If s[i]=',' then begin
a:=copy(s,1,i);
delete(s,1,i);
writeln(a);
end;
end;
repeat
a:=copy(s,1,6);
delete(s,1,6);
writeln(a);
until length(s)=0;
readkey;
end.



Что-то наподобие того, тоько в цикле нельзя менять длину строки и то что в repeat тоже как-то должно быть в цикле(наверное можно обойтись и без delete но не знаю как!)

Добавлено через 5 мин.
klem4 извини, я просто забыл,что уже создал тему smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 2.12.2007 13:32
Сообщение #5


Perl. Just code it!
******

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

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


вот как вариант, надо конечно чонить покороче придумать.

var
s, tmp: String;
p, start: Byte;

begin
write('s = '); readln(s);

start := 1;
while start <= length(s) do begin
p := Pos(',', Copy(s, start, 6));

if p = 0 then begin
tmp := Copy(s, start, 6);
inc(start, 6)
end else begin
tmp := Copy(s, start, p - 1);
inc(start, p);
end;

if length(tmp) > 0 then writeln(tmp);
end;
end.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 2.12.2007 14:32
Сообщение #6


Гость






Не пойдет... Проверяем со строкой:
s := '1111111114-05986-0439586-03495sd;3458604-9568';
и убеждаемся, что точка с запятой никакого влияния ни на что не оказывает. Что с ней - то же самое и без нее...
 К началу страницы 
+ Ответить 
klem4
сообщение 2.12.2007 14:34
Сообщение #7


Perl. Just code it!
******

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

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


так разделитель вроде запятая, а не точка с запятой. кстати я сделал так что запятая не учитывается(в смысле не выводится на экран в месте с предшествующей частью текста), а надо ..

Сообщение отредактировано: klem4 - 2.12.2007 14:41


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 2.12.2007 14:41
Сообщение #8


Гость






А, ну да...

Вот так будет меньше писанины, кстати:

...
start := 1;
while start <= length(s) do begin
p := Pos(',', Copy(s, start, 6));
p := byte(p = 0) * 6 + p;

tmp := Copy(s, start, p);
inc(start, p);

if length(tmp) > 0 then writeln(tmp);
end;
...

 К началу страницы 
+ Ответить 
klem4
сообщение 2.12.2007 14:59
Сообщение #9


Perl. Just code it!
******

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

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


так запятая учитывается, по печатается отдельно, а надо вместе с частью текста ... ну изменить осталось не много:


// ..
start := 1;
while start <= length(s) do begin
p := Pos(',', Copy(s, start, 7)); { <---- 7 }
// ...
end;
//..


Сообщение отредактировано: klem4 - 2.12.2007 15:00


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
TORETO
сообщение 2.12.2007 15:06
Сообщение #10


Новичок
*

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

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


Спасибо большое сейчас попробую.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 2.12.2007 15:08
Сообщение #11


Гость






Цитата
так запятая учитывается, по печатается отдельно,
Что я теперь делаю не так:

Прикрепленное изображение
?
 К началу страницы 
+ Ответить 
klem4
сообщение 2.12.2007 15:15
Сообщение #12


Perl. Just code it!
******

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

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


вообще тут конечно надо бы уточнить ... введи строку '123456,123456'

вот какой должен быть результат ?

на сколько я понимаю из условия:

Цитата
либо часть текста до запятой включительно.


то получиться должно
123456,
123456

а может и нет ... я честно говоря не уверен.

Сообщение отредактировано: klem4 - 2.12.2007 15:17


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 2.12.2007 15:17
Сообщение #13


Гость






Цитата
получиться должно
123456,
123456
Это с какой стати?
Цитата
понимая под строкой либо очередные 6 литер,если среди них нет запятой

Что, среди первых 6-ти символов есть запятая, что ты выводишь текст ДО НЕЕ включительно? Нету... Так что запятая идет на следующую строку...
 К началу страницы 
+ Ответить 
klem4
сообщение 2.12.2007 15:19
Сообщение #14


Perl. Just code it!
******

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

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


согласен ... ну значит вопрос решен smile.gif


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
TORETO
сообщение 2.12.2007 17:24
Сообщение #15


Новичок
*

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

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


Объясните что значит строка

p:=byte(p=0)*6+p



Добавлено через 2 мин.
И еще помоему

if length(tmp)>0 then...



можно просто написать

writeln(tmp);


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 2.12.2007 17:28
Сообщение #16


Гость






Если p = 0, значит это True - следовательно Byte(p = 0) равен 1, умноженный на 6 - станет равным 6... В любом другом случае Byte(p = 0) даст 0, и в P запишется старое значение...

Аналог:
If p = 0 then p := 6
else p := p;

 К началу страницы 
+ Ответить 

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

 



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