Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Составить программу, которая выделяет отдельные слова и числа (http://www.tehnari.ru/f41/t81052/)

Night_Rain 25.11.2012 15:39

Составить программу, которая выделяет отдельные слова и числа
 
Составить программу, которая выделяет отдельные слова и числа из введенной пользователем строки. Словом считается последовательность букв, разделяемых одним или несколькими пробелами или знаками препинания. Числом считается последовательность цифр, разделяемых одним или несколькими пробелами, которая может включать точку в качестве разделителя целой и дробной части и знак минус, стоящий в начале.
Слова поместить в массив слов, числа поместить массив чисел. Найти в массивах самое короткое слово и минимальное число.
Вывести на экран слова в столбик. Например, если исходная строка ’Длина пути равна 1 метр.’, то на экран будет выведено:
Д п р м
л у а е
и т в т
н и н р
а а

Спасибо

Vladimir_S 25.11.2012 17:14

Главное - продолжайте хранить великую тайну языка программирования, на котором должно быть выполнено задание. И ни-ко-му, даже под пытками. Особенно нам!

Night_Rain 25.11.2012 17:46

Извините пожалуйста.
Pascal

Vladimir_S 25.11.2012 18:53

Вложений: 1
Цитата:

Сообщение от Night_Rain (Сообщение 824076)
Извините пожалуйста.
Pascal

Тогда получите:
Код:

Var
 S:String;
 W,Wrd:Array[1..100] of String;
 M:Array[1..100,1..100] of Char;
 Num:Array[1..100] of Real;
 i,j,Nw,Lmax,Nnumb,Nword,Shrt_W_Num,Min_Num:Byte;
 Code:Integer;
 R:Real;

Begin 
 Writeln('Enter the string:');
 Readln(S);
 Nw:=1;
 i:=0;
 W[Nw]:='';
 Repeat
  Inc(i);
  If (S[i]<>' ') and (i<=Length(S)) then
  W[Nw]:=W[Nw]+S[i]
  else
  If S[i]=' ' then
  begin
    repeat
    Inc(i);
    until S[i]<>' ';
    Dec(i);
    Inc(Nw);
    W[Nw]:='';
  end;
 Until i>Length(S);

 Nword:=0;
 Nnumb:=0;
 For i:=1 to Nw do
  begin
  VAL(W[i],R,Code);
  if Code=0 then
    begin
    Inc(Nnumb);
    Num[Nnumb]:=R;
    end
  else
    begin
    Inc(Nword);
    Wrd[Nword]:=W[i];
    end;
  end;

 Writeln;
 Writeln('Array of words:');
 Write(Wrd[1]);
 For i:=2 to Nword do Write(' '+Wrd[i]);
 Writeln;
 Writeln;

 Writeln('Array of numbers:');
 Write(Num[1]:0:3);
 For i:=2 to Nnumb do Write(' ',Num[i]:0:3);
 Writeln;
 Writeln;

 Lmax:=Length(Wrd[1]);
 Shrt_W_Num:=1;
 For i:=2 to Nword do
  begin
  if Length(Wrd[i])>Lmax then Lmax:=Length(Wrd[i]);
  if Length(Wrd[i])<Length(Wrd[Shrt_W_Num]) then Shrt_W_Num:=i;
  end;

 Min_Num:=1;
 For i:=2 to Nnumb do
  If Num[i]<Num[Min_Num] then Min_Num:=i;

 Writeln('Shortest word is "'+Wrd[Shrt_W_Num]+'";  Minimal number is ',Num[Min_Num]:0:3);

 Writeln;
 For i:=1 to Nword do
  For j:=1 to Lmax do
  M[i,j]:=' ';

 For j:=1 to Nword do
  For i:=1 to Length(Wrd[j]) do
  M[i,j]:=Wrd[j][i];

 For i:=1 to Nword do
  begin
  For j:=1 to Lmax do
    Write(M[i,j]+' ');
  Writeln;
  end;

 Readln;

End.


Night_Rain 25.11.2012 22:56

Вложений: 1
Такая штука при вводе предложения или какого-нибудь значения

Léon 26.11.2012 06:16

Владимир писал прогу на Free Pascal. И она работает. А у вас PascalABC.

Vladimir_S 26.11.2012 12:01

Цитата:

Сообщение от 11Angelav (Сообщение 824398)
Владимир писал прогу на Free Pascal. И она работает. А у вас PascalABC.

Да уж. Вообще при упоминании этого глючного недоразумения по имени PascalABC во мне пробуждается зверь, рычащий с использованием ненормативной лексики.
Night_Rain, попробуйте так. Введите дополнительную переменную
blablabla:Char;
и перед КАЖДОЙ манипуляцией с элементами строк (то, что у меня S[i], Wrd[j][i] и т.д.) вставьте строки типа
blablabla:=S[i];
blablabla:=Wdr[j][i];
и т.п., и дальше работайте с переменной blablabla. Авось так не подавится.


Часовой пояс GMT +4, время: 23:01.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.