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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.02.2009, 21:14   #1
andrey2
 
Аватар для andrey2
 
Регистрация: 08.02.2009
Сообщений: 4
Смех Free Pascal задачи на строки

может кто знает как решить
16) Вывести на экран букву, которая встречается чаще всего.
9) Вывести на экран кратчайшее слово в тексте.
andrey2 вне форума Ответить с цитированием
Старый 10.02.2009, 21:23   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Первая:
Заводите массив из 255 элементов (integer, например). Индекс - код символа. Проходите по строке посимвольно, увеличивая значение элемента с индексом, равным коду текущего символа.
Потом ищете максимум в массиве и выводите символ с кодом, равным индексу максимума.
Это один из вариантов.

Вторая:
Есть 3 строки: исходная, буфер (куда будем считывать) и "слово с минимальной длиной" (wrd). Считываете очередное слово в буфер, сравниваете его длину с длиной wrd. Если длина меньше, то wrd становится равным слову из буфера.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 10.02.2009, 21:28   #3
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

1)
Код:
program project;
var
 a : array ['A'..'Z'] of byte;
 s : string;
 c,x : char;
 i: byte;

begin
  write ('s: '); readln (s);
  for c:='A' to 'Z' do a[c]:=0;
  for i:=1 to length(s) do
   if s[i] in ['A'..'Z','a'..'z'] then
    for c:='A' to 'Z' do
     if upcase(s[i])=c then
     begin
       inc(a[c]);
       break
     end;
  x:='A';
  for c:='A' to 'Z' do
   if a[c]>a[x] then x:=c;

  if a[x]=0 then writeln ('Bukv net')
  else
  begin
    for c:='A' to 'Z' do
     if a[c]=a[x] then writeln(c)
  end;
  readln
end.

Последний раз редактировалось capta1n; 10.02.2009 в 21:33.
capta1n вне форума Ответить с цитированием
Старый 10.02.2009, 22:04   #4
andrey2
 
Аватар для andrey2
 
Регистрация: 08.02.2009
Сообщений: 4
По умолчанию

помогите подправить 2 задачу
program a1;
var str:string;
slovo,slovomin:string;
i:integer;
begin
write('vvestu text: ');
readln(str);
for i:=1 to length(str) do
if str[i]<>' ' then
begin
slovo:='';
while (str[i]<>' ') do
begin
slovo:=slovo+str[i];
if (i=length(str)) then
break;
i:=i+1;
end;
if length(slovo)>length(slovomin) then
slovomin:=slovo;
end;
write('slovo min : ',slovomin);
readln;
end.
andrey2 вне форума Ответить с цитированием
Старый 10.02.2009, 22:16   #5
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

В цикле for нельзя изменять значение счетчика, поэтому нужно использовать while.
Цитата:
if length(slovo)>length(slovomin) then
Раз мы ищем слово с минимальной длиной, то, все-таки, надо писать
Цитата:
if length(slovo)<length(slovomin) then
и добавить проверку на пустоту минимального слова (ведь изначально оно пустое)
А у вас переменная slovomin вообще не инициализирована.

Исправлено:
Код:
program a1;
uses crt;
var str:string;
slovo,slovomin:string;
i:integer;
begin
clrscr;
write('vvestu text: ');
readln(str);
i:=1;
slovomin:='';

while i<=length(str) do
 begin
 if str[i]<>' ' then
  begin
  slovo:='';
  while (str[i]<>' ') do
   begin
   slovo:=slovo+str[i];
   if (i=length(str)) then
     break;
   i:=i+1;
   end;
   if slovomin = '' then slovomin := slovo;
   if length(slovo)<length(slovomin) then
    slovomin:=slovo;
  end;
 inc(i);
 end;
write('slovo min : ',slovomin);
readln;
end.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 10.02.2009, 22:26   #6
andrey2
 
Аватар для andrey2
 
Регистрация: 08.02.2009
Сообщений: 4
По умолчанию

спасибо за помощь
andrey2 вне форума Ответить с цитированием
Старый 10.02.2009, 22:38   #7
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

2)
Код:
program x1;
var
 s,s1 : string;
 min : byte;
 c : char;
begin
 s1:='';
 s:='';
 min:=255;
 writeln ('For exit press the button <Enter>');
 while true do
 begin
   read (c);
   if (c=#13) or (c=' ') then
   begin
     if length(s)<min then
     begin
       min:=length(s);
       s1:=s
     end;
     if c=#13 then
     begin
       readln;
       break
     end
     else
     begin
       s:='';
       continue
     end
   end
   else s:=s+c
 end;

 writeln (s1);
 readln
end.
capta1n вне форума Ответить с цитированием
Старый 25.12.2011, 13:01   #8
Дениска о_О
Новичок
Джуниор
 
Регистрация: 25.12.2011
Сообщений: 2
По умолчанию

помогите решить задачу.
тема у нас циклические алгоритмические конструкции.оператор цикла с параметром))
Вот задача:
вычислить среди чисел от 1 од 5 произведение всех чисел)
Дениска о_О вне форума Ответить с цитированием
Старый 25.12.2011, 13:03   #9
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Код:
var i,p:integer;
begin
p:=1;
for i:=2 to 5 do
p:=p*i;
writeln(p);
end.
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"

Последний раз редактировалось Mad_Cat; 25.12.2011 в 16:45.
Mad_Cat вне форума Ответить с цитированием
Старый 25.12.2011, 16:31   #10
Дениска о_О
Новичок
Джуниор
 
Регистрация: 25.12.2011
Сообщений: 2
По умолчанию

А полностью???
Дениска о_О вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строки и Массивы. Pascal. 4 задачи Naper214 Помощь студентам 11 28.12.2008 13:51
Прошу помощи в решении задачи на языке Free Pascal Refenement Помощь студентам 7 21.12.2008 15:27
Free pascal Иллидан Свободное общение 5 17.04.2008 12:22
Free Pascal(2.0.4) ошибка: Error while linking Акашаев Нурлан Паскаль, Turbo Pascal, PascalABC.NET 2 04.08.2007 10:10