Строковый тип данных |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Строковый тип данных |
Lesnik |
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 23 Пол: Мужской Репутация: 0 |
Вводится строка из слов, разделённых пробелами или запятыми.
Разбить строку на слова и вывести их на экран в алфовитном порядке. Просмотрел в FAQ методы сортировок и не совсем понял какая нужна. Надо делать без функций и процедур. Программа должна быть без лишних наворотов. Тому, кто поможет, скажу ОГРОМНОЕ спасибо и буду ставить + в репутацию до конца недели |
мисс_граффити |
Сообщение
#2
|
просто человек Группа: Пользователи Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: 55 |
ну, допустим, + ты ставить не сможешь при всем желании.
сортировка подойдет любая, выдернуть код из функций/процедур и запихнуть в основную программу - не проблема. для начала - разбей на слова. с этим ты разобрался? как разбиваешь? в массив засовываешь или по-другому? -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Lesnik |
Сообщение
#3
|
Новичок Группа: Пользователи Сообщений: 23 Пол: Мужской Репутация: 0 |
ну, допустим, + ты ставить не сможешь при всем желании. Значит только спасибо Я выбрал этот способ Код 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 Пол: Женский Реальное имя: Юлия Репутация: 55 |
ну да.
вставляй. и допиши ввод строки и вывод массива слов на экран (работаешь как с обычным массивом: в цикле выводишь каждый из элементов), тогда пойдем дальше. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Lesnik |
Сообщение
#5
|
Новичок Группа: Пользователи Сообщений: 23 Пол: Мужской Репутация: 0 |
ну да. вставляй. и допиши ввод строки и вывод массива слов на экран (работаешь как с обычным массивом: в цикле выводишь каждый из элементов), тогда пойдем дальше. Код 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 Пол: Женский Реальное имя: Юлия Репутация: 55 |
хорошо, следующее задание: сделать, чтобы это работало.
-------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Lesnik |
Сообщение
#7
|
Новичок Группа: Пользователи Сообщений: 23 Пол: Мужской Репутация: 0 |
хорошо, следующее задание: сделать, чтобы это работало. Код 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 - |
Malice |
Сообщение
#8
|
Профи Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: 20 |
Да нет, все должно работать. Может Alt-F5 надо или Readln; в конце программы. Осталось только сортировку, берешь вот отсюда Методы сортировок любую.
|
Lesnik |
Сообщение
#9
|
Новичок Группа: Пользователи Сообщений: 23 Пол: Мужской Репутация: 0 |
Да нет, все должно работать. Может Alt-F5 надо или Readln; в конце программы. Осталось только сортировку, берешь вот отсюда Методы сортировок любую. Даже с ридлн выкидывает. При альт+ф5 я вжу просто пустой экран |
volvo |
Сообщение
#10
|
Гость |
Правильно... Ты печатаешь 40 строк (большинство из них - пустые), высота экрана = 25 строк... Что ты увидишь?
Вот это запусти: program COK; Для того, чтобы отсортировать слова - просто ПЕРЕД выводом поставь еще любую сортировку, для 40 элементов - тот же "пузырек"... |
Lesnik |
Сообщение
#11
|
Новичок Группа: Пользователи Сообщений: 23 Пол: Мужской Репутация: 0 |
|
volvo |
Сообщение
#12
|
Гость |
Нет... Перед
For i:=1 to n do |
Lesnik |
Сообщение
#13
|
Новичок Группа: Пользователи Сообщений: 23 Пол: Мужской Репутация: 0 |
Такс
если я выбрал этот метод сортировки Код 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 Пол: Мужской Репутация: 0 |
Вот, что получилось
Код 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 - |
Malice |
Сообщение
#15
|
Профи Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: 20 |
потому что t-byte, а words[i] - string. Сделай t тоже string.
|
Lesnik |
Сообщение
#16
|
Новичок Группа: Пользователи Сообщений: 23 Пол: Мужской Репутация: 0 |
|
Текстовая версия | 23.12.2024 20:24 |