На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Название темы должно быть информативным !
Прежде чем задать вопрос, воспользуйтесь Поиском. и проверьте в FAQ (ЧАВО) Паскаля
Чтобы получить вразумительный ответ, подробно опишите проблему: что надо сделать, что не получается и номер ошибки (если есть), которую выводит компилятор.
Для вставки кода ваших программ используйте, пожалуйста, кнопку СODE=pas или выпадающий список СODE для других языков (подсветка синтаксиса).
[!] Как правильно задавать вопросы | Руководство по языку B.Pascal 7 & Objects/LR | Borland Pascal. Руководство пользователя
Модераторы: volvo877
  
> Ошибка , Ошибка в програме.
    ExpandedWrap disabled
      program треугол;
      uses crt;
      function провер(x,y,z:integer):boolean;
      begin
      if(abs(x-y)<z)and(x+y>z) then провер:=true
      else провер:=false;
      end;
      function площ(x,y,z:integer):real;
      var p:integer;
      begin
      p:=(x+y+z)div 2;
      площ:=sqrt(p*(p-x)*(p-y)*(p-z));
      end;
      var f:text;
          n,i,sk,a,b,c:integer;
      begin
      clrscr;
      randomize;
      assign(f,'treug.txt');
      rewrite(f);
      write('Сколько будет треугольников? n=');
      readln(n);
      for i:=1 to n do
       begin
        a:=random(10)+1;
        write(f,a);
        b:=random(10)+1;
        write(f,' ',b);
        c:=random(10)+1;
        write(f,' ',c);
        writeln(f,'');
       end;
      close(f);
      reset(f);
      sk:=0;i:=1;
      while not eof(f) do
       begin
        read(f,a);
        read(f,b);
        read(f,c);
        i:=i+1;
        if провер(a,b,c) then
          begin
           sk:=sk+1;
           writeln(i:2,' - ',площ(a,b,c):5:2)
          end
        else writeln(i:2,' - это не треугольник!' );
       end;
      writeln;
      writeln('Треугольников = ',sk);
      close(f);
      readln;
      end.


    Данная программа мне постоянно выдает ошибку №106 - плохой формат числа. В чем дело?
    Сообщение отредактировано: volvo877 -
      Как сказал бы мой преподаватель по системам коммутации (хорошая женщина :) )

      KIKSa, ты гениальный ребенок!

      Цитата
      program треугол;
      function провер(x,y,z:integer):boolean;
      function площ(x,y,z:integer):real;


      Почему название программы и функций русскими буквами пишешь?

      Добавлено
      Цитата Polinom2686 @
      Данная программа мне постоянно выдает ошибку №106 - плохой формат числа. В чем дело?


      Ошибка ведь возникает при компиляции? Компилятор должен указать место ошибки. Что показывает компилятор?
      Сообщение отредактировано: Polinom2686 -
        ExpandedWrap disabled
          program треугол;
          uses crt;
           
          function провер(x,y,z:integer):boolean;
          begin
          if(abs(x-y)<z)and(x+y>z) then провер:=true
                                   else провер:=false;
          end;
           
          function площ(x,y,z:integer):real;
          var p:integer;
          begin
          p:=(x+y+z)div 2;
          площ:=sqrt(p*(p-x)*(p-y)*(p-z));
          end;
           
          var f:text;
          n,i,sk,a,b,c:integer;
           
          begin
          clrscr;
          randomize;
          assign(f,'treug.txt');
          rewrite(f);
          write('Сколько будет треугольников? n=');
          readln(n);
          for i:=1 to n do begin
                           a:=random(10)+1;
                           write(f,a);
                           b:=random(10)+1;
                           write(f,' ',b);
                           c:=random(10)+1;
                           write(f,' ',c);
                           writeln(f,'');
                           end;
          close(f);
          reset(f);
          sk:=0;i:=1;
          while not eof(f) do begin
                              read(f,a); {Посмотри на эту строку}
                              read(f,b);
                              read(f,c);
                              i:=i+1;
                              if провер(a,b,c) then begin
                                                    sk:=sk+1;
                                                    writeln(i:2,' - ',площ(a,b,c):5:2)
                                                    end
                                               else writeln(i:2,' - это не треугольник!' );
                              end;
          writeln;
          writeln('Треугольников = ',sk);
          close(f);
          readln;
          end.


        Как я понял, ты используешь FreePascal. Так?

        Перевод сообщения ошибки (Google'вский)

        106 Invalid numeric format Reported when a non-numeric value is read from a text file, when a numeric value was expected.

        106 Неправильная числовой формат сообщается, когда не-числовые значения считываются из текстового файла, когда ожидается числовое значение.

        Что содержит файл treug.txt ?
          Всякие треугол в названии появились во время перевода. Первоначально програма писалась латиницей на литовском языке. Что касается ошибки - выскакивает окно - ошибка №106 - плохой формат числа(это тоже перевод). Внизу ничего не пишут - программа скомпилирована и все.
          Оригинал - может пригодится...
          ExpandedWrap disabled
            program trikampiai;
            uses crt;
            function tikr(x,y,z:integer):boolean;
            begin
            if(abs(x-y)<z)and(x+y>z) then tikr:=true
            else tikr:=false;
            end;
            function plotas(x,y,z:integer):real;
            var p:integer;
            begin
            p:=(x+y+z)div 2;
            plotas:=sqrt(p*(p-x)*(p-y)*(p-z));
            end;
            var f:text;
                n,i,sk,a,b,c:integer;
            begin
            clrscr;
            randomize;
            assign(f,'trikamp.txt');
            rewrite(f);
            write('Kiek bus trikampiu? n=');
            readln(n);
            for i:=1 to n do
             begin
              a:=random(10)+1;
              write(f,a);
              b:=random(10)+1;
              write(f,' ',b);
              c:=random(10)+1;
              write(f,' ',c);
              writeln(f,'');
             end;
            close(f);
            reset(f);
            sk:=0;i:=1;
            while not eof(f) do
             begin
              read(f,a);
              read(f,b);
              read(f,c);
              i:=i+1;
              if tikr(a,b,c) then
                begin
                 sk:=sk+1;
                 writeln(i:2,' - ',plotas(a,b,c):5:2)
                end
              else writeln(i:2,' - tai ne trikampis!' );
             end;
            writeln;
            writeln('Trikampiu yra = ',sk);
            close(f);
            readln;
            end.
          Сообщение отредактировано: volvo877 -
            Цитата Polinom2686 @
            Что содержит файл treug.txt ?


            А что с этим вопросом?

            Добавлено
            Прикрепи этот файл к своему сообщению.
              Этот файл создается программой и в него записывает длину сторон треугольников. 1-ая строка - 1-й треугольник и т.д.
                Твой исходник отработал без ошибок.

                Добавлено
                Я его немного изменил.

                ExpandedWrap disabled
                  program trikampiai;
                  uses crt;
                  function tikr(x,y,z:integer):boolean;
                  begin
                  if(abs(x-y)<z)and(x+y>z) then tikr:=true
                  else tikr:=false;
                  end;
                  function plotas(x,y,z:integer):real;
                  var p:integer;
                  begin
                  p:=(x+y+z)div 2;
                  plotas:=sqrt(p*(p-x)*(p-y)*(p-z));
                  end;
                  var f:text;
                  n,i,a,b,c:integer;
                  begin
                  clrscr;
                  randomize;
                  assign(f,'trikamp.txt');
                  rewrite(f);
                  write('Kiek bus trikampiu? n=');
                  readln(n);
                  for i:=1 to (n-1) do begin
                                       a:=random(10)+1;
                                       write(f,a);
                                       b:=random(10)+1;
                                       write(f,' ',b);
                                       c:=random(10)+1;
                                       writeLn(f,' ',c);
                                       end;
                  a:=random(10)+1;
                  write(f,a);
                  b:=random(10)+1;
                  write(f,' ',b);
                  c:=random(10)+1;
                  write(f,' ',c);
                  close(f);
                  reset(f);
                  i:=0;
                  while not eof(f) do begin
                                      read(f,a);
                                      read(f,b);
                                      read(f,c);
                                      Inc(i);
                                      if tikr(a,b,c) then begin
                                                          writeln(i:2,' - ',plotas(a,b,c):5:2)
                                                          end
                                                     else writeln(i:2,' - tai ne trikampis!' );
                                      end;
                  writeln;
                  writeln('Trikampiu yra = ',i);
                  close(f);
                  readln;
                  end.


                Добавлено
                ExpandedWrap disabled
                  for i:=1 to n do begin
                                   a:=random(10)+1;
                                   write(f,a);
                                   b:=random(10)+1;
                                   write(f,' ',b);
                                   c:=random(10)+1;
                                   write(f,' ',c);
                                   writeln(f,'');  
                                   end;


                Подозреваю, что ошибка возникала из-за последнего writeln(f,'');
                Программа записывала в файл не n строк с цифрами, а n+1. Причем последняя строка была пустой.

                ExpandedWrap disabled
                  while not eof(f) do begin
                                      read(f,a);
                                      read(f,b);
                                      read(f,c);
                                      i:=i+1;
                                      if tikr(a,b,c) then begin
                                                          sk:=sk+1;
                                                          writeln(i:2,' - ',plotas(a,b,c):5:2)
                                                          end
                                                     else writeln(i:2,' - tai ne trikampis!' );
                  end;


                А потом ты считывал из файла не n строк, а n+1. Последняя строка была пустой. Вот и возникала ошибка.

                Добавлено
                Цитата Polinom2686 @
                Перевод сообщения ошибки (Google'вский)

                106 Invalid numeric format Reported when a non-numeric value is read from a text file, when a numeric value was expected.

                106 Неправильная числовой формат сообщается, когда не-числовые значения считываются из текстового файла, когда ожидается числовое значение.
                Сообщение отредактировано: Polinom2686 -
                  Спасибо, здорово помог. Я с этой программой 2ую неделю воюю. К сожалению мои познания Паскаля остались где-то в районе процедур и функций и чем дальше в лес тем толще партизаны
                    Да пожалуйста. ;)
                    1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                    0 пользователей:


                    Рейтинг@Mail.ru
                    [ Script execution time: 2,3248 ]   [ 14 queries used ]   [ Generated: 17.07.25, 00:30 GMT ]