Нужна Помощь В Решении Задачи

Тема в разделе "Pascal and Delphi", создана пользователем hatpe, 4 июн 2012.

  1. hatpe

    hatpe Гость

    Даны массивы a1, ... , a7 ; b1, ... , b8 .
    Определить
    clip_image002.gif

    Добавлено: Помогите решить задачу.
     
  2. Senset

    Senset Well-Known Member

    Регистрация:
    11 сен 2006
    Сообщения:
    136
    Симпатии:
    0
    ну ё-моё, что ж так всё слабенько-то? Вы чем на парах занимаетесь?
    Код (Text):
    uses crt;
    var a:array[1..7] of real;
    b:array[1..8] of real;
    i:integer;

    function zi(i:integer):real;
    var result:real;
    k:integer;
    begin
    result:=0; //сейчас будем считать сумму bi
    for k:=1 to 8 do result:=result+b[k];
    //теперь множитель и последнее константное слагаемое:
    result:=result*a[5]+(a[i]+1)/a[i];
    zi:=result;
    end;

    begin
    clrscr;
    for i:=1 to 7 do
    begin
    write('a[',i,']=');
    read(a[i]);
    end;
    for i:=1 to 8 do
    begin
    write('b[',i,']=');
    read(b[i]);
    end;
    writeln('Input I=');
    readln(i);
    writeln('z[i]=z[',i,']=',zi(i):0:4);
    readkey;
    end.
    P.S. код для паскаля, для делфи (если не консоль):
    1) убрать очистки и ожидание ввода символов (т.е. переделать весь ввод и вывод)
    2) убрать result
    3) убрать zi=result
    4) нарисовать форму, покидать туда компонент, сделать батон --> в батон всё что в главной проге
     
  3. hatpe

    hatpe Гость

    Senset Когда инфа 1 раз в месяц, и ты этим не когда не занимался тяжко что то делать(((

    А можно ее сделать в таком виде
    Пример:

    program mass;
    var f, d, C: array[1..100] of real;
    a : real;
    i, n: integer;
    begin
    writeln ('vvedite poryadok massivov');
    readln (n);
    writeln ('vvedite massiv F');
    for i:=1 to n do read (f);
    writeln ('vvedite massiv D');
    for i:=1 to n do read (d);
    a:=0;
    for i:=1 to 8 do a:=a + f;
    for i:=1 to n do
    begin
    c:=((f-2.5)/d)*a;
    write (C:8:2)
    end;writeln;
    end.
     
  4. Senset

    Senset Well-Known Member

    Регистрация:
    11 сен 2006
    Сообщения:
    136
    Симпатии:
    0
    это вопрос?
     
  5. hatpe

    hatpe Гость

    Senset
    Можешь ее в таком виде сделать???
     
  6. Senset

    Senset Well-Known Member

    Регистрация:
    11 сен 2006
    Сообщения:
    136
    Симпатии:
    0
    Эх, интеллигенция...
    Конечно могу только че-то это как-то не смешно(((( ибо:
    1) полный код уже есть (может конечно где-то накосячил с синтаксисом)
    2) разница примера в вводе\выводе данных и нет отдельной функции
    3) сделать так, чтобы код стал похож на Ваш = не сложно потому, я уверен что Вы сами справитесь
    4) если не хотите подумать и подправить, ну т.е. по сути ничего не делать... то хотя бы почитайте 5 простых правил, которые находятся возле имени темы, которую создали
     
  7. hatpe

    hatpe Гость

    Senset ДА я с вами согласен.
    Вот по побывал переделывать можете посмотреть.

    program crt;
    var
    a:array[1..7] of real;
    b:array[1..8] of real;
    Z:array[1..7] of real;
    d:real;
    j,i,n:integer;
    begin
    writeln ('vvedite poryadok massivov');
    readln (n);
    writeln ('vvedite massiv a');
    for i:=1 to n do read (a);
    writeln ('vvedite massiv b');
    for j:=1 to n do read (b[j]);
    d:=0;
    for j:=1 to 8 do d:=d+ b[j];

    for i:=1 to n do
    begin
    Z:=d*a[5]+(a+1)/a;
    write (Z:0:4);
    end;writeln;
    end.
     
  8. Araneus

    Araneus Гость

    hatpe

    Не в обиду сказано, но не проще ли запустить в компиляторе и проверить код так, а не ждать, пока у кого-то найдеться время сделать работу за вас?
     
  9. Senset

    Senset Well-Known Member

    Регистрация:
    11 сен 2006
    Сообщения:
    136
    Симпатии:
    0
    Ну... чисто визуально да (т.е. я не компилил и не проверял 100% рабочесть кода), вроде имено так.
    Воспользуйтесь советом, а если ошибки с синтаксисом - то компилятор подскажет)
     
  10. hatpe

    hatpe Гость

    Araneus
    Я не мего спец в программировании...Можешь расскажешь , что такое компилятор?
     
  11. Senset

    Senset Well-Known Member

    Регистрация:
    11 сен 2006
    Сообщения:
    136
    Симпатии:
    0
    ну программу Вы в чем пишете? = в среде
    компилятор "перебивает" код написанный на языке в машинный код (если в кратце)
    1) Скачайте прикрепленный файл. Это Turbo Pascal 7.0 от Borland
    2) Запустите файл turbo.exe в папке bin (предварительно распаковав архив)
    3) наберите туда свой код
    4) откомпилируйте и запустите (делается Ctrl+F9)
    5) исправляйте ошибки, которые возникают на процессе компиляции
    6) когда откомпилится --> наслаждайтесь работой программы (если нет логических ошибок)
     

    Вложения:

    • TP.rar
      Размер файла:
      1,5 МБ
      Просмотров:
      2
  12. hatpe

    hatpe Гость

    Senset Собственно программа запускается, но я прошу помочь именно с логическими ошибками.
     
  13. Araneus

    Araneus Гость

    Если программа запускаеться и работает правильно, то ошибок нету.
    Если есть логические ошибки, то опиши их; расскажи, в чём они заключаються/проявляються. Тут же не экстрасенсы сидят))))

    П.С. В какой среде пишешь? В Turbo Pascal, как предложил товарищ SunSet, или другая?
     
  14. Senset

    Senset Well-Known Member

    Регистрация:
    11 сен 2006
    Сообщения:
    136
    Симпатии:
    0
    Senset =) устанавливать солнце пока не научился)
     
  15. Senset

    Senset Well-Known Member

    Регистрация:
    11 сен 2006
    Сообщения:
    136
    Симпатии:
    0
    Пример логической ошибки:
    Условие:
    F(x)=1, если x=0
    F(x)=0, если x=1
    Неверное решение 1:
    function f(x:real):real;
    begin
    if (x=0) then f:=1
    else f:=0;
    end;
    //В этом неверном решении логическая ошибка заключается в том, что f=0 при x любых x не равных нулю (т.е. либо область допустимых значений для x дискретна, состоит из целых чисел в интервале [0,1] - но в условии ничего про это не сказано, значит принимать x принадлежащем R необходимо в связи с отсутствием конкретики в условии) --> начальное условие нарушено (т.к. по умолчанию нигде и никогда переменные не задавались двумя числами, за исключением булевских
    Верное решение:
    function f(x:real):real;
    begin
    if (x=0) then f:=1
    else
    if (x=1) then f:=0;
    end;
    //Это абсолютно верное решение, даже при x принадлежащим R (все рациональные числа)

    Т.е. логические ошибки = не ловятся компилятором, но приводят к не правильной работе алгоритма (т.е. косякам)
    Чтобы убедиться в правильности выполнения алгоритма чаще всего студенты делают ручной расчет.
    Подставьте пару тройку конкретных значений... получите результаты, посчитанные вручную и программой... сравните их... Они одинаковы? Тогда всё верно... иначе где-то логическая ошибка.
     
  16. Araneus

    Araneus Гость

    Виноват... ))))
    Приношу извинения)))))
     
  17. Senset

    Senset Well-Known Member

    Регистрация:
    11 сен 2006
    Сообщения:
    136
    Симпатии:
    0
    Да ничего) бывает... тем более, что ошибка-то забавная)
     
Загрузка...

Поделиться этой страницей