На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> подскажите пожалуйста
    написал программу, должна выводить кол-во отрицательных значений если они есть. Но по видимому где-то ошибка,подскажите
    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));
    Сообщение отредактировано: nubass -
      ExpandedWrap disabled
        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;
        Славян,благодарю)
          Цитата nubass @
          благодарю)
          Не за что, честно. Там же ещё надо взять значение и проверить его на отрицательность. Как-то так:
          ExpandedWrap disabled
            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;
            Славян,Еще вопросик, вот смотри, мы с клавиатуры задаем несколько чисел, ищем из них отрицательные, а потом еще нужно вывести кол-во чисел которые мы задали с клавиатуры, кратных заданных числу К.(Вводя с клавиатуры 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;
            но опять таки, где-то я ошибаюсь.
              Цитата nubass @
              но опять таки, где-то я ошибаюсь.
              Да, там же, где и в прошлый раз. Нужно анализировать не число n, а введённое число.
              ExpandedWrap disabled
                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;
                Славян,
                ExpandedWrap disabled
                  a := StrToInt( memoNumbers.Lines.Get( I ) );
                что эта строчка должна делать? не работает как не пытался, ошибку пишет, а именно get.
                Сообщение отредактировано: nubass -
                  Цитата nubass @
                  что эта строчка должна делать?
                  Должна брать I-ую строку из memo. Как точно пишется я не помню, давно не писал на VCL и т.п. Может надо написать a := StrToInt( memoNumbers.Lines[I] ); ?
                    Славян, не знаю, пишет потом is not a valid integer value
                      Цитата nubass @
                      пишет потом is not a valid integer value
                      У меня так работает:
                      ExpandedWrap disabled
                        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;


                      Добавлено
                      Ай, виноват. В Паскале индексы снова с нуля что ли пошли? Так пашет:
                      ExpandedWrap disabled
                         for I := 0 to n-1 do
                        Славян, memoNumbers так и оставлять? или нужно memo3?
                          Цитата nubass @
                          memoNumbers так и оставлять? или нужно memo3?
                          Это зависит от того, куда у вас числа отрицательные записаны. В какое TMemo. Просто лучше будет, ежели вы заведёте memoNumbers для ввода чисел, а всякие Memo1 для вывода результата, скажем. Ну а Memo3=Memo2;
                            Славян, вот оно что, все, это я понял, разобрался, кратные выводит) Спасибо)
                            только теперь там где отрицательные выводит 31359392
                            31359392
                            такие числа, с чем это может быть связано7

                            Добавлено
                            Цитата nubass @
                            точнее там где отрицательные вообще ничего не выводит, то есть в memo2.Lines.Add( IntToStr(otr) )
                              Ну правильно, там только кол-во пишется. Надо вам так:
                              ExpandedWrap disabled
                                    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;
                                Славян, memo1 вообще не трогаем? memo1.Lines.Add( IntToStr(n) ); у меня в нем выводит примерно такое число 32801184
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0465 ]   [ 16 queries used ]   [ Generated: 7.05.24, 12:19 GMT ]