![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
сНежная |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 5 Пол: Женский Репутация: ![]() ![]() ![]() |
Помогите решить задачку
![]() Вводится произвольное кол-во слов в строку, программа выводит кол-во слов в строке и переставляет местами слова (1 со 2, 3 с 4 и т.д), если перед первым словом пробел, или между словами более одного пробела, то выдается сообщение о ошибке и предлагается начать сначала. //в строке переставить местами рядом стоящие слова(1 со 2, 3 с 4, и т.д.) Дана //дана строка, нач. не пробелом, между словами по 1 пробелу, //и строка закан. буквой program ctroca; {$APPTYPE CONSOLE} uses SysUtils; var s,s1,temp:string; s2:array[1..25]of string; p,k,n,i,t:integer; begin writeln('Vvedite text'); readln(s); writeln; k:=1; n:=1; p:=0; s1:=''; for i:=1 to length(s) do begin if (s[i]<>' ')and(s[i+1]=' ') then inc(k); end; for i:=1 to length(s) do begin if (s[i]<>' ') then begin insert(s[i],s1,n); inc(n); end; if (s[i]=' ') or (i=length(s)) then begin n:=1; inc(p); s2[p]:=s1; s1:=''; end; end; if for i:=1 to length(s) do if (s[i]=' ') and (s[i+1]=' ') then begin writeln('Error!!!!'); s:=''; writeln('Mnogo probelov '); writeln('Vvedite text :'); readln(s); for i:=1 to Length(s) do begin if (s[i]<>' ')and(s[i+1]=' ') then inc(k); end; end; end; if s[1]=' ' then begin writeln('Error!!!!'); writeln('Nachalo probel '); writeln('Vvedite text :'); readln(s); for i:=1 to Length(s) do begin if (s[i]<>' ')and(s[i+1]=' ') then inc(k); end; end; writeln('Kol-vo slov: ',k); readln; end. |
![]() ![]() |
мисс_граффити |
![]()
Сообщение
#2
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
1. Пользуйся тэгами.
2. Приведи пример строки, которая на входе, и строки, которая на выходе. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
arhimag |
![]()
Сообщение
#3
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 424 Пол: Мужской Репутация: ![]() ![]() ![]() |
Код var s : string; var arr : array [1..256] of string; var c : integer; var slov : integer; function make_words(s:string):boolean; var i: integer; begin slov:=1; c:=1; make_words:=false; i:=1; while (i<=length(s)) and (s[i]=' ') do inc(i); while i<=length(s)do begin if (s[i]=' ') and (i<length(s)) and (s[i+1]=' ') then exit; if (s[i] in ['A'..'z']) then arr[c]:=arr[c]+s[i]; if (s[i]=' ') then begin inc©; inc(slov); end; inc(i); end; if s[length(s)]=' ' then begin dec©; dec(slov); end; make_words:=true; end; var flag : boolean; i : integer; tmp : string; begin readln(s); flag:=make_words(s); if (flag) and (c>1) then begin for i:= 0 to (©div 2) do begin tmp:=arr[i*2+1]; arr[i*2+1]:=arr[i*2+2]; arr[i*2+2]:=tmp; end; for i:=1 to c do write(arr[i],' '); writeln; writeln('slov:',slov); end else if (c=1) and (flag) then begin writeln(s); writeln(1); end else writeln('Strashnij error!!!'); readln; end. Сообщение отредактировано: arhimag - 3.01.2007 23:31 -------------------- Чего хочет женщина – того хочет Бог
|
сНежная |
![]()
Сообщение
#4
|
Группа: Пользователи Сообщений: 5 Пол: Женский Репутация: ![]() ![]() ![]() |
У меня считает кол-во слов, а местами не меняет
|
arhimag |
![]()
Сообщение
#5
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 424 Пол: Мужской Репутация: ![]() ![]() ![]() |
если будут вопросы, спрашивай
-------------------- Чего хочет женщина – того хочет Бог
|
Bokul |
![]()
Сообщение
#6
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: ![]() ![]() ![]() |
Не работает:
Цитата a b c d e Сообщение отредактировано: Bokul - 3.01.2007 23:32 -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
сНежная |
![]()
Сообщение
#7
|
Группа: Пользователи Сообщений: 5 Пол: Женский Репутация: ![]() ![]() ![]() |
@-что означает?(dec©)
|
arhimag |
![]()
Сообщение
#8
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 424 Пол: Мужской Репутация: ![]() ![]() ![]() |
извини багу нашел, ща правлю
Код (с) означает ( с )в моей проге цифры - не есть буквы в словах Сообщение отредактировано: arhimag - 3.01.2007 23:34 -------------------- Чего хочет женщина – того хочет Бог
|
Bokul |
![]()
Сообщение
#9
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: ![]() ![]() ![]() |
Цитата @-что означает?(dec©) Глюк форума - поставь dec и в дужках с dec( с ) - так только без пробелов. Цитата в моей проге цифры - не есть буквы в словах Глянь еще раз, я изменил на буквы. -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
arhimag |
![]()
Сообщение
#10
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 424 Пол: Мужской Репутация: ![]() ![]() ![]() |
Код program Project2; var s : string; var arr : array [1..256] of string; var c : integer; var slov : integer; function make_words(s:string):boolean; var i: integer; begin slov:=1; c:=1; make_words:=false; i:=1; while (i<=length(s)) and (s[i]=' ') do inc(i); while i<=length(s)do begin if (s[i]=' ') and (i<length(s)) and (s[i+1]=' ') then exit; if (s[i] in ['A'..'z']) then arr[c]:=arr[c]+s[i]; if (s[i]=' ') then begin inc(c); inc(slov); end; inc(i); end; if s[length(s)]=' ' then begin dec(c); dec(slov); end; make_words:=true; end; var flag : boolean; i : integer; tmp : string; begin readln(s); flag:=make_words(s); if (flag) and (c>1) then begin for i:= 1 to ((c)div 2) do begin tmp:=arr[i*2-1]; arr[i*2-1]:=arr[i*2]; arr[i*2]:=tmp; end; for i:=1 to c do write(arr[i],' '); writeln; writeln('slov:',slov); end else if (c=1) and (flag) then begin writeln(s); writeln(1); end else writeln('Strashnij error!!!'); readln; end. вот теперь все ок ![]() -------------------- Чего хочет женщина – того хочет Бог
|
Bokul |
![]()
Сообщение
#11
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: ![]() ![]() ![]() |
Ты еще одно условие забыл:
Цитата если перед первым словом пробел , или между словами более одного пробела, то выдается сообщение о ошибке и предлагается начать сначала ![]() -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
сНежная |
![]()
Сообщение
#12
|
Группа: Пользователи Сообщений: 5 Пол: Женский Репутация: ![]() ![]() ![]() |
Работает, но частично!Строка считывается, кол-во слов считается. Но мне нужно, чтобы после вывода на экран кол-ка слов была выведена строка, в которой были бы поменены местами слова из исходной строки. К примеру:
Цитата МАМА ПАПА Я слов:3 ПАПА МАМА Я Если слов больше, он меняет 1 со 2, 3 с 4, 5 с 6, и тд. |
Bokul |
![]()
Сообщение
#13
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: ![]() ![]() ![]() |
сНежная, а ты внимательно смотрела? Все работает, как ты описала.
![]() Сообщение отредактировано: Bokul - 3.01.2007 23:47 -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
arhimag |
![]()
Сообщение
#14
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 424 Пол: Мужской Репутация: ![]() ![]() ![]() |
черт
![]() Код program Videlenieslovzamenachetnogonanechetnoe; var s : string; var arr : array [1..256] of string; var c : integer; var slov : integer; function make_words(s:string):boolean; var i: integer; begin slov:=1; c:=1; make_words:=false; i:=1; while (i<=length(s)) and (s[i]=' ') do inc(i); while i<=length(s)do begin if (s[i]=' ') and (i<length(s)) and (s[i+1]=' ') then exit; if (s[i] in ['A'..'z']) then arr[c]:=arr[c]+s[i]; if (s[i]=' ') then begin inc(c); inc(slov); end; inc(i); end; if s[length(s)]=' ' then begin dec(c); dec(slov); end; make_words:=true; end; function doit : boolean; var flag : boolean; i : integer; tmp : string; begin doit:=false; readln(s); flag:=make_words(s); if (flag) and (c>1) then begin for i:= 1 to ((c)div 2) do begin tmp:=arr[i*2-1]; arr[i*2-1]:=arr[i*2]; arr[i*2]:=tmp; end; doit:=true; for i:=1 to c do write(arr[i],' '); writeln; writeln('slov:',slov); end else if (c=1) and (flag) then begin writeln(s); writeln(1); doit:=true; end else begin writeln('Strashnij error!!!'); exit; end; readln; end; var ch : char; i:integer; begin ch:=' '; repeat if not(doit) then begin writeln('Chtobi povtorit nazmi R i enter, chobi vijti nezmi E i enter'); readln(ch); for i:= 1 to 256 do arr[i]:=''; end else ch:='E'; until ch='E'; end. сНежная я сделал только для английских букв -------------------- Чего хочет женщина – того хочет Бог
|
сНежная |
![]()
Сообщение
#15
|
Группа: Пользователи Сообщений: 5 Пол: Женский Репутация: ![]() ![]() ![]() |
Работает! Огромное спасибо! Сейчас буду пытаться понять, как это сделано!
![]() |
klem4 |
![]()
Сообщение
#16
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
const max_words = 128; -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
arhimag |
![]()
Сообщение
#17
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 424 Пол: Мужской Репутация: ![]() ![]() ![]() |
klem4 , я не уверен что автор темы знает функции Copy, Delete, Pos и т.д.
-------------------- Чего хочет женщина – того хочет Бог
|
volvo |
![]()
Сообщение
#18
|
Гость ![]() |
Опять за флейм?
![]() |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 2:17 |