Задачи со строками
|
|
симметричные имеется ввиду слова-палиндромы? Добавлено (27.10.10, 20:05) --------------------------------------------- если честно мало что понятно из кода но алгоритм должен быть примерно такой: 1. пишем процедуру для получения слов - от пробела до пробела (если может вариант нескольких пробелом между словами, или пробело вначале и в кноце строки, то сначала удаляем лишние) 2. выделяем помледнее слово и сохраняем в какую то переменную. 3. берем каждое слово, сравниваем его с последним, если они не равны запускаем процедуру сравнения на палиндром. проверять на палиндром можно находя середину слова - для нечетного количества букв в слова находим среднюю букву [i], а потом сравниваем попарно буквы с индексами i+1 i-1; i+2 i-2... - в палиднроме они попарно равны. для четного количества букв находим условную середину, берем целую часть от неё и проверяем бюуквы с индексами i i+1; i-1 i+2; i-2, i+3...
If you can't make it GOOD make it LOOK GOOD. B.Gates
|
|
|
Уууу...что-то ты начудил в своём коде..:) Держи: var a,b:string; i,j:byte;n:char; begin readln(a); for i:=1 to length(a) do if (a[i]>chr(48)) and (a[i]<chr(57)) then b:=b+a[i]; for i:=1 to length(b) do for j:=1 to length(b)-1 do if b[j]>b[j+1] then begin n:=b[j+1];b[j+1]:=b[j];b[j]:=n;end; writeln(b); end. "Спасибо" принимается повышением репутации ( Зелёный плюсик:) ). Спасибо
Нужна помощь? Сюда: vkontakte.ru/berestovskiy
№ 22 | Автор: Berestovskiy |
2011-05-28, 00:45 | Изменено: Berestovskiy - Вт, 2011-04-26, 02:14
|
Репутация: [ + 211 ]
|
|
Нужна помощь? Сюда: vkontakte.ru/berestovskiy
№ 22 | Автор: Berestovskiy |
2011-05-28, 00:45 | Изменено: Berestovskiy - Вт, 2011-04-26, 02:14
|
Репутация: [ + 211 ]
|
|
|
Условие понятно, кроме одной строчки: Quote (clope) Если строка не удовлетворяет условию, выдать сообщение. что это означает?
Нужна помощь? Сюда: vkontakte.ru/berestovskiy
|
|
|
сейчас проблема с выделением слов, он выделяет только одно слово, как вызвать процедуру так чтобы он шел дальше по послндовательности?
|
|
|
Quote (Berestovskiy) что это означает? типичный еррор, write('Ворнинг! Данная строка не удовлетворяет условиям!');
Меня все время преследуют умные мысли... но я быстрее!!!
|
|
|
Quote (guru) типичный еррор, write('Ворнинг! Данная строка не удовлетворяет условиям!'); вопрос в том когда такое предупреждение вызвать) судя по всему под условием подразумевается длинна строки, если длинна веденной строки определяется после чтения. максимальную (или минимальную) длину можем или считать или в программе жестко указать. Code CONST minLenth = 5; maxLength = 15; function lengthValid (s: string): boolean; begin if ( (length(s)>=minLength) and (length(s)<=maxLength) ) then result:=true else result:=false; end; потов в программе просто вызываем Code if lengthValid(s) then begin // код программы end;
If you can't make it GOOD make it LOOK GOOD. B.Gates
|
|
|
омг) ну понятно что длинна строки не указывается, её length(a)`om определяешь и всё... всё равно не понял я что-то))
Нужна помощь? Сюда: vkontakte.ru/berestovskiy
|
|
|
Помогите сделать прогу, смысл которой: Я ввожу предложение, например: мама мыла раму жму enter ввожу число, допустим 3 прога выводит третье слово: раму соответственно, если ввожу 2 прога выводит слово, второе, соответственно: мыла количество пробелов не должно влиять на результат, слов может быть много.
за неделю мне удалось только неработающее это uses crt; var s,str,temp:string; n,x,i,j,o,p,q,c:integer; a:array[1..250] of integer; b:array[1..250] of integer; p1,p2,p3,p4,p5,p6,p7,p8,p9,p10:integer; begin clrscr; s:='a bs csd dsdf esdfg'; writeln(s); o:=length(s);
for i:=1 to o do begin if (s[i]=' ') then a[i]:=i; end; for i:=1 to o do for j:=1 to o do begin if a[i]>0 then begin for j:=0 to o do b[j]:=i; write(b[j]); end; {write(a[j]); }
b[1]:=p1; b[2]:=p2; b[3]:=p3; b[4]:=p4; b[5]:=p5; b[6]:=p6; b[7]:=p7; b[8]:=p8; b[9]:=p9; b[10]:=p10;
begin {writeln('vvedi nomer slova'); readln©; } if c=1 then for j:=p1 to p2 do writeln(s[j]);
if c=2 then for j:=p2 to p3 do writeln(s[j]);
if c=3 then for j:=p3 to p4 do writeln(s[j]);
if c=4 then for j:=p4 to p5 do writeln(s[j]);
if c=5 then for j:=p5 to p6 do writeln(s[j]);
if c=6 then for j:=p6 to p7 do writeln(s[j]);
if c=7 then for j:=p7 to p8 do writeln(s[j]);
if c=8 then for j:=p8 to p9 do writeln(s[j]); end; end; readkey; end.
заранее благодарю.
KING
|
|
|
program stroki; uses crt; var s,str,temp:string; n,x,i,j,o,p,q,c:integer; a:array[1..250] of integer; b:array[1..250] of integer; p1,p2,p3,p4,p5,p6,p7,p8,p9,p10:integer; begin clrscr; s:='a bs csd dsdf esdfg'; writeln(s); o:=length(s);
for i:=1 to o do begin if (s[i]=' ') then a[i]:=i; end; for i:=1 to o do for j:=1 to o do begin if a[i]>0 then begin for j:=0 to o do b[j]:=i; write(b[j]); end; write(a[j]); b[1]:=p1; b[2]:=p2; b[3]:=p3; b[4]:=p4; b[5]:=p5; b[6]:=p6; b[7]:=p7; b[8]:=p8; b[9]:=p9; b[10]:=p10;
begin writeln('vvedi nomer slova',c=); readln©;
if c=1 then for j:=p1 to p2 do writeln(s[j]);
if c=2 then for j:=p2 to p3 do writeln(s[j]);
if c=3 then for j:=p3 to p4 do writeln(s[j]);
if c=4 then for j:=p4 to p5 do writeln(s[j]);
if c=5 then for j:=p5 to p6 do writeln(s[j]);
if c=6 then for j:=p6 to p7 do writeln(s[j]);
if c=7 then for j:=p7 to p8 do writeln(s[j]);
if c=8 then for j:=p8 to p9 do writeln(s[j]); end; end; readkey; readln; end; end.
|
|
|
Псих Алгоритм нулевой..
Нужна помощь? Сюда: vkontakte.ru/berestovskiy
|
|
|
Здравствуйте уважаемые программисты! Задание:Дан текстовый файл. Найти самое длинное слово и слово с самым большим количеством слогов.
Есть такой код, но он не работаем. Помогите, пожалуйста, найти ошибку!
Code uses crt; var f:text; sum:char; s,maxsl,max,s1:string; m,maxs,d:integer;
function sloga(s1:string):integer; var i,k:integer; sl:string; begin k:=0; sl:='eyuioa'; for i:=1 to length(s1) do begin if pos(s1[i],sl)>0 then {ищет первое вхождение строки s1 в строку sl} k:=k+1; end; sloga:=k; end; begin clrscr; assign(f,'e:\file.txt'); reset(f); writeln('<<Содержимое файла>>'); while not eof(f) do begin readln(f,s1); writeln(s1); end; close(f); writeln(' '); d:=0; maxs:=0; assign(f,'e:\file.txt'); reset(f); while not eof(f) do if not eoln(f) then begin read(f,s); if d<length(s) then begin max:=s; d:=length(s); end; m:=sloga(s); if maxs<m then begin maxsl:=s; maxs:=m; end; end else readln(f); close(f); writeln('Максимум слогов в слове- ',maxsl); write('Самое длинное слово- ',max);
readln; end.
|
|
|
Быть может твой файл не находиться там где нужно?)
Нужна помощь? Сюда: vkontakte.ru/berestovskiy
|
|
|
Спасибо! Исправила имя файла, программа заработала. Но в ответе выдает не самое длинное слово, а самое длинное предложение. И не слово с самым большим кол-вом слогов, а также, самое длинное предложение. Из-за чего это может быть???Добавлено (07.05.12, 06:30) --------------------------------------------- Все, программу сделала.
|
|
|
"Спасибо" принимается в виде повышения репутации ( Зелёный плюсик:) ).
Если не сложно - выложи код сюда, вдруг кому-нибудь он поможет..
Нужна помощь? Сюда: vkontakte.ru/berestovskiy
|
|
|
Написать программу, которая считает число слов в предложении.
Нойнер
|
|
|
var s:string; q,i:byte; begin readln(s); for i:=1 to length(s) do if s[i]=' ' then q:=q+1; writeln(q); end.
"Спасибо" принимается в виде повышения репутации ( Зелёный плюсик:) ).Спасибо
Нужна помощь? Сюда: vkontakte.ru/berestovskiy
|
|
|
Дана строка символов, состоящая из прописных и строчных латинских букв, цифр от 0 до 9 и пробелов. Группы символов, разделенные пробелами (одним или несколькими) и не содержащих пробелов внутри себя, будем называть словами. Вывести на печать слова, являющиеся десятичными числами, в порядке убывания.
|
|
|
опрeдeлить кол-во слов во ввeдённой строкe, окaнчивaющихся нa aя словa рaздeлeны одиночными пробeлaми.
|
|
|
зaмeнить во ввeдёной строкe имя коля нa толя.словa рaздeлeны одиночными пробeлaми.
|
|
|
Пример ввода-вывода
Нужна помощь? Сюда: vkontakte.ru/berestovskiy
|
|
|