8 / 8 / 1
Регистрация: 23.09.2009
Сообщений: 134
1

Текст в Pacsal и посчитать пробелы

23.09.2009, 22:54. Показов 1997. Ответов 12
Метки нет (Все метки)

Хай всем. вобшем делаю лабу одно задание зделал а со вторым в тупик=(
Разделе: Сохранить текст в массиве и выполнить следуюшие алгоритмы
Задание: Определить максимальное число идущих подряд пробелов в тексте.

Напишите плиз программу...
То непонятно если вводить текст то надо string или char? и ещё если текст надо вводить в массив то наверное массив линейный и текст вводится в строчку? а вот пробелы это символы но как их посчитать(чтото типа m:array[1..n]; x:=1; for i:=1 to n do if m[i]={код из ascii соответствующий нулю 0} then x:=x+1; )

Добавлено через 1 минуту
неправдо!... я смайл не ставил... там должно быть ; )
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.09.2009, 22:54
Ответы с готовыми решениями:

Pacsal ABC
1.Написать программу, которая по номеру дня в году выводит число и месяц в общепринятой форме(33-й...

Отредактировать текст, удаляя из него лишние пробелы. Заключить весь текст в кавычки
Всем здравствуйте. Выручайте делаю лабораторные и вот такая задача: Отредактировать текст, удаляя...

Из файла прочитать текст и в этом тексте заменить все пробелы на _ и записать исправленный текст обратно
задача написать программу на assembler, под dos Нужно из файла прочитать текст и в этом тексте...

Задан текст величине s в нем кто-то сделал ошибки (вместо одного пробела вставил 2 пробелы) Приведите текст к порядку
Помогите! через pascal!

12
Почетный модератор
64238 / 47538 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
23.09.2009, 22:56 2
Цитата Сообщение от Sven_0007 Посмотреть сообщение
я смайл не ставил... там должно быть ; )
Не ставь эти 2 знака рядом, через пробел и не будет смайла.
0
8 / 8 / 1
Регистрация: 23.09.2009
Сообщений: 134
23.09.2009, 22:57  [ТС] 3
да эт понятно а что всётаки по поводу мыслей моих? то что в скобках...
0
Почетный модератор
64238 / 47538 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
23.09.2009, 23:08 4
Мысли твои сильно путанные, обратно пропорционально знаниям. Вот программа, вроде все просто, разбирайся. А писать текст удобнее строкой, хотя можно и символьным масивом. А задача не только на массивы или строки, но еще и на соображаловку.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
uses crt;
Var s: string;//текст
    j,i,len,max: integer;
Begin
clrscr;
write('s: ');
readln (s);
i:= 1;max:=0;
while i<=length (s) do//пока не конец строки
if s[i]=' ' then//если пробел
  begin
    j:= i+1;len:=0;//смотрим следующий символ, длина цепочки=0
    while (j<=length(s)) and (s[j]=' ') do inc (j);
//если идут пробелы и не конец строки, считаем
    len:=j-i;//кончились, считаем длину цепочки
    if len>max then max:=len;//если больше пред. макс., это макс.
    i:=j+1;//перепрыгиваем через пробелы и продолжаем
  end
else inc (i);
writeln('Max dlina serii=',max);
readln;
end.
1
8 / 8 / 1
Регистрация: 23.09.2009
Сообщений: 134
23.09.2009, 23:55  [ТС] 5
я с программой разобрался и вопрос такой: в 20 строчке стоит i:=j+1;, но если зделать i:=j; вроде нет некакой раздницы? или я чтото непонял?

Добавлено через 2 минуты
и ещё вопрос а разве так можно? в лабе написано сохранить текст в массиве а тут строка...(конечно может быть текст стал оля масив, тоесть каждый символ стал иметь свою клатку)
0
3067 / 727 / 69
Регистрация: 24.09.2008
Сообщений: 1,531
24.09.2009, 00:04 6
вообще-то текст в паскале и есть массив символов, почитайте литературу .
0
Почетный модератор
64238 / 47538 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
24.09.2009, 07:32 7
Цитата Сообщение от Sven_0007 Посмотреть сообщение
но если зделать i:=j; вроде нет некакой раздницы? или я чтото непонял?
Вы правильно поняли, это я переделывал из другой программы и не поправил. Нужно так.
Pascal
1
j:= i;len:=1;
А насчет сохранения текста в массиве, то я не понял, откуда берется текст? Может из файла?
Вот Ваше задание
Разделе: Сохранить текст в массиве и выполнить следуюшие алгоритмы
Задание: Определить максимальное число идущих подряд пробелов в тексте.
Поскольку что такое "разделе" я не знаю, то написал алгоритм для второй части. Напишите условие полностью и точно, переделаем, нет проблем, в данном случае что string, что array[] of char без разницы, алгоритм абсолютно тот же.

Добавлено через 34 минуты
Вот тоже через массив.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
uses crt;
Var s:array[1..1000] of char;
    n,j,i,len,max: integer;
    c:char;
