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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.01.2012, 15:08   #1
Димарик1994
Новичок
Джуниор
 
Регистрация: 06.01.2012
Сообщений: 3
Восклицание Программеры нужно найти ошибки в программе по типу (строки)

Задание:
Подсчитать, сколько слов во фразе «Изучение алгоритма позволяет представить микропроцессорное устройство» начинается на одну и ту же букву. Если количество слов четное, то расположить слова из исходной фразы в порядке увеличения длины слов.

А вот что у меня вышло, но она работает как-то не так(((
program Zadanie;
uses CRT;
Var s,s1,v:string;
a: array[1..8] of string;
j,n,i,k,m,m1,p,t:integer;
Begin
CLRSCR;
s:='иучение алгоритма позволяет представить микропроцессорное устройство ';
writeln(s);
s1:=s;
n:=length(s);
i:=1;
t:=0;
Repeat k:=1;
m:=length(s);
p:=pos(' ',s);
if (p<>0) then begin v:=copy(s,k,p-1);
delete(s,k,p); {write(s);}
end
else v:=copy(s,k,m);
a[i]:=v;
i:=i+1;
t:=t+1;
until p=0; writeln; m1:=0;
for j:=1 to i do begin
writeln(a[j]);
if copy(a[j],1,1)=copy(a[j],length(a[j]),1) then m1:=m1+1; end; writeln(m1:2);
if (m1 mod 2=0) then
for i:=1 to t-1 do
for k:=i+1 to t do
if length(a[i])>length(a[k]) then
begin
s1:=a[i];
a[i]:=a[k];
a[k]:=s1;
end;
writeln('Слова в порядке увеличения их длины');
for i:=1 to t do
writeln(a[i]);
end.
Димарик1994 вне форума Ответить с цитированием
Старый 08.01.2012, 16:15   #2
Ponkole
Форумчанин
 
Регистрация: 02.07.2010
Сообщений: 167
По умолчанию

1) Вы написали
Цитата:
сколько слов во фразе ... начинается на одну и ту же букву
а Вы в строках
Код:
for j:=1 to i do begin
writeln(a[j]);
if copy(a[j],1,1)=copy(a[j],length(a[j]),1) then m1:=m1+1; end;
ищите количество слов, заканчивающихся и начинающихся с одной и той же буквы
2) в цикле
Код:
for j:=1 to i do begin
writeln(a[j]);
if copy(a[j],1,1)=copy(a[j],length(a[j]),1) then m1:=m1+1; end;
вмечто переменной i используйте переменную t
3) присваивание
Код:
s1:=s;
лишнее, так как после него вы присваиваете еще раз (или вообще не используете переменную)
4) при выводе строк разделяйте слова пробелами
Код:
for i:=1 to t do
writeln(a[i], ' ');
Если я тебе помог, помоги и ты мне +ом с комментарием
Ponkole вне форума Ответить с цитированием
Старый 08.01.2012, 17:51   #3
Димарик1994
Новичок
Джуниор
 
Регистрация: 06.01.2012
Сообщений: 3
По умолчанию

Конечно все здорово, ну я что-то чуть-чуть не понял(((
Димарик1994 вне форума Ответить с цитированием
Старый 08.01.2012, 18:20   #4
Ester
Пользователь
 
Регистрация: 04.12.2011
Сообщений: 14
По умолчанию

у меня вот задача как эта,только мне просто слова по возрастанию вывести...писала как в проге выше а в массиве слова так же как в исходной строке(
Ester вне форума Ответить с цитированием
Старый 08.01.2012, 18:36   #5
Ponkole
Форумчанин
 
Регистрация: 02.07.2010
Сообщений: 167
По умолчанию

Цитата:
Сообщение от Димарик1994 Посмотреть сообщение
Конечно все здорово, ну я что-то чуть-чуть не понял(((
Скажи что именно я подробно объяснил
Если я тебе помог, помоги и ты мне +ом с комментарием
Ponkole вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
найти ошибки в программе (язык C) nuvoletta Помощь студентам 3 29.11.2011 21:21
найти ошибки в программе IceFlame1292 Помощь студентам 2 09.01.2011 21:55
Список в Прологе, нужно исправить ошибки в программе Roxanne Помощь студентам 0 16.07.2010 07:42
строки, найти ошибки нужно=) Dareami Общие вопросы C/C++ 7 20.04.2010 00:49
Помогите пож найти ошибки в программе и дописать ее до конца rm2003 Помощь студентам 1 02.10.2008 21:24