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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.04.2011, 19:17   #1
Noname11
 
Регистрация: 21.03.2011
Сообщений: 8
Вопрос String.

Дана строка из слов (слово - строка, не содержащая пробелов).
Вывести слова в следующем виде:
- солова на экране расположены в столбик;
- каждое слово начинается с большой буквы;
- буквы в слове разделены дефисами (чёртачками);
- после слова поставлен знак ! ;

Вот мой иск.код по этой задачке.
Код:
program Project5;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type massi=array[1..200] of string;

var
a:massi;
n,i,j:integer;
s:string;
procedure perevod(var a:massi);
var
i,k,j:integer;
begin
  while s[1]=' ' do delete(s,1,1);
   while s[Length(s)]=' ' do delete(s,Length(s),1);
   while pos('  ',s)<>0 do Delete(s,Pos('  ',s),1) ;
  k:=1;
  a[k]:='';
    for i:=1 to length(s)+1 do
      if (s[i]<>' ') and (i<>length(s)+1) then
                          a[k]:=a[k]+s[i] else

                                        begin
                                            inc(k);
                                            a[k]:='';
                                        end;
n:=k-1;
end;

begin
Writeln('Please write');
readln(s);
perevod(a);
for i:=1 to n do
  begin
    write(UpCase(a[i][1]));
  for j:=2 to length(a[i]) do
     write('-',a[i][j]);
  writeln('!');
  end;
readln;
end.
Да она работает, отладил как смог. Но мне сказали что она не коректна в основной программе.
Должно получатся что то вроде
Код:
program Project5;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type massi=array[1..200] of string;

var
a:massi;
n,i,j:integer;
s,jo:string;
procedure perevod(var a:massi);
var
i,k,j:integer;
begin
  while s[1]=' ' do delete(s,1,1);
   while s[Length(s)]=' ' do delete(s,Length(s),1);
   while pos('  ',s)<>0 do Delete(s,Pos('  ',s),1) ;
  k:=1;
  a[k]:='';
    for i:=1 to length(s)+1 do
      if (s[i]<>' ') and (i<>length(s)+1) then
                          a[k]:=a[k]+s[i] else

                                        begin
                                            inc(k);
                                            a[k]:='';
                                        end;
n:=k-1;
end;

begin
Writeln('Please write');
readln(s);
perevod(a);
for i:=1 to n do
  begin
    a[i,1]:=(UpCase(a[i][1]));
  for j:=2 and length(a[i])  do
  begin
     insert('-',a[i+2],j+1);
     a[i]:=a[i]+' !';
     writeln(a[i]);
  end;
  end;
Writeln('Please <Enter> for exit');
readln;
end.
Но тут получается что цикл for перестаёт работать...
помогите отладить прогу так чтобы всё корректно работало и соответствовало параметрам задачи.
Noname11 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
string (c++) jambas92 Помощь студентам 5 18.10.2010 16:44
String большого размера, более 255 String[255] bitSoft Общие вопросы Delphi 9 28.03.2010 19:45
Как получить адрес String строки или преобразовать String madboy4ik Общие вопросы по Java, Java SE, Kotlin 6 15.01.2010 11:57
String t@t@rin Помощь студентам 3 09.11.2009 20:46
string и String ds.Dante Общие вопросы .NET 1 24.08.2009 13:26