|
Вопрос # 5 050/ вопрос решён / |
|
Доброго времени суток. Я еще только учусь и пытаюсь учебу поддерживать практикой.
Подскажите с решением.
Даны целые числа K и N (N > 0). Вывести N раз число K.
Подскажите какой код будет на Delphi.
Числа вводять в поле Edit1 и Edit2, соотвественно, принажатии на кпопку выполняется программа и в заголовке Label1.
Примечание #1 (25 февраля 2011, 16:33): В заголовке Label1 хочу увидеть результат.
Как править посты?
 |
Вопрос задал: sheff (статус: Посетитель)
Вопрос отправлен: 25 февраля 2011, 16:28
Состояние вопроса: решён, ответов: 3.
|
Ответ #1. Отвечает эксперт: Вадим К
Здравствуйте, sheff!
Например так.
procedure TForm1.Button1Click(Sender:TObject);
var n, k,i:integer;
s:string;
begin
k := StrToInt(Edit1.text);
n := StrToInt(Edit2.text);
s := '';
for i := 1 to n do s := s + inttostr(k);
label1.caption := s;
end;
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 25 февраля 2011, 16:38
Оценка за ответ: 5
|
Ответ #2. Отвечает эксперт: Толяныч
Здравствуйте, sheff!
Приблизительно так :
Var
i,n : integer ;
str1 : string ;
begin
n := StrToInt (Ed2.Text) ; str1 := '' ;
for i := 1 to n do str1 := str1 + Ed1.Text + ' ';
// Поскольку число К и так уже в символьном формате, нет смысла переводить его
// туда и обратно StrToInt - IntToStr
Label1.Caption := str1
end ;
 |
Ответ отправил: Толяныч (статус: 4-ый класс)
Время отправки: 25 февраля 2011, 16:47
Оценка за ответ: 5
|
Ответ #3. Отвечает эксперт: min@y™
Цитата (sheff):
Можно ли решить данную задачу использую цикл while и repeat?
procedure TForm1.Button1Click(Sender: TObject);
var
n, k, i: Integer;
s: string;
begin
k:= StrToInt(Edit1.text);
n:= StrToInt(Edit2.text);
s:= '';
i:= 1;
while i <= n do
begin
s:= s + IntToStr(k);
Inc(i);
end;
Label1.Caption:= s;
end;
 |
Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 25 февраля 2011, 19:10
Оценка за ответ: 5
|
Мини-форум вопроса
Всего сообщений: 12; последнее сообщение — 28 февраля 2011, 10:40; участников в обсуждении: 4.
|
sheff (статус: Посетитель), 25 февраля 2011, 16:49 [#1]:
А можно поподробнее описать
s := '';
do s := s + inttostr(k);
вот это место в коде?За ранее спасибо.
|
|
Вадим К (статус: Академик), 25 февраля 2011, 16:52 [#2]:
То есть, рассказать, что такое цикл?
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Толяныч (статус: 4-ый класс), 25 февраля 2011, 16:53 [#3]:
Конечно, ответ Вадима К более правильный, я не обратил внимание, что действие - по кнопке.
|
|
sheff (статус: Посетитель), 25 февраля 2011, 16:56 [#4]:
Про цикл, я понимаю.
Объявление переменной s := ''; что дает?
|
|
Вадим К (статус: Академик), 25 февраля 2011, 17:05 [#5]:
просто присваивает строке пустую строку. Фактически мы ее очищаем.
Галочка "подтверждения прочтения" - вселенское зло.
|
25 февраля 2011, 17:41: Статус вопроса изменён на решённый (изменил автор вопроса — sheff)
|
sheff (статус: Посетитель), 25 февраля 2011, 17:42 [#6]:
Спасибо всем кто принял участие.
|
25 февраля 2011, 18:43: Вопрос вновь открыт (изменение состояния произвёл автор вопроса — sheff)
|
sheff (статус: Посетитель), 25 февраля 2011, 18:44 [#7]:
Можно ли решить данную задачу использую цикл while и repeat?
|
|
Вадим К (статус: Академик), 25 февраля 2011, 18:54 [#8]:
да, конечно. там где работает цикл for, всегда можно переписать через while или repeat.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
sheff (статус: Посетитель), 25 февраля 2011, 19:10 [#9]:
А я могу Вас попросить показать мне как переписать?
|
|
sheff (статус: Посетитель), 25 февраля 2011, 19:33 [#10]:
С циклом repeat разобрался сам, еще раз спасибо!
procedure TForm1.Button1Click(Sender: TObject);
var
n, k, i: Integer;
s: string;
begin
k:= StrToInt(Edit1.text);
n:= StrToInt(Edit2.text);
s:= '';
i:= 0;
repeat
begin
s:= s + IntToStr(k);
Inc(i);
end;
until n=i;
Label1.Caption:= s;
end;
|
|
min@y™ (статус: Доктор наук), 25 февраля 2011, 19:42 [#11]:
Молодец, соображаешь. А то есть тут некоторые, типа stason'a, вообще с мозгами не дружат. А у тебя мозги есть. И это есть гут.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
25 февраля 2011, 21:25: Статус вопроса изменён на решённый (изменил автор вопроса — sheff)
|
Вадим К (статус: Академик), 28 февраля 2011, 10:40 [#12]:
подсказка - begin...end тут ни к чему и его можно спокойно убрать.
А также условие сравнения лучше заменить на =<. Потому что в таком случае цикл гарантированно завершится. А вот при сравнении - можно проскочить. К примеру завтра решите сделать цикл не i=i+1, а i=i+3 и не угадаете последнее значение. Мелочь, а спасает от будущих ошибок. Может не в этом проекте,но в другом.
Галочка "подтверждения прочтения" - вселенское зло.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|