Begin
clrscr;
writeln('Vvedite text:');
n:=0;
repeat
c:=readkey;
write(c);
n:=n+1;
s[n]:=c;
until c=#13;
for i:=1 to n do
write(s[i]);
writeln;
i:= 1;max:=0;
while i<=n do
if s[i]=' ' then
  begin
    j:= i;len:=1;
    while (j<=n) and (s[j]=' ') do inc (j);
    len:=j-i;
    if len>max then max:=len;
    i:=j+1;
  end
else inc (i);
writeln('Max dlina serii=',max);
readln;
end.
1
8 / 8 / 1
Регистрация: 23.09.2009
Сообщений: 134
24.09.2009, 10:01  [ТС] 8
Цитата Сообщение от Puporev Посмотреть сообщение
until c=#13;
а вот это значение в 8чной системе?
0
Почетный модератор
64238 / 47538 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
24.09.2009, 10:06 9
а вот это значение в 8чной системе?
А для чего? Если надо переведите сами 13 в восьмеричную, будет 15.
0
8 / 8 / 1
Регистрация: 23.09.2009
Сообщений: 134
24.09.2009, 10:11  [ТС] 10
И кстати вот знакомая пишет тоже прогу по лабе и у ней задание: максимальное число в строчке массива записать в последнию. вот примерно что должно быть:
23 5 47
2 5 8
34 56 81

И вот что она зделала только непонятно что неправильно некак незамозгуем=(
Прога делает что от ней требуется в 1 и 2 строках а в 3 и 4 неделает почему?
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
[23.09.2009 21:07:06] Катерина: Program mas_3;
 uses crt;
const n=5;
var a:array[1..n,1..n] of integer;
    i,j,max:integer;
begin
  randomize;
  for i:=1 to n do
  for j:=1 to n do
   begin
    a[i,j]:=random(9)+1;
    gotoxy(i*2,j);
    write(a[i,j]);
   end;
  writeln;
  max:=a[1,1];
  i:=1;
 Repeat
 begin
   for j:=1 to n do
   if max<a[i,j] then
    begin
   max:=a[i,j];
     max:=a[i,n];
     inc(i);
      end;
     until i>=n;
     end;
 for i:=1 to n do
     begin
      for j:=1 to n do
      write(a[i,j]:5);
      writeln;
      end;
end.
Добавлено через 4 минуты
Цитата Сообщение от Puporev Посмотреть сообщение
А для чего? Если надо переведите сами 13 в восьмеричную, будет 15.
я не в том смысле что бы перевести в 8чную или 10чную, а я непонял, что это такое?
0
Почетный модератор
64238 / 47538 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
24.09.2009, 10:17 11
Круто! Это код клавиши Enter. Написано же в проге Окончание ввода Enter, трудно додуть?
Кстати прога вашей знакомой вообще ничего не выдает, она просто не работает, там ошибка. Когда поправил, там вообще чушь выдает. Напиши нормально задание, куда поставить макс. элемент, в дополнительный столбец, поменять с последним, или просто сдублировать его в последнем столбце. Пообедаю, если нормальное задание будет, напишу.
0
8 / 8 / 1
Регистрация: 23.09.2009
Сообщений: 134
24.09.2009, 13:38  [ТС] 12
Цитата Сообщение от Puporev Посмотреть сообщение
Круто! Это код клавиши Enter. Написано же в проге Окончание ввода Enter, трудно додуть?
значит #13 это клавиша enter?


Цитата Сообщение от Puporev Посмотреть сообщение
Напиши нормально задание, куда поставить макс. элемент, в дополнительный столбец, поменять с последним, или просто сдублировать его в последнем столбце. Пообедаю, если нормальное задание будет, напишу.
в каждой строке определить максимальный элемент и поменять его с последним элементом строки.
0
Почетный модератор
64238 / 47538 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
24.09.2009, 14:13 13
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
uses crt;
const n=5;
var a:array[1..n,1..n] of integer;
    i,j,max,jmx,b:integer;
begin
clrscr;
randomize;
writeln('Исходная матрица:');
for i:=1 to n do
 begin
  for j:=1 to n do
   begin
    a[i,j]:=random(20)+1;
    write(a[i,j]:5);
   end;
  writeln;
 end;
for i:=1 to n do
 begin
  max:=a[i,1];jmx:=1;
  for j:=1 to n do
  if max<a[i,j] then
    begin
     max:=a[i,j];
     jmx:=j;
    end;
  b:=a[i,jmx];
  a[i,jmx]:=a[i,n];
  a[i,n]:=b;
 end;
writeln('Результат:');
for i:=1 to n do
 begin
  for j:=1 to n do
  write(a[i,j]:5);
  writeln;
 end;
readln
end.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.09.2009, 14:13
Помогаю со студенческими работами здесь

Посчитать пробелы в строке
#include&quot;Classes.h&quot; int main() { setlocale(LC_ALL,&quot;russian&quot;); cout &lt;&lt; &quot;Welcome to II...

Посчитать пробелы в строке
Ребята можете написать задачу? просто нужно ввести строку пользователю с клавы а программа должна...

Посчитать пробелы в файле
Напишите программу которая посчитает пробелы в файле с текстом. (текст уже в файле)

Посчитать пробелы и переставить в начало
Программа должна считать количество пробелов и переставлять их в начало строки. Не могу понять,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru