• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Помогите начинающему программисту

Регистрация
31 Янв 2012
Сообщения
9
Реакции
1
Баллы
0
Помогите начинающему программисту

Привет всем.
Я хотел написать простую школьную программу на паскале и столкнулся с трудностями
Не могу описать переменные помогите пожалуйста

program etk;
var a:char;
s,d,f,c,t,ct:real;
sin,cos,tg,ctg:char;
begin
write ('a');
read (a);
write ('s');
read (s);
if a=sin then
if s=-s then write ('-x , pi+x , 2pik-x');
if s=+c then write ('pi/2-x , pi/2+x ,');
if s=+s then write ( 'pi-x , 2pik+x');
if s=-c then write ( '(3/2)pi-x , (3/2)pi+x ');
exit;
if a=cos then
if s=-s then write ('pi/2+x , (3/2)pi-x');
if s=+c then write ('-x , 2pik-x , 2pik+x');
if s=+s then write ( 'pi/2-x');
if s=-c then write ( 'pi-x , pi+x');
exit;
if a=tg then
if s=-t then write ('-x , pi-x , 2pik-x');
if s=+ct then write ('pi/2-x , (3/2)pi-x');
if s=+t then write ( 'pi+x , 2pik+x');
if s=-ct then write ( 'pi/2+x , (3/2)pi+x');
exit;
if a=ctg then
if s=-t then write ('pi/2+x , (3/2)pi+x');
if s=+ct then write ('pi+x , 2pik+x');
if s=+t then write ( 'pi/2-x , (3/2)pi-x');
if s=-ct then write ( '-x , pi-x , 2pik-x');
end.
 
Объясните суть того, что Вы собираетесь сделать. Не видно, чтобы вводилось что-то, кроме "а" и "с"... Тем не менее, над ними совершаются операции.
 
Объясните суть того, что Вы собираетесь сделать. Не видно, чтобы вводилось что-то, кроме "а" и "с"... Тем не менее, над ними совершаются операции.
Плюс к тому - еще куча ошибок. В частности, вводить идентификаторы, совпадающие с зарезервированными словами языка (sin, cos), не следует. Кроме того, абсолютно неправильно построены ветвления. Скорее всего, Вы подразумевали что-то вроде
if a=tg then
if s=-t then write ('-x , pi-x , 2pik-x') else
if s=+ct then write ('pi/2-x , (3/2)pi-x') else
if s=+t then write ( 'pi+x , 2pik+x') else
if s=-ct then write ( 'pi/2+x , (3/2)pi+x');
или так:
if a=tg then
begin
if s=-t then write ('-x , pi-x , 2pik-x');
if s=+ct then write ('pi/2-x , (3/2)pi-x');
if s=+t then write ( 'pi+x , 2pik+x');
if s=-ct then write ( 'pi/2+x , (3/2)pi+x');
end;
И еще там много ляпов.
Но, как справедливо отметил vasilych, начните с изложения постановки задачи.
 
Эта программа основана на таблице формул приведения (sin, cos, tg, ctg)
а – название первоначальной функции (sin, cos, tg, ctg)
s – значение преобразованной функции ( si – sin, c – cos и т.д.)
например cosX =sin(π/2-X) , а (π/2-X) – одно из значений которые должны выйти на экран.
Здесь небольшая ошибки
var a:char;
s:char; si,c,t,ct:real; sin,cos,tg,ctg:char;

if a=sin then
if s=-si then write ('-x , pi+x , 2pik-x') else
if s=+c then write ('pi/2-x , pi/2+x ,') else
if s=+si then write ( 'pi-x , 2pik+x') else
if s=-c then write ( '(3/2)pi-x , (3/2)pi+x ');
exit;
if a=cos then
if s=-si then write ('pi/2+x , (3/2)pi-x') else
if s=+c then write ('-x , 2pik-x , 2pik+x') else
if s=+si then write ( 'pi/2-x') else
if s=-c then write ( 'pi-x , pi+x');

В этой программе я не знаю к какому типу можно присвоить s:…; ведь значение s может быть как + так и -, и символьным .
 
Ну вот один вариантов решения. Надеюсь, что в тригонометрии не запутался.
Код:
Var
 ff,sf:Byte;
BEGIN
 Writeln('First function:');
 Writeln('               1:  Sin');
 Writeln('               2:  Cos');
 Writeln('               3:  Tg');
 Writeln('               4:  Ctg');
 Readln(ff);
 Writeln;
 Writeln('Second function:');
 If ff<3 then
  begin
   Writeln('               1:  Sin');
   Writeln('               2: -Sin');
   Writeln('               3:  Cos');
   Writeln('               4: -Cos');
  end else
  begin
   Writeln('               1:  Tg');
   Writeln('               2: -Tg');
   Writeln('               3:  Ctg');
   Writeln('               4: -Ctg');
  end;
 Readln(sf);
 Writeln;
 Case ff of
  1: case sf of
      1: Writeln('x+2*Pi*k; -x+Pi*(2*k+1)');
      2: Writeln('-x+2*Pi*k; x+Pi*(2*k+1)');
      3: Writeln('-x+(Pi/2)*(4k+1); x+(Pi/2)(4*k-1)');
      4: Writeln('x+(Pi/2)*(4k+1); -x+(Pi/2)*(4*k+3)');
     end;
  2: case sf of
      1: Writeln('-x+(Pi/2)*(4k+1); x+(Pi/2)*(4*k+1)');
      2: Writeln('-x+(Pi/2)*(4k+3); x+(Pi/2)*(4*k-1)');
      3: Writeln('x+2*Pi*k; -x+2*Pi*k');
      4: Writeln('-x+Pi*(2k+1); x+Pi*(2*k+1)');
     end;
  3: case sf of
      1: Writeln('x+Pi*k');
      2: Writeln('-x+Pi*k');
      3: Writeln('-x+(Pi/2)*(2*k+1)');
      4: Writeln('x+(Pi/2)*(2*k-1)');
     end;
  4: case sf of
      1: Writeln('-x+(Pi/2)*(2*k+1)');
      2: Writeln('x+(Pi/2)*(2*k-1)');
      3: Writeln('x+Pi*k');
      4: Writeln('-x+Pi*k');
     end;
 End;
 Readln
END.
 
Назад
Сверху