Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 30.10.2009, 21:09   #1
agunek
Новичок
Джуниор
 
Регистрация: 30.10.2009
Сообщений: 5
По умолчанию Ребят найдите ошибку!

вот условие задачи : Определить какой процент слов в тексте начинаются и заканчиваются введенной буквой.

вот мое решение

Код:
program zadacha2v10;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var s:string;
     c,x,a,i:integer;
     b:char;
begin
write('vvedi tekst:');
readln(s);
write('vvedi bykvy');
readln(b);
a:=0;
x:=0;
begin
for i:=1 to length(s) do
if (s[i+1]=' ') then
a:=a+1;
end;
begin
if (copy(s, 1, 1) = b) and (copy(s, length(s), 1) = b) then
x:=x+1;
end;
c:= x/a*100;
writeln('Procent sovpadenia = ',c'%');
readln;
end.
в чем я тут ошибся?!
Замечание модератора: Используйте тег [CODE]

Последний раз редактировалось Rembo; 31.10.2009 в 18:01.
agunek вне форума
Старый 30.10.2009, 21:14   #2
LeBron
Форумчанин
 
Регистрация: 10.10.2009
Сообщений: 680
По умолчанию

copy - процедура. А не функция. Это раз. Не понимаю, зачем розставлены операторны скобки - это два. Идет просмотр текста без выделения слова вообще - это три. В общем, надо много переделать Вернее не много в плане кода, но много в плане алгоритма. Заведите дополнительную строку, копируйте в нее слово и работайте с ним
Код:
slovo:=copy(s,poziciya_s_kotoroy_nachinayetsya_slovo,dlina_clova);
LeBron вне форума
Старый 30.10.2009, 21:16   #3
LeBron
Форумчанин
 
Регистрация: 10.10.2009
Сообщений: 680
По умолчанию

Еще вариант - сразу в строке сравнивайте. Для слова запоминайте номера символов начала и конца (первый будет сразу после пробела перед словом, второй - перед пробелом после слова) и сравнивайте их.
LeBron вне форума
Старый 30.10.2009, 21:32   #4
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
copy - процедура. А не функция.
Вообще-то наоборот.
Функция - то, что возвращает результат.
Процедура - выполняет ряд операторов, не возвращая конкретного результата.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума
Старый 30.10.2009, 21:49   #5
LeBron
Форумчанин
 
Регистрация: 10.10.2009
Сообщений: 680
По умолчанию

Цитата:
Сообщение от Alex Cones Посмотреть сообщение
Вообще-то наоборот.
Функция - то, что возвращает результат.
Процедура - выполняет ряд операторов, не возвращая конкретного результата.
Верно. Согласен. Как раз в этом месте все хорошо.
agunek, из опечаток -
Код:
writeln('Procent sovpadenia = ',c'%');
- нету одной запятой.
LeBron вне форума
Старый 30.10.2009, 22:05   #6
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Код:
Var
 SL: Array[0..128] of String;
 S:String;
 b:Char;
 I,J,A:Integer;
Begin
 Write('Enter string:');ReadLn(S);
 Write('Enter letter:');ReadLn(b);
 J:=0;
 I:=2; 
 While S<>'' do
  Begin
   If S[I] = ' ' Then 
    Begin
     SL[J]:=Copy(S,1,I);
     Delete(S,1,I);
     I:=1;
     Inc(J);
    End
  Else
   Inc(I);
 For I:=0 to J do
  If (SL[I,1]=SL[I,Length(SL[I]) And (SL[I,1] = b) Then Inc(A);
 Writeln('Percent of special words:',100*A/J:8:4,'%');
 ReadLn;
End;
Как то так, не проверял, писал здесь...

P.S. Раз пишете в Delphi, то можете использовать динамические массивы...
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума
Старый 30.10.2009, 22:55   #7
agunek
Новичок
Джуниор
 
Регистрация: 30.10.2009
Сообщений: 5
По умолчанию

Код:
program zadacha2v10;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var t:string;
     x,a,i:integer;
     s : array[1..256] of string;
     b:char;
     c:real;
begin
write('vvedi tekst:');
readln(t);
write('vvedi bykvy');
readln(b);
a:=1;
x:=0;
begin
for i:=1 to length(t) do
if copy(t, i, 1) <> ' ' then
s[a]:= copy(t, i, 1)
else
a := a + 1;
end;
begin
for i := 1 to a do
if (copy(s[i],1, 1) = b) and (copy(s[i], length(s[i])
, 1) = b) then
x:=x+1;
end;
c:=(x/a)*100;
writeln('Procent sovpadenia = ',c,'%');
readln;
end.

вот мой конечный вариант...все вроде работает..но что с ответом???!сделать чтобы выводило нормально??!
Замечание модератора: Используйте тег [CODE]

Последний раз редактировалось Rembo; 31.10.2009 в 18:01.
agunek вне форума
Старый 31.10.2009, 13:48   #8
k1r1ch
ACM!
Форумчанин
 
Аватар для k1r1ch
 
Регистрация: 19.06.2009
Сообщений: 382
По умолчанию

Может так:
Код:
writeln('Procent sovpadenia = ',c:5:2,'%');
k1r1ch вне форума
Старый 31.10.2009, 16:24   #9
agunek
Новичок
Джуниор
 
Регистрация: 30.10.2009
Сообщений: 5
По умолчанию

да спасибо работает хорошо)))
agunek вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найдите ошибку MaJlbBuHa Паскаль, Turbo Pascal, PascalABC.NET 2 20.10.2009 23:26
Найдите ошибку St1fler92 Помощь студентам 4 26.05.2009 15:23
найдите ошибку Сова Паскаль, Turbo Pascal, PascalABC.NET 9 11.02.2009 18:46
Найдите ошибку! geniy JavaScript, Ajax 4 04.12.2007 16:22