Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Консультации по информатике


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты данной рассылки

Асмик Александровна
Статус: Академик
Рейтинг: 7509
∙ повысить рейтинг »
Абаянцев Юрий Леонидович aka Ayl
Статус: Профессионал
Рейтинг: 2380
∙ повысить рейтинг »
Роман Селиверстов
Статус: Профессор
Рейтинг: 1928
∙ повысить рейтинг »

/ НАУКА И ОБРАЗОВАНИЕ / Точные и естественные науки / Информатика

Номер выпуска:214
Дата выхода:26.03.2011, 10:00
Администратор рассылки:lamed (Профессор)
Подписчиков / экспертов:134 / 135
Вопросов / ответов:1 / 2

Вопрос № 182573: Здравствуйте, уважаемые эксперты! Прошу помочь мне исправить ошибки в контрольной "Основы программирования". Ошибки отмечены желтым. Контрольная ...



Вопрос № 182573:

Здравствуйте, уважаемые эксперты! Прошу помочь мне исправить ошибки в контрольной "Основы программирования". Ошибки отмечены желтым. Контрольная

Отправлен: 21.03.2011, 09:45
Вопрос задал: Посетитель - 360475 (Посетитель)
Всего ответов: 2
Страница вопроса »


Отвечает Абаянцев Юрий Леонидович aka Ayl (Профессионал) :
Здравствуйте, Посетитель - 360475!

Файл с ответами

Вот исправленный вариант.
В первом задании еще неправильно определялись радиусы вписанной и описанной окружностей:

Радиус вписанной окружности правильного треугольника со стороной D (rmin) равен .
Радиус описанной окружности (rmax) в 2 раза больше rmin и равен .

В третьем задании для определения соответствия условию использовано прямое вычисление квадратного корня с последующим возведением его в квадрат.

В четвертом задании ваш вариант рабочий, но судя по условию, в функцию нужно передавать исходный массив, поэтому введен тип и изменены параметры функции.

Ошибки по возможности были оставлены в комментариях.
Изменения выделены зеленым цветом.

Если есть вопросы или пожелания - пишите в мини-форум.

Ответ отправил: Абаянцев Юрий Леонидович aka Ayl (Профессионал)
Ответ отправлен: 21.03.2011, 11:43
Номер ответа: 266336
Россия, Санкт-Петербург
Организация: KORUS Consulting
ICQ # 5163321

Оценка ответа: 5

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 266336 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:


  • Отвечает Лысков Игорь Витальевич (Старший модератор) :
    Здравствуйте, Посетитель - 360475!
    1) Во-первых ошибка в определении радиуса описанной и вписанной окружностей
    Во-вторых, if, действительно, не нужно.
    Код:
    program a1;
    uses crt;
    var
    r2, d2:real;
    function IsIn(R,D:real):boolean;
    var rvpis,ropis:real;
    begin
    rvpis:=D/(2*sqrt(3));
    ropis:=D/sqrt(3);
    IsIn:= (R<=rvpis) or (R>=ropis);
    end;

    begin
    clrscr;
    write('Vvedite R i D:');
    readln(r2,d2);
    writeln(isIn(r2,d2));
    readkey;
    end.

    3) Надо было округлить до целого корень из чисел и сравнить квадрат корня с числом
    Код:
    program a1;
    uses crt;
    var i,k:integer;
    m:array[1..20] of integer;

    begin
    clrscr;
    randomize;
    for i:=1 to 20 do
    begin;
    m[i]:=random(100);
    write(m[i]:3);
    end;
    writeln;
    writeln;
    for i:=1 to 20 do
    begin;
    k:=trunc(sqrt(m[i]));
    if m[i] = k*k then writeln(m[i]:3);
    end;
    readkey;
    end.

    4)Вы забыли, что внутри функции нумерация индексов, в случае "открытых массивов", будет с 0
    Должен заметить, что данный вариант не всеми компиляторами поддерживается.
    Поэтому, более правильным вариантом следует считать вариант, предложенный Юрием Леони довичем.
    Код:
    program a1;
    uses crt;
    const MaxA=100;
    var A:array[1..MaxA] of byte;
    i:byte;

    function countNotZero(a:array of byte;n:byte):longint;
    var
    i:byte;
    count:longint;
    begin
    count:=0;
    for i:=0 to n-1 do
    if a[i] <>0 then inc (count);
    if count = 0 then count:=7777777;
    countNotZero:=count;
    end;

    begin
    clrscr;
    randomize;
    for i:=1 to MaxA do
    begin
    A[i]:=random(10);
    write(A[i]:4);
    end;
    writeln('Found ',countNotZero(A,10));;
    writeln('Done. Press any key...');
    readkey;
    end.

    5) Несколько намудрили с циклами...
    Посмотрите, как я сделал
    Код:
    program a1;
    uses crt;
    const n=8;
    type sq_matr=array[1..n,1..n] of integer;
    procedure output_matr(a:sq_matr); {процедура вывода матрицы}
    var i,j:byte;
    begin
    for i:=1 to n do
    begin
    writeln;
    for j:=1 to n do
    write(a[i,j]:5);
    end;
    end;
    procedure input_matr(var a:sq_matr); {процедура ввода матрицы}
    var i,j:byte;
    begin
    randomize;
    for i:=1 to n do
    for j:=1 to n do
    a[i,j ]:=random(5);
    end;
    procedure nums(a:sq_matr; var num:byte); {процедура подсчета строк с максимальным элементом}
    var i,j :byte;
    max:integer;
    begin
    num:=0;
    max:=a[1,1];
    for i:=1 to n do
    for j:=1 to n do
    if max<a[i,j] then
    max:=a[i,j]; {находим максимальный элемент}
    for i:=1 to n do
    for j:=1 to n do
    if a[i,j]=max then
    begin
    inc(num);
    break;
    end;
    end;


    var a:sq_matr;
    num:byte;
    begin
    input_matr(a);
    output_matr(a);
    writeln;
    nums(a,num);
    writeln;
    writeln(num);
    readkey;
    end.

    -----
    Люби своего ближнего, как самого себя

    Ответ отправил: Лысков Игорь Витальевич (Старший модератор)
    Ответ отправлен: 21.03.2011, 11:45
    Номер ответа: 266337
    Украина, Кировоград
    Тел.: +380957525051
    ICQ # 234137952
    Mail.ru-агент: igorlyskov@mail.ru

    Оценка ответа: 5

    Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 266337 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:


  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.



    В избранное