IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Формирование строки символов, С помощью процедуры
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 56
Пол: Мужской

Репутация: -  -1  +


Помогите, пожалуйста, исправить программу!
Процедура, которая выводит строку, состоящую из одинаковых символов. Длина строки и символ являются параметрами процедуры.
Я составил, но он выдает мне символ не тот, что я ввожу, а только тот, что запрагроммирован в самой программе, как это исправить подскажите, пожалуйста?! А второе, в самой программе у меня почему-то не получается обратиться к процедуре! Что мне нужно подправить?!
Вот текст этой программы:

program nomer13;
procedure nom(str: string; i,n: integer; var z: char);
begin
for i:=1 to n do
str:= str+chr(ord('z'));
end;
var z: char;
n: integer;
begin
writeln('Vvedite simvol');
readln(z);
writeln('Vvedite ix kolichestvo');
readln(n);
writeln(nom(z));
end.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


 uses crt;
procedure my_write(ch: char; n: Integer);
begin
while n > 0 do begin
write(ch); dec(n);
end;
writeln;
end;

begin
my_write('f', 2);
end.



--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 56
Пол: Мужской

Репутация: -  -1  +


А теперь можешь пояснить, что означает эта строчка:
dec(n);
И вот эта:
my_write('f', 2); Что такое в ней f и при чем здесь 2 ?!


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


поиск
****

Группа: Пользователи
Сообщений: 347
Пол: Мужской
Реальное имя: nir

Репутация: -  2  +


dec(n) уменьшает n на 1

my_write('f', 2) вызывает одноименную процедуру с параметрами в скобках

как я понял 'f' 'это символ который будет печаться 2 раза

Сообщение отредактировано: renesko1 -


--------------------
typedef void Śūnyatā ;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


1. Не путай между собой символ 'z' и переменную z. еременная - лишь место в памяти, куда можно записать любой символ.
2. Вспомогательные переменные (например, переменную циула) принято описывать внутри процедуры, а не передавать в нее в качестве параметра.
3. Если хочешь вернуть значение переменной в параметре, именно эту переменную надо описывать как var.
4. У тебя не совпадает количество и тип параметров в заголовке процедуры и при ее вызове. И, соответственно, недоописанные при вызове процедуры параметры должны быть определены в основной программе.
5. Процедура не возвращает значения. Можно сделать либо так, как ниже, либо переопределить nom как функцию.
program nomer13;
procedure nom(var str: string; n: integer; z: char);
var i : integer;
begin
for i:=1 to n do
str:= str+z;
end;
var z: char;
n: integer;
s:string;
begin
writeln('Vvedite simvol');
readln(z);
writeln('Vvedite ix kolichestvo');
readln(n);
nom(s,n,z);
writeln(s);
end.

PS. Набивал прямо здесь, не проверял.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






По заданию нужна не процедура, которая формирует строку, которая ПОТОМ где-то в другом месте печатается, а
Цитата
Процедура, которая выводит строку, состоящую из одинаковых символов
. Так что, andriano, зря старался dry.gif Мимо кассы. Правильный ответ уже дан во втором посте...

Кстати, к тебе - как к поборнику кроссплатформенности и СУПЕР-правильных программ - вопрос: "А инициализировать строку не надо?" Где-то сказано что компилятор ОБЯЗАН инициализировать переменные?

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


Цитата(volvo @ 12.02.2008 9:04) *

По заданию нужна не процедура, которая формирует строку, которая ПОТОМ где-то в другом месте печатается, а . Так что, andriano, зря старался dry.gif Мимо кассы. Правильный ответ уже дан во втором посте...

Кстати, к тебе - как к поборнику кроссплатформенности и СУПЕР-правильных программ - вопрос: "А инициализировать строку не надо?" Где-то сказано что компилятор ОБЯЗАН инициализировать переменные?

Когда автор дает две совершенно различные трактовки того, что ему нужно, довольно трудно выбрать из них нужную, не обладая телепатическими способностями.
В исходном коде символы ДОПИСЫВАЛИСЬ в конец строки, не уничтожая того, что там до этого было. И это логично, т.к. для процедуры именно это - наиболее универсальное решение. Инициализация строки - дело основной программы, если строка передается как формальный параметр, и дело функции, если строка - возвращаемое функцией значение.

Не может быть одного единственно верного ответа на некорректно сформулированный вопрос либо на вопрос, допускающий неоднозначность. Так что твое сообщение я расцениваю исключительно как желание придраться. Я понимаю, что молодым людям свойственна, порой, излишняя категоричность, но иногда полезно ставить под сомнение и собственную непогрешимость.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 25.11.2020 1:21
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name