![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Lesnik |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 23 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вводится строка из слов, разделённых пробелами или запятыми.
Разбить строку на слова и вывести их на экран в алфовитном порядке. Просмотрел в FAQ методы сортировок и не совсем понял какая нужна. Надо делать без функций и процедур. Программа должна быть без лишних наворотов. Тому, кто поможет, скажу ОГРОМНОЕ спасибо и буду ставить + в репутацию до конца недели ![]() |
![]() ![]() |
мисс_граффити |
![]()
Сообщение
#2
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
ну, допустим, + ты ставить не сможешь при всем желании.
сортировка подойдет любая, выдернуть код из функций/процедур и запихнуть в основную программу - не проблема. для начала - разбей на слова. с этим ты разобрался? как разбиваешь? в массив засовываешь или по-другому? -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Lesnik |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 23 Пол: Мужской Репутация: ![]() ![]() ![]() |
ну, допустим, + ты ставить не сможешь при всем желании. Значит только спасибо ![]() Я выбрал этот способ Код const limits = [#0..#32,'.',',',':',';','!','?','"']; type TWords = array[1..40] of string; var text : string; words : TWords; function GetWords(s : string; var w : TWords) : byte; var i,back,n : byte; begin i := 1; n := 0; while(i<=length(s)) do begin while(i<=length(s)) and (s[i] in limits) do inc(i); if i<=length(s) then begin back := i; while(i<=length(s)) and not(s[i] in limits) do inc(i); inc(n); w[n] := copy(s, back, i-back); end; end; GetWords := n; end; Вроде покороче будет. Мы эту тему только начали изучать и мне досталась эта задача ![]() Код, который в функции надо вставить в основную программу как я понял? |
мисс_граффити |
![]()
Сообщение
#4
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
ну да.
вставляй. и допиши ввод строки и вывод массива слов на экран (работаешь как с обычным массивом: в цикле выводишь каждый из элементов), тогда пойдем дальше. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Lesnik |
![]()
Сообщение
#5
|
Новичок ![]() Группа: Пользователи Сообщений: 23 Пол: Мужской Репутация: ![]() ![]() ![]() |
ну да. вставляй. и допиши ввод строки и вывод массива слов на экран (работаешь как с обычным массивом: в цикле выводишь каждый из элементов), тогда пойдем дальше. Код program COK; uses crt; const limits = [#0..#32,'.',' ']; type TWords = array[1..40] of string; var text : string; words : TWords; i,back,n : byte; begin For i:=1 to 40 do begin Readln(text); twords[i]:=text; end; i := 1; n := 0; while(i<=length(s)) do begin while(i<=length(s)) and (s[i] in limits) do inc(i); if i<=length(s) then begin back := i; while(i<=length(s)) and not(s[i] in limits) do inc(i); inc(n); w[n] := copy(s, back, i-back); end; For i:=1 to 40 do Writeln(twords[i]); end. Получилось так. |
мисс_граффити |
![]()
Сообщение
#6
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
хорошо, следующее задание: сделать, чтобы это работало.
-------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Lesnik |
![]()
Сообщение
#7
|
Новичок ![]() Группа: Пользователи Сообщений: 23 Пол: Мужской Репутация: ![]() ![]() ![]() |
хорошо, следующее задание: сделать, чтобы это работало. Код program COK; uses crt; const limits = [#0..#32,'.',' ']; type TWords = array[1..40] of string; var text : string; words : TWords; i,back,n : byte; begin For i:=1 to 40 do begin Read(text); words[i]:=text; end; i := 1; n := 0; while(i<=length(text)) do begin while(i<=length(text)) and (text[i] in limits) do inc(i); if i<=length(text) then begin back := i; while(i<=length(text)) and not(text[i] in limits) do inc(i); inc(n); words[n] := copy(text, back, i-back); end; For i:=1 to 40 do Writeln(words[i]); end; end. Запускается, но не выводит. Наверное, неправильно рассавил ввод и вывод. Сообщение отредактировано: Lesnik - 19.12.2006 9:36 |
Malice |
![]()
Сообщение
#8
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
Да нет, все должно работать. Может Alt-F5 надо или Readln; в конце программы. Осталось только сортировку, берешь вот отсюда Методы сортировок любую.
|
Lesnik |
![]()
Сообщение
#9
|
Новичок ![]() Группа: Пользователи Сообщений: 23 Пол: Мужской Репутация: ![]() ![]() ![]() |
Да нет, все должно работать. Может Alt-F5 надо или Readln; в конце программы. Осталось только сортировку, берешь вот отсюда Методы сортировок любую. Даже с ридлн выкидывает. При альт+ф5 я вжу просто пустой экран |
volvo |
![]()
Сообщение
#10
|
Гость ![]() |
Правильно... Ты печатаешь 40 строк (большинство из них - пустые), высота экрана = 25 строк... Что ты увидишь?
Вот это запусти: program COK; Для того, чтобы отсортировать слова - просто ПЕРЕД выводом поставь еще любую сортировку, для 40 элементов - тот же "пузырек"... |
Lesnik |
![]()
Сообщение
#11
|
Новичок ![]() Группа: Пользователи Сообщений: 23 Пол: Мужской Репутация: ![]() ![]() ![]() |
|
volvo |
![]()
Сообщение
#12
|
Гость ![]() |
Нет... Перед
For i:=1 to n do |
Lesnik |
![]()
Сообщение
#13
|
Новичок ![]() Группа: Пользователи Сообщений: 23 Пол: Мужской Репутация: ![]() ![]() ![]() |
Такс
если я выбрал этот метод сортировки Код Type arrType = Array[1 .. n] Of Integer; Procedure Bubble(Var ar: arrType; n: integer); Var i, j, T: Integer; Begin For i := 1 To n Do For j := n DownTo i+1 Do If ar[Pred(j)] > ar[j] Then Begin { < } T := ar[Pred(j)]; ar[Pred(j)] := ar[j]; ar[j] := T End End; Он подойдёт? Если его отделять от процедуры, то он будет выглядеть так? Код Type arrType = Array[1 .. n] Of Integer; var ar:arrtype; n,t:integer; Begin For i := 1 To n Do For j := n DownTo i+1 Do If ar[Pred(j)] > ar[j] Then Begin { < } T := ar[Pred(j)]; ar[Pred(j)] := ar[j]; ar[j] := T End End; |
Lesnik |
![]()
Сообщение
#14
|
Новичок ![]() Группа: Пользователи Сообщений: 23 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вот, что получилось
Код program COK; uses crt; const limits = [#0..#32,' ',',']; type TWords = array[1..40] of string; var text : string; words : TWords; t,i,j,back,n : byte; begin clrscr; readln(text); i := 1; n := 0; while(i<=length(text)) do begin while(i<=length(text)) and (text[i] in limits) do inc(i); if i<=length(text) then begin back := i; while(i<=length(text)) and not(text[i] in limits) do inc(i); inc(n); words[n] := copy(text, back, i-back); end; end; Begin For i := 1 To n Do For j := n DownTo i+1 Do If words[Pred(j)] > words[j] Then Begin { < } T := words[Pred(j)]; words[Pred(j)] := words[j]; words[j] := T End; End; For i:=1 to n do Writeln(words[i]); end. T := words[Pred(j)]; - тут выдаёт ошибку Сообщение отредактировано: Lesnik - 20.12.2006 0:13 |
Malice |
![]()
Сообщение
#15
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
потому что t-byte, а words[i] - string. Сделай t тоже string.
|
Lesnik |
![]()
Сообщение
#16
|
Новичок ![]() Группа: Пользователи Сообщений: 23 Пол: Мужской Репутация: ![]() ![]() ![]() |
|
![]() ![]() |
![]() |
Текстовая версия | 23.06.2025 7:02 |