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

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

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

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


Новичок
*

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

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


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


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

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

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


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


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


Гуру
*****

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

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


Опять задачник Пильщикова? wink.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






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


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

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

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


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

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


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

 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -


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


Новичок
*

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

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


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


Гость






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

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


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

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

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


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

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

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

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


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

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

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


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


Гость






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

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


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

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

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


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


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


Новичок
*

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

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


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

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



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

if length(tmp)>0 then...



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

writeln(tmp);


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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

 





- Текстовая версия 29.03.2024 12:33
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name