![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Shults99 |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 48 Пол: Мужской Репутация: ![]() ![]() ![]() |
Уважаемые гуру!
Есть трабла - помогите разобраться! При создании модуля (имя.tpu) используется блок, где есть string. Код function RightBlank(S1,L,i:integer):integer; begin Writeln('Vvedite stroku S1'); readln(S1); Writeln('Vvedite dlinu stroki L ( chislo do 20)'); readln(L); begin while i<L do for i:=1 to L do Write(S1[i]); end; readln; end; При нажатии Make (F9) выдается сообщение: - Error 121: Invalid qualifier. - Как её объявить правильно в этой строке (или ещё где?): Код function RightBlank(S1,L,i:integer):integer; Задача такого типа С целью формирования модуля XXX составить следующие блоки-утилиты: 1)функцию aaa 2)функцию bbb 3)процедуру ссс Испытайте эти блоки в составе модуля XXX, также сохраните эти блоки в одноименных файлах. Щас создаю блок ааа. -------------------- |
kent |
![]()
Сообщение
#2
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 50 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Так как S1 у тебя строка так её нужно и описывать как строку:
Код function RightBlank(S1 : String; L,i : integer) : integer; begin Writeln('Vvedite stroku S1'); readln(S1); Writeln('Vvedite dlinu stroki L ( chislo do 20)'); readln(L); begin while i<L do for i:=1 to L do Write(S1[i]); end; readln; end; |
volvo |
![]()
Сообщение
#3
|
Гость ![]() |
Shults99, можно вопрос?
Что вообще должна делать функция RightBlank, и что возвращать? |
GoodWind |
![]()
Сообщение
#4
|
![]() Автооответчик ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 188 Пол: Мужской Реальное имя: Александр Репутация: ![]() ![]() ![]() |
а зачем спрашивать пользователя о длине строки ?
![]() и зачем передавать в функцию значение S1 если оно все равно изменится сразу же после входа в нее (остальных параметров это, кстати, тоже касается) ![]() -------------------- Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
|
Guest |
![]()
Сообщение
#5
|
Гость ![]() |
2 kent
) Эт понятно.., но ошибка как раз и выдается тогда, когда я вписываю описание string... Паскаль вообще эти символы выделяет другим цветом и потом просит запятую после S1 и перед String, а не двоеточие, как будто это перечисление переменных. В том то и проблема, что в function при создании модуля *.tpu я не могу дать описание типа String - вот и хочу узнать - можь строки как то в function и в модулях *.tpu как-то по-другому описываются? 2 volvo Прога не в unite работает нормально (ниже). А когда хочешь её запихать в модуль ввиде function - выдает ошибку (см. выше). Задание С целью формирования модуля XXX составить следующие блоки-утилиты: а) Функцию RightBlank(S,L), возвращающую строку длины L, началом которой является строка S, а далее пробелы. б) в) ... Испытайте эти блоки в составе модуля XXX, также сохраните эти блоки в одноименных файлах. Код program prog23; var S1:string[20]; L,i:integer; begin Writeln('Vvedite stroku S1'); readln(S1); Writeln('Vvedite dlinu stroki L ( chislo do 20)'); readln(L); begin while i<L do for i:=1 to L do Write(S1[i]); end; readln; end. |
GoodWind |
![]()
Сообщение
#6
|
![]() Автооответчик ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 188 Пол: Мужской Реальное имя: Александр Репутация: ![]() ![]() ![]() |
то-есть rightBlank нечто вроде trim - только пробелы не отрезаются, а возвращается номер буквы, после которой идут _только_ пробелы ?
Цитата Испытайте эти блоки в составе модуля XXX, также сохраните эти блоки в одноименных файлах. а разве можно одинаково называть модуль и фнкцию внутри него ![]() -------------------- Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
|
hiv |
![]()
Сообщение
#7
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 660 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
А я понял, что так нужно:
function RightBlank(var S:string):integer; Т.е. если обрезка большая, то мы добавляем пробелы к S1 справа, чтоб все строки были под одну гребенку ![]() -------------------- Никогда не жадничай. Свои проблемы с любовью дари людям!
|
Guest |
![]()
Сообщение
#8
|
Гость ![]() |
GoodWind
Чет не нашел в Паскале trim.. Модуль и функцию я одинаково не называю :o |
Дож |
![]()
Сообщение
#9
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 179 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата - Error 121: Invalid qualifier. - Цитата Неверный квалификатор Возможные причины сообщения:
Я могу предположить только одно- ты используешь запрещенные символы в назв переменной( [ ] ^ @ . ) А вообще скажи че-нить поконкретнее, а то приводишь рабочие коды и говоришь, что нечто измененное не работает... Сообщение отредактировано: Дож - 19.09.2005 15:27 -------------------- Доброго времени суток.
:nnn: |
hiv |
![]()
Сообщение
#10
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 660 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
Но все равно бы сделал так:
function RightBlank(S:string; L:integer):string; -------------------- Никогда не жадничай. Свои проблемы с любовью дари людям!
|
GoodWind |
![]()
Сообщение
#11
|
![]() Автооответчик ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 188 Пол: Мужской Реальное имя: Александр Репутация: ![]() ![]() ![]() |
Цитата Чет не нашел в Паскале trim.. это не Паскалевая функция... даже не помню в каких языках она есть... кажется в FoxPro ![]() trim это обрезка ведущих пробелов. бывают TrimRight, TrimLeft, TrimAll -------------------- Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
|
Shults99 |
![]()
Сообщение
#12
|
Новичок ![]() Группа: Пользователи Сообщений: 48 Пол: Мужской Репутация: ![]() ![]() ![]() |
Ответы, кому интересно было
Код program prog23; uses utils; var S1,S2:string[20]; L,i,n,H,T:integer; begin Writeln('Vvedite deistviya, kotorye hotite vipolnit'); begin Beep(H,T); RightBlank(S1); End; End. модуль Код unit utils; interface Uses Crt; procedure Beep(H,T:integer); function RightBlank(S1:string):integer; Implementation procedure Beep; Begin Sound(H); { Zvuk c visotoi H Hz } Delay(T); { Na T millisekund } NoSound; { Viklucheniye dynamika } End; function RightBlank(S1:string):integer; var {S1:string[20];} i,L:integer; begin Writeln('Vvedite stroku S1'); readln(S1); Writeln('Vvedite dlinu stroki L ( chislo do 20)'); readln(L); begin while i<L do for i:=1 to L do Write(S1[i]); end; readln; end; End. -------------------- |
volvo |
![]()
Сообщение
#13
|
Гость ![]() |
Shults99, ну и как это связано с заданием?
Цитата(Guest @ 19.09.2005 15:00) Задание С целью формирования модуля XXX составить следующие блоки-утилиты: а) Функцию RightBlank(S,L), возвращающую строку длины L, началом которой является строка S, а далее пробелы. Ты же хотя бы свои-то посты читай !!! ![]() |
Shults99 |
![]()
Сообщение
#14
|
Новичок ![]() Группа: Пользователи Сообщений: 48 Пол: Мужской Репутация: ![]() ![]() ![]() |
volvo
Не понял что-то... Да все равно, как она называется, эта функция! Она использует строку (S1 или S - без разницы) и использует переменную L - все больше ничего не надо. То, что там ещё процедура Beep - это из той части задания, которую я сделал сам до этого. Или я не так понял? Кстати, всем спасибо за участие. hiv thnks, но я все же использовал свой вариант. -------------------- |
volvo |
![]()
Сообщение
#15
|
Гость ![]() |
Цитата Не понял что-то... Объясняю: ты привел задание, в котором говорится, что функция должна получать 2 (два) параметра - строку и число. Внимание, вопрос: Что принимает твоя функция из поста №12? |
Shults99 |
![]()
Сообщение
#16
|
Новичок ![]() Группа: Пользователи Сообщений: 48 Пол: Мужской Репутация: ![]() ![]() ![]() |
Ответ:
1) Строку Writeln('Vvedite stroku S1'); 2) Число Writeln('Vvedite dlinu stroki L ( chislo do 20)'); .. извините, если тупой, но что значит "функция должна получать 2 (два) параметра"? Возвращать 2 параметра? .."С целью формирования модуля XXX составить следующие блоки-утилиты: а) Функцию RightBlank(S,L), возвращающую строку длины L, началом которой является строка S, а далее пробелы...." - Вроде все сходиться. -------------------- |
Shults99 |
![]()
Сообщение
#17
|
Новичок ![]() Группа: Пользователи Сообщений: 48 Пол: Мужской Репутация: ![]() ![]() ![]() |
Смутно начинаю предполагать, что RightBlank(S,L) и RightBlank(S) - разные вещи, но что тогда надо сделать для RightBlank(S,L) не понимаю..
-------------------- |
volvo |
![]()
Сообщение
#18
|
Гость ![]() |
Да пойми, что твоя функция должна получать ОДНОВРЕМЕННО и строку, и число, иначе в ней смысла-то нету... Вот таким должно быть определение функции:
Function RightBlank(s1: string; L: integer): string; А у тебя она как описана? Принимает один параметр, ТОЛЬКО строку: function RightBlank(S1:string):integer;Нестыковка... А где число? Оно должно передаваться, а не запрашиваться у пользователя внутри функции... Цитата что тогда надо сделать для RightBlank(S,L) не понимаю.. См. пост №10 - hiv уже все сделал... |
Shults99 |
![]()
Сообщение
#19
|
Новичок ![]() Группа: Пользователи Сообщений: 48 Пол: Мужской Репутация: ![]() ![]() ![]() |
Дошло. Прикреплю вариант hiva к ответу просто текстовым файлом,
но переделывать не буду. Вот убивайте меня - не буду. У нас 12 часов ночи, у меня радость победы - а препады пусть идут в пень. Всё. ![]() -------------------- |
![]() ![]() |
![]() |
Текстовая версия | 19.07.2025 15:36 |