Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 050

/ вопрос решён /

Доброго времени суток. Я еще только учусь и пытаюсь учебу поддерживать практикой.
Подскажите с решением.
Даны целые числа K и N (N > 0). Вывести N раз число K.
Подскажите какой код будет на Delphi.
Числа вводять в поле Edit1 и Edit2, соотвественно, принажатии на кпопку выполняется программа и в заголовке Label1.

Примечание #1 (25 февраля 2011, 16:33):
В заголовке Label1 хочу увидеть результат.
Как править посты?

sheff Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: 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 ;

Приложение:
  1.  
  2.  


Ответ отправил: Толяныч (статус: 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

sheff (статус: Посетитель), 25 февраля 2011, 16:49 [#1]:

А можно поподробнее описать
s := '';
do s := s + inttostr(k);
вот это место в коде?За ранее спасибо.
Вадим К

Вадим К (статус: Академик), 25 февраля 2011, 16:52 [#2]:

То есть, рассказать, что такое цикл?
Галочка "подтверждения прочтения" - вселенское зло.
Толяныч

Толяныч (статус: 4-ый класс), 25 февраля 2011, 16:53 [#3]:

Конечно, ответ Вадима К более правильный, я не обратил внимание, что действие - по кнопке.
sheff

sheff (статус: Посетитель), 25 февраля 2011, 16:56 [#4]:

Про цикл, я понимаю.
Объявление переменной s := ''; что дает?
Вадим К

Вадим К (статус: Академик), 25 февраля 2011, 17:05 [#5]:

просто присваивает строке пустую строку. Фактически мы ее очищаем.
Галочка "подтверждения прочтения" - вселенское зло.

25 февраля 2011, 17:41: Статус вопроса изменён на решённый (изменил автор вопроса — sheff)

sheff

sheff (статус: Посетитель), 25 февраля 2011, 17:42 [#6]:

Спасибо всем кто принял участие.

25 февраля 2011, 18:43: Вопрос вновь открыт (изменение состояния произвёл автор вопроса — sheff)

sheff

sheff (статус: Посетитель), 25 февраля 2011, 18:44 [#7]:

Можно ли решить данную задачу использую цикл while и repeat?
Вадим К

Вадим К (статус: Академик), 25 февраля 2011, 18:54 [#8]:

да, конечно. там где работает цикл for, всегда можно переписать через while или repeat.
Галочка "подтверждения прочтения" - вселенское зло.
sheff

sheff (статус: Посетитель), 25 февраля 2011, 19:10 [#9]:

А я могу Вас попросить показать мне как переписать?
sheff

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™

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 и не угадаете последнее значение. Мелочь, а спасает от будущих ошибок. Может не в этом проекте,но в другом.
Галочка "подтверждения прочтения" - вселенское зло.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:41
Выполнено за 0.03 сек.