Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.119.116.102] |
|
Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
написал программу, должна выводить кол-во отрицательных значений если они есть. Но по видимому где-то ошибка,подскажите
begin I:=0; memo1.Lines.Add(IntToStr(n)); for I := 1 to n do begin if n < 0 then otr:=otr+1; memo2.Lines.Add(IntToStr(otr)); |
Сообщ.
#2
,
|
|
|
begin // I:=0; незачем, в for'е есть инициализация memo1.Lines.Add( IntToStr(n) ); otr := 0; for I := 1 to n do begin if n < 0 then otr := otr + 1; end; memo2.Lines.Add( IntToStr(otr) ); end; |
Сообщ.
#3
,
|
|
|
Славян,благодарю)
|
Сообщ.
#4
,
|
|
|
Цитата nubass @ Не за что, честно. Там же ещё надо взять значение и проверить его на отрицательность. Как-то так:благодарю) begin // I:=0; незачем, в for'е есть инициализация memo1.Lines.Add( IntToStr(n) ); otr := 0; for I := 1 to n do begin a := memo3.Lines.Get( I ); // бред, но суть такова if a < 0 then otr := otr + 1; end; memo2.Lines.Add( IntToStr(otr) ); end; |
Сообщ.
#5
,
|
|
|
Славян,Еще вопросик, вот смотри, мы с клавиатуры задаем несколько чисел, ищем из них отрицательные, а потом еще нужно вывести кол-во чисел которые мы задали с клавиатуры, кратных заданных числу К.(Вводя с клавиатуры N чисел, подсчитать кол-во отрицательных чисел и кол-во чисел, кратных заданному числу К)
begin k:=Strtoint(edit1.text);// заданное число к memo1.Lines.Add( IntToStr(n) ); otr := 0; crt:=0; for I := 1 to n do begin if n < 0 then otr := otr + 1; if n mod k=0 then crt:=crt+1; memo3.Lines.Add( IntToStr(crt) ); end; memo2.Lines.Add( IntToStr(otr) ); end; но опять таки, где-то я ошибаюсь. |
Сообщ.
#6
,
|
|
|
Цитата nubass @ Да, там же, где и в прошлый раз. Нужно анализировать не число n, а введённое число.но опять таки, где-то я ошибаюсь. begin k := Strtoint( edit1.text );// заданное число к memo1.Lines.Add( IntToStr(n) ); otr := 0; crt := 0; for I := 1 to n do begin a := StrToInt( memoNumbers.Lines.Get( I ) ); // бред, но суть такова if a < 0 then otr := otr + 1; // отрицательных больше на 1 if (a mod k)=0 then begin crt := crt + 1; // кратных больше на 1 memo3.Lines.Add( IntToStr(a) ); // если хочется кратное число записать end; end; memo2.Lines.Add( IntToStr(otr) ); // кол-во отрицательных запишем end; |
Сообщ.
#7
,
|
|
|
Славян,
a := StrToInt( memoNumbers.Lines.Get( I ) ); |
Сообщ.
#8
,
|
|
|
Цитата nubass @ Должна брать I-ую строку из memo. Как точно пишется я не помню, давно не писал на VCL и т.п. Может надо написать a := StrToInt( memoNumbers.Lines[I] ); ? что эта строчка должна делать? |
Сообщ.
#9
,
|
|
|
Славян, не знаю, пишет потом is not a valid integer value
|
Сообщ.
#10
,
|
|
|
Цитата nubass @ У меня так работает:пишет потом is not a valid integer value procedure TForm1.Button1Click(Sender: TObject); var a,k:Integer; begin k := StrToInt( edit1.text );// заданное число к memo1.Lines.Add( IntToStr(n) ); otr := 0; crt := 0; for I := 1 to n do begin a := StrToInt( memoNumbers.Lines[I] ); // бред, но суть такова if a < 0 then otr := otr + 1; // отрицательных больше на 1 if (a mod k)=0 then begin crt := crt + 1; // кратных больше на 1 memo3.Lines.Add( IntToStr(a) ); // если хочется кратное число записать end; end; memo2.Lines.Add( IntToStr(otr) ); // кол-во отрицательных запишем end; Добавлено Ай, виноват. В Паскале индексы снова с нуля что ли пошли? Так пашет: for I := 0 to n-1 do |
Сообщ.
#11
,
|
|
|
Славян, memoNumbers так и оставлять? или нужно memo3?
|
Сообщ.
#12
,
|
|
|
Цитата nubass @ Это зависит от того, куда у вас числа отрицательные записаны. В какое TMemo. Просто лучше будет, ежели вы заведёте memoNumbers для ввода чисел, а всякие Memo1 для вывода результата, скажем. Ну а Memo3=Memo2; memoNumbers так и оставлять? или нужно memo3? |
Сообщ.
#13
,
|
|
|
Славян, вот оно что, все, это я понял, разобрался, кратные выводит) Спасибо)
только теперь там где отрицательные выводит 31359392 31359392 такие числа, с чем это может быть связано7 Добавлено Цитата nubass @ точнее там где отрицательные вообще ничего не выводит, то есть в memo2.Lines.Add( IntToStr(otr) ) |
Сообщ.
#14
,
|
|
|
Ну правильно, там только кол-во пишется. Надо вам так:
if a < 0 then begin otr := otr + 1; // отрицательных больше на 1 memo2.Lines.Add( IntToStr(a) ); // если хочется отрицательное число записать end; if (a mod k)=0 then begin crt := crt + 1; // кратных больше на 1 memo3.Lines.Add( IntToStr(a) ); // если хочется кратное число записать end; |
Сообщ.
#15
,
|
|
|
Славян, memo1 вообще не трогаем? memo1.Lines.Add( IntToStr(n) ); у меня в нем выводит примерно такое число 32801184
|