Форум
» Назад на решение задач по физике и термеху
Регистрация | Профиль | Войти | Забытый пароль | Присутствующие | Справка | Поиск

» Добро пожаловать, Гость: Войти | Регистрация
    Форум
    Информационные технологии
        Решение задач на Pascal. Форум 2
Отметить все сообщения как прочитанные   [ Помощь ]
» Добро пожаловать на форум "Информационные технологии" «

Переход к теме
<< Назад Вперед >>
Несколько страниц [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 ]
Модераторы: paradise, KMA
  

Zheka



Новичок

И снова та же проблема... В этой программе тоже выдаёт ошибку "деление на ноль" никак не могу найти причину.


label 1, 2, 3;
var i,n,P:integer; Sg:real; a:array[1..10] of integer;
begin
1:for i:=1 to 10 do
read(a[ i ]);
if a[1]<0 then
begin
writeln('pervoe chislo ne polozhitelnoe');
goto 1;
end;
for i:=2 to 10 do
if a[ i ]<0 then
begin
i:=n;
goto 2;
end;
writeln('v posledovatelnosti net otricatelnogo chisla');
goto 3;
2:P:=1;
for i:=1 to n-1 do
P:=P*a[ i ];
Sg:=exp((n-1)/ln(P));
writeln('Sg=',Sg);
3:end.

В этой задаче нужно найти среднее геометрическое последовательности чисел.


(Сообщение отредактировал Zheka 28 окт. 2007 23:09)

Всего сообщений: 19 | Присоединился: октябрь 2007 | Отправлено: 28 окт. 2007 23:04 | IP
Vetas


Новичок

Точно Жека и у меня такая фигня не пойму в чем причин (((!!!

Всего сообщений: 5 | Присоединился: октябрь 2007 | Отправлено: 29 окт. 2007 18:13 | IP
KMA



Долгожитель

Я так понял этикет у нас не в моде? Спасибо говорить никто не будет, точно так же работают у них исправленные программы или нет. Ладно... решайте все сами.

Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 29 окт. 2007 20:36 | IP
Vetas


Новичок

Извини пожалуйста я не специально. Спасибо тебе огромнейшие,
спас ты меня конкретно. Еше раз извини не хотел тебя обидеть.

Всего сообщений: 5 | Присоединился: октябрь 2007 | Отправлено: 29 окт. 2007 23:05 | IP
Zheka



Новичок

to KMA: Спасибо большое за прошлую программу, исправил тип на word и всё заработало.

Всего сообщений: 19 | Присоединился: октябрь 2007 | Отправлено: 30 окт. 2007 0:08 | IP
KMA



Долгожитель


В этой задаче нужно найти среднее геометрическое последовательности чисел.

Я выделил цветом какие у вас ошибки. Прошу заметить, что в последовательности так же не желателен 0, т. к. ваша задача сразу падает в трам-тарарым. Вообще с этими вещами надо быть аккуратнее.  
Code Sample:
 
label 1, 2, 3;
var
  i, n, P:integer;
  Sg:real;
  a:array[1..10] of integer;
BEGIN
     1: for i:=1 to 10 do
           read(a[ i ]);
         if a[1]<0
            then
             begin
              writeln('pervoe chislo ne polozhitelnoe');
              goto 1;
             end;
 
      for i:=2 to 10 do
       if a[ i ]<0 then
         begin
          { i:=n; здесь ошибка}
           n:=i
           goto 2;
         end;
     writeln('v posledovatelnosti net otricatelnogo chisla');
     goto 3;
     2: P:=1;
         for i:=1 to n-1 do
          {P:=P*a[ i ];}
          if a[ i ]= 0
             then
               begin
                 writeLn ('Sg=0')
                 goto 3;
               end;  
        Sg:=exp((n-1)/ln(P)); {проработайте ситуацию, если P=1}
     writeln('Sg=',Sg);
     3:
END.



Еще возможные ошибка из-за привидения типов. Попробуйте заменить все на real, a лучше на extended, для P, возможно тогда проблема решиться. И, пожалуйста, отписывайтесь по поводу ваших успехов.

Я не могу вам ничем, помочь с конкретными воплощениями, т. к. я работаю под Linux и компилятор у меня стоит не Борландовский, а lazarus + freePascal.

Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 30 окт. 2007 16:33 | IP
KMA



Долгожитель


програмка простейшая,дан массив из 10 элементов
найти мин и мах поменять их местами.



Все же написала. Только чуть-чуть осталось. В общем, вот код:

Code Sample:
 
var a: array [1..10] of real;
     aP: real;
     i, iMin, iMax: integer;
BEGIN
    writeLn ('Введите через пробел 10 элементов массива');
    for i:=1 to 10 do
      read(a[ i ];
    {выведем заданный массив}
    for i:=1 to n do
     write (a[ i ], ' ');
    iMax:=1;
    iMin:=1;
    for i:=2 to 10 do
     begin
       if a[ iMin ] > a[ i ]
          then iMin:=i;
       if a[ iMax ] < a[ i ]
         then iMax:=i;
     end;
   {теперь мы знаем номера максимального и минимального, обменяем их местами}
   aP:=a[ iMin];
   a[ iMin ]:=a[ iMax ];
   a[ iMax ]:= aP;
   {выведем массив}
   for i:=1 to n do
     write (a[ i ], ' ');
END.



Вот и вся твоя задача

Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 30 окт. 2007 16:44 | IP
Zheka



Новичок

Исправил первую ошибку и программа заработала, но видимо неправильно, т.к. ответы которые она выдает не соответствуют моим вычислениям.
Да, действительно в последовательности не должно быть нуля, а произведение не должно выйти равным 1, т.к. ln1=0. И мне не совсем понятно, где у меня ошибка в строке P:=P*a[ i ]? Может из-за этого у меня возникают проблемы?

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

Вывести на печать номера точек,  лежащих в круге радиусом r. Координаты точек     заданы    массивами    (x[1],x[2],...,x[100]),
(y[1],y[2],...,y[100]).

program Rgr2;
var x:array [1..100] of integer;y:array [1..100] of integer;
      r,i,j:integer;
 begin
 read(r);
   for i:=1 to 100 do
   for j:=1 to 100 do
    if sqr(i)+sqr(j)<=sqr(r) then writeln('x=',i,'y=',j);
end.

Программа работает, выводит правильные точки, но препод вообще не верит, что она работает, он говорит, что у меня нет массивов x и y, и что я их в программе не использую
Возможно я чего-то не понимаю???  У меня даже нет никаких мыслей на этот счет.




Всего сообщений: 19 | Присоединился: октябрь 2007 | Отправлено: 31 окт. 2007 2:34 | IP
Guest



Новичок

Требуется составить программу на Паскале следующего содержания: "Дано 10 комплексных чисел. Из них найти минимальное по модулю".
Подскажите, please, как это сделать. Может, кто-то сталкивался с такими задачами?

Всего сообщений: Нет | Присоединился: Never | Отправлено: 31 окт. 2007 18:59 | IP
KMA



Долгожитель

Zheka, в общем то суть твоей задачи проста, надо только немного подумать над самой формулировкой. Во первых с нулем, мы уже все решили, а код будет такой:

Code Sample:
 
for i:=1 to n-1 do
          {исправленный вариант}
          if a[ i ]= 0
             then  
               begin
                 writeLn ('Sg=0')
                 goto 3;
               end
            else P:=P*a[ i ];



Это во первых, во вторых, уточните формулу среднего геометрического. В третьих, вы сами то понимаете, что значит слово ПОСЛЕДОВАТЕЛЬНОСТЬ? Она подразумевает собой логический ряд чисел! Нужна ли вам эта случайность? Тем более зная как ведет себя тот же random склонен предполагать, что по большей части основной алгоритм программе просто не удается реализовать. Попробуйте по вводить ручками, может поможет в ваших расчетах.


Вывести на печать номера точек,  лежащих в круге радиусом r. Координаты точек     заданы    массивами    (x[1],x[2],...,x[100]),
(y[1],y[2],...,y[100]).



Собственно, если ты задал точки заранее (точнее при помощи рандома или ручками, или константно), а в теле ты написал только обработчик (основной), то тогда программа решена верно, и то что говорит информатик не есть правильно, тогда он у вас тупой как валенок, если не видет массива. Если начнет возмущаться, тыкни ему пальцевм в раздел объявления переменных и спроси нагло: "А что это тогда такое?" Уверен, должно прокатить. =)

Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 31 окт. 2007 19:34 | IP

Эта тема закрыта, новые ответы не принимаются

Переход к теме
<< Назад Вперед >>
Несколько страниц [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 ]

Форум работает на скрипте © Ikonboard.com